When creating a document in Laserfiche using RA, I sometime get the error Laserfiche.RepositoryAccess.LockedObjectException: The operation cannot complete because an object is locked. [9045]
Why is this appening and how can I fix this?
08-06-2015 04:30:17 : CopyToLaserfiche: (PO0030315500.txt) Laserfiche.RepositoryAccess.LockedObjectException: The operation cannot complete because an object is locked. [9045]
at Laserfiche.RepositoryAccess.Entry.MakeDocFolder(String path, String volumeName, EntryType entryType, String lockToken, EntryNameOption options, Session session)
at Laserfiche.RepositoryAccess.Document.Create(String documentPath, String volumeName, EntryNameOption options, Session session)
at SynchroLaserfiche.LfService.CopyToLaserfiche(Session lfSession, FileInfo fileToCopy)
08-06-2015 04:30:49 : CopyToLaserfiche: (PO0030315500.tif) Laserfiche.RepositoryAccess.LockedObjectException: The operation cannot complete because an object is locked. [9045]
at Laserfiche.RepositoryAccess.EntryLock.LockInternal(HttpUrl url, LockType type, Dictionary`2 additionalHeaders, String etag)
at Laserfiche.RepositoryAccess.EntryLock.Lock(LockType type)
at Laserfiche.RepositoryAccess.EntryInfo.Lock(LockType type)
at Laserfiche.RepositoryAccess.DocumentInfo.Lock(LockType type)
at SynchroLaserfiche.LfService.CopyToLaserfiche(Session lfSession, FileInfo fileToCopy)
08-06-2015 04:30:59 : CopyToLaserfiche: (PO0030315500.txt) Laserfiche.RepositoryAccess.LockedObjectException: The operation cannot complete because an object is locked. [9045]
at Laserfiche.RepositoryAccess.Entry.MakeDocFolder(String path, String volumeName, EntryType entryType, String lockToken, EntryNameOption options, Session session)
at Laserfiche.RepositoryAccess.Document.Create(String documentPath, String volumeName, EntryNameOption options, Session session)
at SynchroLaserfiche.LfService.CopyToLaserfiche(Session lfSession, FileInfo fileToCopy)
08-06-2015 04:34:37 : WaitForFile: Le fichier C:\importationLF\PO0030311900.txt est verrouillé.
08-06-2015 04:34:55 : WaitForFile: Le fichier C:\importationLF\POX20150608043445080.nul est verrouillé.
08-06-2015 04:34:56 : WaitForFile: Le fichier C:\importationLF\POX20150608043445080.txt est verrouillé.
08-06-2015 04:39:13 : CopyToLaserfiche: (PO0030310901.tif) Laserfiche.RepositoryAccess.LaserficheRepositoryException: Not enough storage is available to complete this operation [-2147024882]
at Laserfiche.RepositoryAccess.Entry.MakeDocFolder(String path, String volumeName, EntryType entryType, String lockToken, EntryNameOption options, Session session)
at Laserfiche.RepositoryAccess.Document.Create(String documentPath, String volumeName, EntryNameOption options, Session session)
at SynchroLaserfiche.LfService.CopyToLaserfiche(Session lfSession, FileInfo fileToCopy)
08-06-2015 04:39:23 : CopyToLaserfiche: (PO0030310901.txt) Laserfiche.RepositoryAccess.LockedObjectException: The operation cannot complete because an object is locked. [9045]
at Laserfiche.RepositoryAccess.Entry.MakeDocFolder(String path, String volumeName, EntryType entryType, String lockToken, EntryNameOption options, Session session)
at Laserfiche.RepositoryAccess.Document.Create(String documentPath, String volumeName, EntryNameOption options, Session session)
at SynchroLaserfiche.LfService.CopyToLaserfiche(Session lfSession, FileInfo fileToCopy)
08-06-2015 04:40:34 : CopyToLaserfiche: (PO0030311200.tif) Laserfiche.RepositoryAccess.LaserficheRepositoryException: Not enough storage is available to complete this operation [-2147024882]
at Laserfiche.RepositoryAccess.Entry.MakeDocFolder(String path, String volumeName, EntryType entryType, String lockToken, EntryNameOption options, Session session)
at Laserfiche.RepositoryAccess.Document.Create(String documentPath, String volumeName, EntryNameOption options, Session session)
at SynchroLaserfiche.LfService.CopyToLaserfiche(Session lfSession, FileInfo fileToCopy)
Public Sub CopyToLaserfiche(lfSession As Session, fileToCopy As FileInfo) Dim lfPath As String, extension As String, docInfo As DocumentInfo Try extension = fileToCopy.Extension.ToLower If extension = ".txt" Then lfPath = _CfgLfDestination + "txt\" Else lfPath = _CfgLfDestination End If ' Créer le document dans Laserfiche et le verrouiller Dim newDocId As Integer = Document.Create(lfPath + fileToCopy.Name, "DEFAULT", EntryNameOption.AutoRename, lfSession) docInfo = Document.GetDocumentInfo(newDocId, lfSession) docInfo.Lock(LockType.Exclusive) ' Importer le fichier dans le document Laserfiche Dim docImporter As New DocumentImporter docImporter.Document = docInfo ' Inner Try/Catch en cas de problème d'importation (exemple: fichier corrompu) Try If File.Exists(fileToCopy.FullName) Then If extension = ".txt" Then docImporter.ImportText(fileToCopy.FullName) ElseIf extension = ".tif" Or extension = ".jpg" Then docImporter.OcrImages = _CfgOcrImage docImporter.ImportImages(fileToCopy.FullName) ElseIf extension <> ".db" Then docImporter.ImportEdoc(GetMimeType(fileToCopy), fileToCopy.FullName) End If Else Throw New Exception("Le fichier est inexistant ou introuvable.") End If ' Flagger le fichier pour la suppression _FilesToDelete.TryAdd(fileToCopy.FullName) docInfo.Unlock() Catch importEx As Exception WriteLog("CopyToLaserfiche: Erreur d'importation du fichier " + fileToCopy.Name + " Exception: " & importEx.ToString) ' Effacer le document Laserfiche docInfo.Delete() docInfo.Save() docInfo.Unlock() docInfo.Dispose() ' S'il existe, déplacer le fichier dans le répertoire des fichiers corrompus If File.Exists(fileToCopy.FullName) Then File.Move(fileToCopy.FullName, _CfgCorruptedFilesDirectory + fileToCopy.Name) End If End Try Catch ex As Exception WriteLog("CopyToLaserfiche: (" + fileToCopy.Name + ") " & ex.ToString) Finally If docInfo IsNot Nothing Then docInfo.Unlock() End If End Try End Sub