Git Plugin org.eclipse.jgit.errors.LockFailedException - No Updates Logged to Repository

Problem

Suddenly, the Datameer Git plug-in stops committing activities to the configured Git Repository. Within the <INSTALLDIR>/logs/conductor.log file, the following exception is observed: 

[anonymous] ERROR [2018-01-01 00:00:00.000] [datameer-event-bus-1] (GitVersioningRecorder.java:207) - Exception caught during execution of add command

org.eclipse.jgit.api.errors.JGitInternalException: Exception caught during execution of add command

        at org.eclipse.jgit.api.AddCommand.call(AddCommand.java:211)

        at datameer.plugin.versioning.git.GitVersioning$2.apply(GitVersioning.java:97)

        at datameer.plugin.versioning.git.GitVersioning$2.apply(GitVersioning.java:90)

        at datameer.dap.sdk.util.Success.flatMap(Success.java:43)

        at datameer.plugin.versioning.git.GitVersioning.writeWorkbookToWorkTree(GitVersioning.java:629)

        at datameer.plugin.versioning.git.GitVersioning.commitWorkbookChanges(GitVersioning.java:191)

        at datameer.plugin.versioning.git.GitVersioningRecorder.recordWorkbookChanges(GitVersioningRecorder.java:242)

        at datameer.plugin.versioning.git.GitVersioningRecorder$6.apply(GitVersioningRecorder.java:174)

        at datameer.plugin.versioning.git.GitVersioningRecorder$6.apply(GitVersioningRecorder.java:171)

        at datameer.dap.sdk.util.Success.flatMap(Success.java:43)

        at datameer.plugin.versioning.git.GitVersioningRecorder.record(GitVersioningRecorder.java:674)

        at sun.reflect.GeneratedMethodAccessor456.invoke(Unknown Source)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.lang.reflect.Method.invoke(Method.java:606)

        at datameer.com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74)

        at datameer.com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47)

        at datameer.com.google.common.eventbus.EventBus.dispatch(EventBus.java:322)

        at datameer.com.google.common.eventbus.AsyncEventBus.access$001(AsyncEventBus.java:34)

        at datameer.com.google.common.eventbus.AsyncEventBus$1.run(AsyncEventBus.java:117)

        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

        at java.lang.Thread.run(Thread.java:745)

Caused by: org.eclipse.jgit.errors.LockFailedException: Cannot lock /opt/datameer/current/versioning/.git/index

        at org.eclipse.jgit.dircache.DirCache.lock(DirCache.java:224)

        at org.eclipse.jgit.dircache.DirCache.lock(DirCache.java:301)

        at org.eclipse.jgit.dircache.DirCache.lock(DirCache.java:267)

        at org.eclipse.jgit.lib.Repository.lockDirCache(Repository.java:1053)

        at org.eclipse.jgit.api.AddCommand.call(AddCommand.java:142)

        ... 21 more

Cause 

The Git repository on the Datameer Server is locked. Specifically, the <REPOSITORY>/.git/index.lock file is stale. This file is locking the Git repository from any further edits. 

During normal operation, the <REPOSITORY>/.git/index.lock file should be created before an edit is made and then deleted immediately following the edit. If this file exists for more than 1 minute, it is likely that the lock was not released as expected.

Solution

To work-around this issue, release the Git repository lock by removing the <REPOSITORY>/.git/index.lock file from the local file system. The future commits to the Git repository will resume as expected.

If this issue occurs, it is recommended to capture the <INSTALLDIR>/logs/conductor.log* files from the environment and to contact Datameer Support for further information.