From: Matthias Sohn Date: Fri, 8 Jun 2018 07:50:39 +0000 (+0200) Subject: Simplify locking of FileRepository's index snapshot X-Git-Tag: v5.0.0.201806131550-r~15 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=1cb8c5d7fe2d88c127bafcff3800b91e5ab5eda4;p=jgit.git Simplify locking of FileRepository's index snapshot synchronize on simple Object monitor instead of using ReentrantLock Change-Id: I897020ab35786336b51b0fef76ea6071aff8aefa Signed-off-by: Matthias Sohn --- diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java index d4056871b0..d02888a872 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/file/FileRepository.java @@ -56,7 +56,6 @@ import java.util.HashSet; import java.util.Locale; import java.util.Objects; import java.util.Set; -import java.util.concurrent.locks.ReentrantLock; import org.eclipse.jgit.annotations.Nullable; import org.eclipse.jgit.api.errors.JGitInternalException; @@ -125,7 +124,7 @@ public class FileRepository extends Repository { private final RefDatabase refs; private final ObjectDirectory objectDatabase; - private final ReentrantLock snapshotLock = new ReentrantLock(); + private final Object snapshotLock = new Object(); // protected by snapshotLock private FileSnapshot snapshot; @@ -553,8 +552,7 @@ public class FileRepository extends Repository { } File indexFile = getIndexFile(); - snapshotLock.lock(); - try { + synchronized (snapshotLock) { if (snapshot == null) { snapshot = FileSnapshot.save(indexFile); return; @@ -562,8 +560,6 @@ public class FileRepository extends Repository { if (!snapshot.isModified(indexFile)) { return; } - } finally { - snapshotLock.unlock(); } notifyIndexChanged(false); } @@ -571,11 +567,8 @@ public class FileRepository extends Repository { /** {@inheritDoc} */ @Override public void notifyIndexChanged(boolean internal) { - snapshotLock.lock(); - try { + synchronized (snapshotLock) { snapshot = FileSnapshot.save(getIndexFile()); - } finally { - snapshotLock.unlock(); } fireEvent(new IndexChangedEvent(internal)); }