microsoft / azure-devops-intellij

IntelliJ IDEA plug-in for Visual Studio Team Services and Team Foundation Server (TFS)
MIT License
149 stars 95 forks source link

LocalMetadata table cannot be loaded because exclusive access could not be acquired #526

Open johmara opened 1 year ago

johmara commented 1 year ago

Hello, every time I open Rider with a project from Azure DevOps, I get the following breaking issue.

java.lang.RuntimeException: java.util.concurrent.ExecutionException: com.jetbrains.rd.util.reactive.RdFault: TF400030: The local metadata table could not be loaded because exclusive access could not be acquired.
Often that happens because of a background process running in the system that scans files on disk, e.g. anti-virus protection program. Please exclude the local folders mapped in the TFS workspace from scanning.  , reason: com.microsoft.tfs.core.clients.versioncontrol.localworkspace.LocalMetadataTableLock$LocalMetadataTableTimeoutException: TF400030: The local metadata table could not be loaded because exclusive access could not be acquired.
Often that happens because of a background process running in the system that scans files on disk, e.g. anti-virus protection program. Please exclude the local folders mapped in the TFS workspace from scanning.  
    at com.microsoft.tfs.core.clients.versioncontrol.localworkspace.LocalMetadataTableLock.acquire(LocalMetadataTableLock.java:84)
    at com.microsoft.tfs.core.clients.versioncontrol.localworkspace.LocalMetadataTableLock.<init>(LocalMetadataTableLock.java:42)
    at com.microsoft.tfs.core.clients.versioncontrol.localworkspace.LocalMetadataTableLock.<init>(LocalMetadataTableLock.java:31)
    at com.microsoft.tfs.core.clients.versioncontrol.internal.localworkspace.WorkspaceLock.<init>(WorkspaceLock.java:58)
    at com.microsoft.tfs.core.clients.versioncontrol.internal.localworkspace.LocalWorkspaceTransaction.acquireTables(LocalWorkspaceTransaction.java:515)
    at com.microsoft.tfs.core.clients.versioncontrol.internal.localworkspace.LocalWorkspaceTransaction.execute(LocalWorkspaceTransaction.java:342)
    at com.microsoft.tfs.core.clients.versioncontrol.internal.localworkspace.LocalDataAccessLayer.queryWorkingFolders(LocalDataAccessLayer.java:3706)
    at com.microsoft.tfs.core.clients.versioncontrol.soapextensions.Workspace.refreshMappingsIfNeeded(Workspace.java:6910)
    at com.microsoft.tfs.core.clients.versioncontrol.soapextensions.Workspace.getFolders(Workspace.java:3247)
    at com.microsoft.tfs.TfsClient$Companion.loadMappings(TfsClient.kt:59)
    at com.microsoft.tfs.TfsClient$Companion.getDetailedWorkspaceInfo(TfsClient.kt:89)
    at com.microsoft.tfs.MainKt$initializeModel$3.invoke(Main.kt:100)
    at com.microsoft.tfs.MainKt$initializeModel$3.invoke(Main.kt)
    at com.jetbrains.rd.framework.impl.RdEndpoint$set$2.invoke(RdTask.kt:203)
    at com.jetbrains.rd.framework.impl.RdEndpoint$set$2.invoke(RdTask.kt:176)
    at com.jetbrains.rd.framework.impl.RdEndpoint.onWireReceived(RdTask.kt:226)
    at com.jetbrains.rd.framework.MessageBroker$invoke$1.invoke(MessageBroker.kt:31)
    at com.jetbrains.rd.framework.MessageBroker$invoke$1.invoke(MessageBroker.kt:14)
    at com.jetbrains.rd.util.threading.SingleThreadSchedulerBase$queue$1.run(SingleThreadScheduler.kt:41)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
    at com.microsoft.alm.plugin.idea.tfvc.core.TfvcClient.getDetailedWorkspaceInfo(TfvcClient.java:361)
    at com.microsoft.alm.plugin.idea.tfvc.core.TfvcWorkspaceLocator.getPartialWorkspace(TfvcWorkspaceLocator.java:72)
    at com.microsoft.alm.plugin.idea.tfvc.core.TfvcWorkspaceLocator.getPartialWorkspace(TfvcWorkspaceLocator.java:90)
    at com.microsoft.alm.plugin.idea.tfvc.core.tfs.TFVCUtil.getMappingsFromWorkspace(TFVCUtil.java:111)
    at com.microsoft.alm.plugin.idea.tfvc.core.tfs.TFVCUtil.filterValidTFVCPaths(TFVCUtil.java:78)
    at com.microsoft.alm.plugin.idea.tfvc.core.TFSChangeProvider.getChanges(TFSChangeProvider.java:95)
    at com.intellij.openapi.vcs.changes.ChangeListManagerImpl.actualUpdate(ChangeListManagerImpl.java:696)
    at com.intellij.openapi.vcs.changes.ChangeListManagerImpl.iterateScopes(ChangeListManagerImpl.java:596)
    at com.intellij.openapi.vcs.changes.ChangeListManagerImpl.lambda$updateImmediately$11(ChangeListManagerImpl.java:502)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:608)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:683)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:639)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:607)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
    at com.intellij.openapi.vcs.changes.ChangeListManagerImpl.lambda$updateImmediately$14(ChangeListManagerImpl.java:501)
    at com.intellij.openapi.progress.util.BackgroundTaskUtil.lambda$runUnderDisposeAwareIndicator$12(BackgroundTaskUtil.java:336)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:188)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:608)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:683)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:639)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:607)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:60)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:175)
    at com.intellij.openapi.progress.util.BackgroundTaskUtil.runUnderDisposeAwareIndicator(BackgroundTaskUtil.java:365)
    at com.intellij.openapi.progress.util.BackgroundTaskUtil.runUnderDisposeAwareIndicator(BackgroundTaskUtil.java:335)
    at com.intellij.openapi.progress.util.BackgroundTaskUtil.runUnderDisposeAwareIndicator(BackgroundTaskUtil.java:327)
    at com.intellij.openapi.vcs.changes.ChangeListManagerImpl.updateImmediately(ChangeListManagerImpl.java:455)
    at com.intellij.openapi.vcs.changes.UpdateRequestsQueue$MyRunnable.run(UpdateRequestsQueue.java:212)
    at com.intellij.openapi.vcs.changes.ChangeListManagerImpl$MyLoggingRunnable.run(ChangeListManagerImpl.java:1699)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at com.intellij.util.concurrency.SchedulingWrapper$MyScheduledFutureTask.run(SchedulingWrapper.java:223)
    at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:241)
    at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:31)
    at com.intellij.util.concurrency.BoundedTaskExecutor$1.execute(BoundedTaskExecutor.java:214)
    at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:212)
    at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:203)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:702)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:699)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:699)
    at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.util.concurrent.ExecutionException: com.jetbrains.rd.util.reactive.RdFault: TF400030: The local metadata table could not be loaded because exclusive access could not be acquired.
Often that happens because of a background process running in the system that scans files on disk, e.g. anti-virus protection program. Please exclude the local folders mapped in the TFS workspace from scanning.  , reason: com.microsoft.tfs.core.clients.versioncontrol.localworkspace.LocalMetadataTableLock$LocalMetadataTableTimeoutException: TF400030: The local metadata table could not be loaded because exclusive access could not be acquired.
Often that happens because of a background process running in the system that scans files on disk, e.g. anti-virus protection program. Please exclude the local folders mapped in the TFS workspace from scanning.  
    at com.microsoft.tfs.core.clients.versioncontrol.localworkspace.LocalMetadataTableLock.acquire(LocalMetadataTableLock.java:84)
    at com.microsoft.tfs.core.clients.versioncontrol.localworkspace.LocalMetadataTableLock.<init>(LocalMetadataTableLock.java:42)
    at com.microsoft.tfs.core.clients.versioncontrol.localworkspace.LocalMetadataTableLock.<init>(LocalMetadataTableLock.java:31)
    at com.microsoft.tfs.core.clients.versioncontrol.internal.localworkspace.WorkspaceLock.<init>(WorkspaceLock.java:58)
    at com.microsoft.tfs.core.clients.versioncontrol.internal.localworkspace.LocalWorkspaceTransaction.acquireTables(LocalWorkspaceTransaction.java:515)
    at com.microsoft.tfs.core.clients.versioncontrol.internal.localworkspace.LocalWorkspaceTransaction.execute(LocalWorkspaceTransaction.java:342)
    at com.microsoft.tfs.core.clients.versioncontrol.internal.localworkspace.LocalDataAccessLayer.queryWorkingFolders(LocalDataAccessLayer.java:3706)
    at com.microsoft.tfs.core.clients.versioncontrol.soapextensions.Workspace.refreshMappingsIfNeeded(Workspace.java:6910)
    at com.microsoft.tfs.core.clients.versioncontrol.soapextensions.Workspace.getFolders(Workspace.java:3247)
    at com.microsoft.tfs.TfsClient$Companion.loadMappings(TfsClient.kt:59)
    at com.microsoft.tfs.TfsClient$Companion.getDetailedWorkspaceInfo(TfsClient.kt:89)
    at com.microsoft.tfs.MainKt$initializeModel$3.invoke(Main.kt:100)
    at com.microsoft.tfs.MainKt$initializeModel$3.invoke(Main.kt)
    at com.jetbrains.rd.framework.impl.RdEndpoint$set$2.invoke(RdTask.kt:203)
    at com.jetbrains.rd.framework.impl.RdEndpoint$set$2.invoke(RdTask.kt:176)
    at com.jetbrains.rd.framework.impl.RdEndpoint.onWireReceived(RdTask.kt:226)
    at com.jetbrains.rd.framework.MessageBroker$invoke$1.invoke(MessageBroker.kt:31)
    at com.jetbrains.rd.framework.MessageBroker$invoke$1.invoke(MessageBroker.kt:14)
    at com.jetbrains.rd.util.threading.SingleThreadSchedulerBase$queue$1.run(SingleThreadScheduler.kt:41)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
    at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396)
    at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073)
    at com.microsoft.alm.plugin.idea.tfvc.core.TfvcClient.getDetailedWorkspaceInfo(TfvcClient.java:359)
    ... 43 more
Caused by: com.jetbrains.rd.util.reactive.RdFault: TF400030: The local metadata table could not be loaded because exclusive access could not be acquired.
Often that happens because of a background process running in the system that scans files on disk, e.g. anti-virus protection program. Please exclude the local folders mapped in the TFS workspace from scanning.  , reason: com.microsoft.tfs.core.clients.versioncontrol.localworkspace.LocalMetadataTableLock$LocalMetadataTableTimeoutException: TF400030: The local metadata table could not be loaded because exclusive access could not be acquired.
Often that happens because of a background process running in the system that scans files on disk, e.g. anti-virus protection program. Please exclude the local folders mapped in the TFS workspace from scanning.  
    at com.microsoft.tfs.core.clients.versioncontrol.localworkspace.LocalMetadataTableLock.acquire(LocalMetadataTableLock.java:84)
    at com.microsoft.tfs.core.clients.versioncontrol.localworkspace.LocalMetadataTableLock.<init>(LocalMetadataTableLock.java:42)
    at com.microsoft.tfs.core.clients.versioncontrol.localworkspace.LocalMetadataTableLock.<init>(LocalMetadataTableLock.java:31)
    at com.microsoft.tfs.core.clients.versioncontrol.internal.localworkspace.WorkspaceLock.<init>(WorkspaceLock.java:58)
    at com.microsoft.tfs.core.clients.versioncontrol.internal.localworkspace.LocalWorkspaceTransaction.acquireTables(LocalWorkspaceTransaction.java:515)
    at com.microsoft.tfs.core.clients.versioncontrol.internal.localworkspace.LocalWorkspaceTransaction.execute(LocalWorkspaceTransaction.java:342)
    at com.microsoft.tfs.core.clients.versioncontrol.internal.localworkspace.LocalDataAccessLayer.queryWorkingFolders(LocalDataAccessLayer.java:3706)
    at com.microsoft.tfs.core.clients.versioncontrol.soapextensions.Workspace.refreshMappingsIfNeeded(Workspace.java:6910)
    at com.microsoft.tfs.core.clients.versioncontrol.soapextensions.Workspace.getFolders(Workspace.java:3247)
    at com.microsoft.tfs.TfsClient$Companion.loadMappings(TfsClient.kt:59)
    at com.microsoft.tfs.TfsClient$Companion.getDetailedWorkspaceInfo(TfsClient.kt:89)
    at com.microsoft.tfs.MainKt$initializeModel$3.invoke(Main.kt:100)
    at com.microsoft.tfs.MainKt$initializeModel$3.invoke(Main.kt)
    at com.jetbrains.rd.framework.impl.RdEndpoint$set$2.invoke(RdTask.kt:203)
    at com.jetbrains.rd.framework.impl.RdEndpoint$set$2.invoke(RdTask.kt:176)
    at com.jetbrains.rd.framework.impl.RdEndpoint.onWireReceived(RdTask.kt:226)
    at com.jetbrains.rd.framework.MessageBroker$invoke$1.invoke(MessageBroker.kt:31)
    at com.jetbrains.rd.framework.MessageBroker$invoke$1.invoke(MessageBroker.kt:14)
    at com.jetbrains.rd.util.threading.SingleThreadSchedulerBase$queue$1.run(SingleThreadScheduler.kt:41)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:833)
    at com.jetbrains.rd.framework.RdTaskResult$Companion.read(TaskInterfaces.kt:23)
    at com.jetbrains.rd.framework.impl.RdCall.onWireReceived(RdTask.kt:102)
    at com.jetbrains.rd.framework.MessageBroker$invoke$1.invoke(MessageBroker.kt:31)
    at com.jetbrains.rd.framework.MessageBroker$invoke$1.invoke(MessageBroker.kt:14)
    at com.jetbrains.rd.util.threading.SynchronousScheduler.queue(SynchronousScheduler.kt:15)
    at com.jetbrains.rd.framework.MessageBroker.invoke(MessageBroker.kt:29)
    at com.jetbrains.rd.framework.MessageBroker.invoke$default(MessageBroker.kt:25)
    at com.jetbrains.rd.framework.MessageBroker.dispatch(MessageBroker.kt:96)
    at com.jetbrains.rd.framework.SocketWire$Base.readMsg(SocketWire.kt:151)
    at com.jetbrains.rd.framework.SocketWire$Base.receiverProc(SocketWire.kt:119)
    at com.jetbrains.rd.framework.SocketWire$Base.access$receiverProc(SocketWire.kt:65)
    at com.jetbrains.rd.framework.SocketWire$Base$1.invoke(SocketWire.kt:102)
    at com.jetbrains.rd.framework.SocketWire$Base$1.invoke(SocketWire.kt:65)
    at com.jetbrains.rd.util.reactive.Signal.fire(Signal.kt:29)
    at com.jetbrains.rd.util.reactive.OptProperty.set(Property.kt:33)
    at com.jetbrains.rd.framework.SocketWire$Server$thread$1.invoke(SocketWire.kt:369)
    at com.jetbrains.rd.framework.SocketWire$Server$thread$1.invoke(SocketWire.kt:338)
    at kotlin.concurrent.ThreadsKt$thread$thread$1.run(Thread.kt:30)

image

ForNeVeR commented 1 year ago

Do you have other TFVC clients (i.e. Visual Studio or other instances of Rider) running at the moment when you experience the issue?

johmara commented 1 year ago

Yes, I had Visual Studio running at the same time. Got no issues when starting Rider with no other clients active. The reason I had the visual studio client active is because of this error when trying to perform a merge:

Error:TF400030: The local metadata table could not be loaded because exclusive access could not be acquired.
Often that happens because of a background process running in the system that scans files on disk, e.g. anti-virus protection program. Please exclude the local folders mapped in the TFS workspace from scanning.  

I only have one rider instance active when getting this. (And tried rebooting with the same outcome)

ForNeVeR commented 1 year ago

Sadly, we don't know how to fix this issue. Different TFVC clients do conflict with each other.