mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
refactoring [git]: Add tracing for git command lock acquisition
GitOrigin-RevId: a820c8c5d1454a485965697dc410baea1c7a8dd3
This commit is contained in:
committed by
intellij-monorepo-bot
parent
d7842d780c
commit
e1e73d85dd
@@ -424,15 +424,34 @@ public abstract class GitImplBase implements Git {
|
||||
ReadWriteLock executionLock = GitVcs.getInstance(project).getCommandLock();
|
||||
Lock lock = executionLock.writeLock();
|
||||
|
||||
long startTime = System.currentTimeMillis();
|
||||
if (LOG.isTraceEnabled()) {
|
||||
LOG.trace("Acquiring lock for command '%s'".formatted(handler));
|
||||
}
|
||||
ProgressIndicatorUtils.awaitWithCheckCanceled(lock);
|
||||
long acquisitionTime = System.currentTimeMillis() - startTime;
|
||||
if (LOG.isTraceEnabled()) {
|
||||
LOG.trace(new Throwable(getLockAcquiredMessage(handler, acquisitionTime)));
|
||||
}
|
||||
else if (LOG.isDebugEnabled()) {
|
||||
LOG.debug(getLockAcquiredMessage(handler, acquisitionTime));
|
||||
}
|
||||
|
||||
return new AccessToken() {
|
||||
@Override
|
||||
public void finish() {
|
||||
lock.unlock();
|
||||
if (LOG.isTraceEnabled()) {
|
||||
LOG.trace("Lock released by '%s'".formatted(handler));
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private static @NotNull String getLockAcquiredMessage(@NotNull GitLineHandler handler, long acquisitionTime) {
|
||||
return "Acquired lock for command '%s' in %dms".formatted(handler, acquisitionTime);
|
||||
}
|
||||
|
||||
private static boolean shouldTakeWriteLock(@NotNull GitLineHandler handler, boolean canSuppressOptionalLocks) {
|
||||
LockingPolicy lockingPolicy = handler.getCommand().lockingPolicy();
|
||||
return lockingPolicy != READ &&
|
||||
|
||||
Reference in New Issue
Block a user