If LFS disabled in GitLab project, svn operations fail if fileLfs enabled
wehall opened this issue · comments
William Eric Hall commented
With LFS disabled in project settings and !fileLfs enabled in git-as-svn, svn operations fail with "403 Forbidden" while listing LFS locks:
2020-04-30T09:55:56,042 WARN [SvnServer-thread-2] (CommitCmd.java:654) - Exception during in cmd close-edit
ru.bozaro.gitlfs.client.exceptions.ForbiddenException: https://git.isis.vanderbilt.edu/ehall/plain-html.git/info/lfs/locks?refspec=master - 403 (Forbidden)
at ru.bozaro.gitlfs.client.Client.doRequest(Client.java:132) ~[gitlfs-client-0.16.0.jar:?]
at ru.bozaro.gitlfs.client.Client.lambda$listLocks$10(Client.java:429) ~[gitlfs-client-0.16.0.jar:?]
at ru.bozaro.gitlfs.client.Client.doWork(Client.java:93) ~[gitlfs-client-0.16.0.jar:?]
at ru.bozaro.gitlfs.client.Client.listLocks(Client.java:429) ~[gitlfs-client-0.16.0.jar:?]
at svnserver.ext.gitlfs.storage.network.LfsHttpStorage.getLocks(LfsHttpStorage.java:124) ~[git-as-svn.jar:?]
at svnserver.ext.gitlfs.storage.network.LfsHttpStorage.getLocks(LfsHttpStorage.java:228) ~[git-as-svn.jar:?]
at svnserver.repository.git.GitWriter$GitCommitBuilder.checkLock(GitWriter.java:281) ~[git-as-svn.jar:?]
at svnserver.server.command.CommitCmd$EditorPipeline.lambda$checkLock$10(CommitCmd.java:596) ~[git-as-svn.jar:?]
at svnserver.server.command.CommitCmd$EditorPipeline.updateDir(CommitCmd.java:566) ~[git-as-svn.jar:?]
at svnserver.server.command.CommitCmd$EditorPipeline.lambda$closeEdit$7(CommitCmd.java:527) ~[git-as-svn.jar:?]
at svnserver.repository.git.GitRepository.wrapLock(GitRepository.java:130) ~[git-as-svn.jar:?]
at svnserver.repository.git.GitRepository.wrapLockWrite(GitRepository.java:121) ~[git-as-svn.jar:?]
at svnserver.server.command.CommitCmd$EditorPipeline.closeEdit(CommitCmd.java:521) ~[git-as-svn.jar:?]
at svnserver.server.command.LambdaCmd.process(LambdaCmd.java:40) ~[git-as-svn.jar:?]
at svnserver.server.command.CommitCmd$EditorPipeline.editorCommand(CommitCmd.java:649) ~[git-as-svn.jar:?]
at svnserver.server.SvnServer.serveClient(SvnServer.java:246) ~[git-as-svn.jar:?]
at svnserver.server.SvnServer.lambda$run$1(SvnServer.java:208) ~[git-as-svn.jar:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_252]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_252]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_252]
2020-04-30T09:55:56,043 WARN [SvnServer-thread-2] (SvnServer.java:212) - Exception:
ru.bozaro.gitlfs.client.exceptions.ForbiddenException: https://git.isis.vanderbilt.edu/ehall/plain-html.git/info/lfs/locks?refspec=master - 403 (Forbidden)
at ru.bozaro.gitlfs.client.Client.doRequest(Client.java:132) ~[gitlfs-client-0.16.0.jar:?]
at ru.bozaro.gitlfs.client.Client.lambda$listLocks$10(Client.java:429) ~[gitlfs-client-0.16.0.jar:?]
at ru.bozaro.gitlfs.client.Client.doWork(Client.java:93) ~[gitlfs-client-0.16.0.jar:?]
at ru.bozaro.gitlfs.client.Client.listLocks(Client.java:429) ~[gitlfs-client-0.16.0.jar:?]
at svnserver.ext.gitlfs.storage.network.LfsHttpStorage.getLocks(LfsHttpStorage.java:124) ~[git-as-svn.jar:?]
at svnserver.ext.gitlfs.storage.network.LfsHttpStorage.getLocks(LfsHttpStorage.java:228) ~[git-as-svn.jar:?]
at svnserver.repository.git.GitWriter$GitCommitBuilder.checkLock(GitWriter.java:281) ~[git-as-svn.jar:?]
at svnserver.server.command.CommitCmd$EditorPipeline.lambda$checkLock$10(CommitCmd.java:596) ~[git-as-svn.jar:?]
at svnserver.server.command.CommitCmd$EditorPipeline.updateDir(CommitCmd.java:566) ~[git-as-svn.jar:?]
at svnserver.server.command.CommitCmd$EditorPipeline.lambda$closeEdit$7(CommitCmd.java:527) ~[git-as-svn.jar:?]
at svnserver.repository.git.GitRepository.wrapLock(GitRepository.java:130) ~[git-as-svn.jar:?]
at svnserver.repository.git.GitRepository.wrapLockWrite(GitRepository.java:121) ~[git-as-svn.jar:?]
at svnserver.server.command.CommitCmd$EditorPipeline.closeEdit(CommitCmd.java:521) ~[git-as-svn.jar:?]
at svnserver.server.command.LambdaCmd.process(LambdaCmd.java:40) ~[git-as-svn.jar:?]
at svnserver.server.command.CommitCmd$EditorPipeline.editorCommand(CommitCmd.java:649) ~[git-as-svn.jar:?]
at svnserver.server.SvnServer.serveClient(SvnServer.java:246) ~[git-as-svn.jar:?]
at svnserver.server.SvnServer.lambda$run$1(SvnServer.java:208) ~[git-as-svn.jar:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_252]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_252]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_252]
Marat Radchenko commented
We can handle this case by checking whether LFS is enabled for particular repo via GitLab API. Just need to add some caching to avoid too many requests.