8000 Feature request: Periodic garbage collection · Issue #3565 · gitbucket/gitbucket · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Feature request: Periodic garbage collection #3565

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
3 tasks done
Baarsgaard opened this issue Jul 11, 2024 · 0 comments
Open
3 tasks done

Feature request: Periodic garbage collection #3565

Baarsgaard opened this issue Jul 11, 2024 · 0 comments
Labels

Comments

@Baarsgaard
Copy link
Baarsgaard commented Jul 11, 2024

Before submitting an issue to GitBucket I have first:

Issue

Impacted version: 4.2 - 4.41.0

Problem description:
Heavy repositories with a commit count over 5000 have severely degraded performance when loading repositories.
I have even experienced being unable to clone repositories due to partially corrupt server side repositories.

git clone ssh://git@gitbucket.admin.app.syntest.vd.dk:29418/duv/duv.git
Cloning into 'duv'...
remote: Counting objects: 78, done
remote: Finding sources: 100% (4756/4756)
remote: Getting sizes: 100% (599/599)
remote: Compressing objects: 100% (34973/34973)
remote: Total 4756 (delta 2617), reused 4730 (delta 2603)
Receiving objects: 100% (4756/4756), 1.06 MiB | 11.17 MiB/s, done.
Resolving deltas: 100% (2617/2617), done.
fatal: did not receive expected object 5bcc3027785b98fafc039c1d973e5b58f22ef0f8
fatal: fetch-pack: invalid index-pack output

I've seen loading improvements by following: #3200 (comment)_
And I have had loading and cloning issues go away entirely by manually executing Garbage Collection from: #1212

Unfortunately the Git implementation used for garbage collection seems to break at times.

GC Error logs

Index out of bounds

12:05:48.795 [qtp403716510-5723] ERROR g.c.c.RepositorySettingsController - Catch unhandled error in request: Request(POST http://gitbucket.admin.app.syntest.vd.dk/duv/duv/settings/gc)@6e1248ed
java.lang.ArrayIndexOutOfBoundsException: Index 4679 out of bounds for length 4679
	at org.eclipse.jgit.internal.storage.file.PackBitmapIndexRemapper.getBitmap(PackBitmapIndexRemapper.java:155)
	at org.eclipse.jgit.internal.storage.file.BitmapIndexImpl.getBitmap(BitmapIndexImpl.java:59)
	at org.eclipse.jgit.internal.storage.file.BitmapIndexImpl.getBitmap(BitmapIndexImpl.java:1)
	at org.eclipse.jgit.revwalk.BitmapWalker.findObjectsWalk(BitmapWalker.java:180)
	at org.eclipse.jgit.revwalk.BitmapWalker.findObjects(BitmapWalker.java:128)
	at org.eclipse.jgit.internal.storage.pack.PackWriter.prepareBitmapIndex(PackWriter.java:2505)
	at org.eclipse.jgit.internal.storage.file.GC.writePack(GC.java:1384)
	at org.eclipse.jgit.internal.storage.file.GC.repack(GC.java:891)
	at org.eclipse.jgit.internal.storage.file.GC.doGc(GC.java:289)
	at org.eclipse.jgit.internal.storage.file.GC.gc(GC.java:238)
	at org.eclipse.jgit.api.GarbageCollectCommand.call(GarbageCollectCommand.java:179)
	at gitbucket.core.controller.RepositorySettingsControllerBase.$anonfun$$init$$58(RepositorySettingsController.scala:473)
	at scala.util.Using$.resource(Using.scala:262)
	at gitbucket.core.controller.RepositorySettingsControllerBase.$anonfun$$init$$57(RepositorySettingsController.scala:472)
	at gitbucket.core.util.LockUtil$.lock(LockUtil.scala:30)
	at gitbucket.core.controller.RepositorySettingsControllerBase.$anonfun$$init$$56(RepositorySettingsController.scala:472)
	at gitbucket.core.util.OwnerAuthenticator.$anonfun$authenticate$1(Authenticator.scala:37)
	at scala.Option.map(Option.scala:242)
	at gitbucket.core.util.OwnerAuthenticator.authenticate(Authenticator.scala:35)
	at gitbucket.core.util.OwnerAuthenticator.ownerOnly(Authenticator.scala:29)
	at gitbucket.core.util.OwnerAuthenticator.ownerOnly$(Authenticator.scala:29)
	at gitbucket.core.controller.RepositorySettingsController.ownerOnly(RepositorySettingsController.scala:25)
	at gitbucket.core.controller.RepositorySettingsControllerBase.$anonfun$$init$$55(RepositorySettingsController.scala:470)
	at org.scalatra.ScalatraBase.liftAction(ScalatraBase.scala:284)
	at org.scalatra.ScalatraBase.$anonfun$invoke$1(ScalatraBase.scala:278)
	at org.scalatra.ApiFormats.withRouteMultiParams(ApiFormats.scala:180)
	at org.scalatra.ApiFormats.withRouteMultiParams$(ApiFormats.scala:171)
	at gitbucket.core.controller.ControllerBase.withRouteMultiParams(ControllerBase.scala:38)
	at org.scalatra.ScalatraBase.invoke(ScalatraBase.scala:277)
	at org.scalatra.ScalatraBase.invoke$(ScalatraBase.scala:276)
	at gitbucket.core.controller.ControllerBase.invoke(ControllerBase.scala:38)
	at org.scalatra.ScalatraBase.$anonfun$runRoutes$3(ScalatraBase.scala:252)
	at scala.Option.flatMap(Option.scala:283)
	at org.scalatra.ScalatraBase.$anonfun$runRoutes$1(ScalatraBase.scala:250)
	at scala.collection.immutable.LazyList$.$anonfun$flatMapImpl$1(LazyList.scala:1050)
	at scala.collection.immutable.LazyList.scala$collection$immutable$LazyList$$state$lzycompute(LazyList.scala:259)
	at scala.collection.immutable.LazyList.scala$collection$immutable$LazyList$$state(LazyList.scala:252)
	at scala.collection.immutable.LazyList.isEmpty(LazyList.scala:269)
	at scala.collection.LinearSeqOps.headOption(LinearSeq.scala:57)
	at scala.collection.LinearSeqOps.headOption$(LinearSeq.scala:56)
	at scala.collection.immutable.LazyList.headOption(LazyList.scala:240)
	at org.scalatra.ScalatraBase.runActions$1(ScalatraBase.scala:171)
	at org.scalatra.ScalatraBase.$anonfun$executeRoutes$6(ScalatraBase.scala:183)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
	at org.scalatra.ScalatraBase.cradleHalt(ScalatraBase.scala:203)
	at org.scalatra.ScalatraBase.executeRoutes(ScalatraBase.scala:183)
	at org.scalatra.ScalatraBase.executeRoutes$(ScalatraBase.scala:152)
	at gitbucket.core.controller.ControllerBase.executeRoutes(ControllerBase.scala:38)
	at org.scalatra.ScalatraBase.$anonfun$handle$1(ScalatraBase.scala:125)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at org.scalatra.DynamicScope.withResponse(DynamicScope.scala:75)
	at org.scalatra.DynamicScope.withResponse$(DynamicScope.scala:73)
	at gitbucket.core.controller.ControllerBase.withResponse(ControllerBase.scala:38)
	at org.scalatra.DynamicScope.$anonfun$withRequestResponse$1(DynamicScope.scala:55)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at org.scalatra.DynamicScope.withRequest(DynamicScope.scala:66)
	at org.scalatra.DynamicScope.withRequest$(DynamicScope.scala:64)
	at gitbucket.core.controller.ControllerBase.withRequest(ControllerBase.scala:38)
	at org.scalatra.DynamicScope.withRequestResponse(DynamicScope.scala:54)
	at org.scalatra.DynamicScope.withRequestResponse$(DynamicScope.scala:52)
	at gitbucket.core.controller.ControllerBase.withRequestResponse(ControllerBase.scala:38)
	at org.scalatra.ScalatraBase.handle(ScalatraBase.scala:125)
	at org.scalatra.ScalatraBase.handle$(ScalatraBase.scala:121)
	at gitbucket.core.controller.ControllerBase.org$scalatra$servlet$ServletBase$$super$handle(ControllerBase.scala:38)
	at org.scalatra.servlet.ServletBase.handle(ServletBase.scala:43)
	at org.scalatra.servlet.ServletBase.handle$(ServletBase.scala:36)
	at gitbucket.core.controller.ControllerBase.org$scalatra$FlashMapSupport$$super$handle(ControllerBase.scala:38)
	at org.scalatra.FlashMapSupport.$anonfun$handle$1(FlashMap.scala:177)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at org.scalatra.DynamicScope.withRequest(DynamicScope.scala:66)
	at org.scalatra.DynamicScope.withRequest$(DynamicScope.scala:64)
	at gitbucket.core.controller.ControllerBase.withRequest(ControllerBase.scala:38)
	at org.scalatra.FlashMapSupport.handle(FlashMap.scala:152)
	at org.scalatra.FlashMapSupport.handle$(FlashMap.scala:151)
	at gitbucket.core.controller.ControllerBase.handle(ControllerBase.scala:38)
	at org.scalatra.ScalatraFilter.$anonfun$doFilter$1(ScalatraFilter.scala:41)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at org.scalatra.ScalatraFilter.doFilter(ScalatraFilter
8000
.scala:41)
	at org.scalatra.ScalatraFilter.doFilter$(ScalatraFilter.scala:36)
	at gitbucket.core.controller.ControllerBase.doFilter(ControllerBase.scala:76)
	at gitbucket.core.servlet.CompositeScalatraFilter.$anonfun$process$2(CompositeScalatraFilter.scala:67)
	at gitbucket.core.servlet.CompositeScalatraFilter.$anonfun$process$2$adapted(CompositeScalatraFilter.scala:64)
	at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:576)
	at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:574)
	at scala.collection.AbstractIterable.foreach(Iterable.scala:933)
	at gitbucket.core.servlet.CompositeScalatraFilter.process(CompositeScalatraFilter.scala:64)
	at gitbucket.core.servlet.ControllerFilter.doFilter(CompositeScalatraFilter.scala:25)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
	at gitbucket.core.servlet.ControllerFilter.doFilter(CompositeScalatraFilter.scala:31)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
	at org.scalatra.ScalatraFilter.$anonfun$doNotFound$1(ScalatraFilter.scala:80)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
	at org.scalatra.ScalatraBase.$anonfun$executeRoutes$5(ScalatraBase.scala:174)
	at scala.Option.getOrElse(Option.scala:201)
	at org.scalatra.ScalatraBase.$anonfun$executeRoutes$3(ScalatraBase.scala:174)
	at scala.Option.getOrElse(Option.scala:201)
	at org.scalatra.ScalatraBase.runActions$1(ScalatraBase.scala:174)
	at org.scalatra.ScalatraBase.$anonfun$executeRoutes$6(ScalatraBase.scala:183)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
	at org.scalatra.ScalatraBase.cradleHalt(ScalatraBase.scala:203)
	at org.scalatra.ScalatraBase.executeRoutes(ScalatraBase.scala:183)
	at org.scalatra.ScalatraBase.executeRoutes$(ScalatraBase.scala:152)
	at gitbucket.core.controller.ControllerBase.executeRoutes(ControllerBase.scala:38)
	at org.scalatra.ScalatraBase.$anonfun$handle$1(ScalatraBase.scala:125)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at org.scalatra.DynamicScope.withResponse(DynamicScope.scala:75)
	at org.scalatra.DynamicScope.withResponse$(DynamicScope.scala:73)
	at gitbucket.core.controller.ControllerBase.withResponse(ControllerBase.scala:38)
	at org.scalatra.DynamicScope.$anonfun$withRequestResponse$1(DynamicScope.scala:55)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at org.scalatra.DynamicScope.withRequest(DynamicScope.scala:66)
	at org.scalatra.DynamicScope.withRequest$(DynamicScope.scala:64)
	at gitbucket.core.controller.ControllerBase.withRequest(ControllerBase.scala:38)
	at org.scalatra.DynamicScope.withRequestResponse(DynamicScope.scala:54)
	at org.scalatra.DynamicScope.withRequestResponse$(DynamicScope.scala:52)
	at gitbucket.core.controller.ControllerBase.withRequestResponse(ControllerBase.scala:38)
	at org.scalatra.ScalatraBase.handle(ScalatraBase.scala:125)
	at org.scalatra.ScalatraBase.handle$(ScalatraBase.scala:121)
	at gitbucket.core.controller.ControllerBase.org$scalatra$servlet$ServletBase$$super$handle(ControllerBase.scala:38)
	at org.scalatra.servlet.ServletBase.handle(ServletBase.scala:43)
	at org.scalatra.servlet.ServletBase.handle$(ServletBase.scala:36)
	at gitbucket.core.controller.ControllerBase.org$scalatra$FlashMapSupport$$super$handle(ControllerBase.scala:38)
	at org.scalatra.FlashMapSupport.$anonfun$handle$1(FlashMap.scala:177)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at org.scalatra.DynamicScope.withRequest(DynamicScope.scala:66)
	at org.scalatra.DynamicScope.withRequest$(DynamicScope.scala:64)
	at gitbucket.core.controller.ControllerBase.withRequest(ControllerBase.scala:38)
	at org.scalatra.FlashMapSupport.handle(FlashMap.scala:152)
	at org.scalatra.FlashMapSupport.handle$(FlashMap.scala:151)
	at gitbucket.core.controller.ControllerBase.handle(ControllerBase.scala:38)
	at org.scalatra.ScalatraFilter.$anonfun$doFilter$1(ScalatraFilter.scala:41)
	at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
	at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
	at org.scalatra.ScalatraFilter.doFilter(ScalatraFilter.scala:41)
	at org.scalatra.ScalatraFilter.doFilter$(ScalatraFilter.scala:36)
	at gitbucket.core.controller.ControllerBase.doFilter(ControllerBase.scala:76)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
	at gitbucket.core.servlet.TransactionFilter.$anonfun$doFilter$1(TransactionFilter.scala:39)
	at gitbucket.core.servlet.TransactionFilter.$anonfun$doFilter$1$adapted(TransactionFilter.scala:30)
	at com.github.takezoe.slick.blocking.BlockingJdbcProfile$BlockingAPI$BlockingDatabase.$anonfun$withTransaction$2(BlockingProfile.scala:270)
	at slick.JdbcProfileBlockingSession$BlockingSession.withTransaction(TransactionalJdbcBackend.scala:28)
	at com.github.takezoe.slick.blocking.BlockingJdbcProfile$BlockingAPI$BlockingDatabase.$anonfun$withTransaction$1(BlockingProfile.scala:270)
	at com.github.takezoe.slick.blocking.BlockingJdbcProfile$BlockingAPI$BlockingDatabase.withSession(BlockingProfile.scala:263)
	at com.github.takezoe.slick.blocking.BlockingJdbcProfile$BlockingAPI$BlockingDatabase.withTransaction(BlockingProfile.scala:270)
	at gitbucket.core.servlet.TransactionFilter.doFilter(TransactionFilter.scala:30)
	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:210)
	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131)
	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:598)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223)
	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1384)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)
	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)
	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543)
	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)
	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1306)
	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)
	at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:173)
	at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:51)
	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
	at org.eclipse.jetty.server.Server.handle(Server.java:563)
	at org.eclipse.jetty.server.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1598)
	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:753)
	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:501)
	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:287)
	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314)
	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)
	at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:421)
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:390)
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:277)
	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:199)
	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:411)
	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194)
	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149)
	at java.base/java.lang.Thread.run(Thread.java:829)

Illegal state exception

image-2024-7-11_15-6-42

12:41:25.034 [qtp403716510-21669] ERROR g.c.c.RepositorySettingsController - Catch unhandled error in request: Request(POST http://gitbucket.admin.app.syndev.vd.dk/vinterman/vinterman/settings/gc)@427ef73f
java.lang.IllegalStateException: null
        at org.eclipse.jgit.internal.storage.file.PackBitmapIndexBuilder.generateStoredEntry(PackBitmapIndexBuilder.java:191)
        at org.eclipse.jgit.internal.storage.file.PackBitmapIndexBuilder.processBitmapForWrite(PackBitmapIndexBuilder.java:163)
        at org.eclipse.jgit.internal.storage.pack.PackWriter.prepareBitmapIndex(PackWriter.java:2513)
        at org.eclipse.jgit.internal.storage.file.GC.writePack(GC.java:1384)
        at org.eclipse.jgit.internal.storage.file.GC.repack(GC.java:891)
        at org.eclipse.jgit.internal.storage.file.GC.doGc(GC.java:289)
        at org.eclipse.jgit.internal.storage.file.GC.gc(GC.java:238)
        at org.eclipse.jgit.api.GarbageCollectCommand.call(GarbageCollectCommand.java:179)
        at gitbucket.core.controller.RepositorySettingsControllerBase.$anonfun$$init$$58(RepositorySettingsController.scala:473)
        at scala.util.Using$.resource(Using.scala:262)
        at gitbucket.core.controller.RepositorySettingsControllerBase.$anonfun$$init$$57(RepositorySettingsController.scala:472)
        at gitbucket.core.util.LockUtil$.lock(LockUtil.scala:30)
        at gitbucket.core.controller.RepositorySettingsControllerBase.$anonfun$$init$$56(RepositorySettingsController.scala:472)
        at gitbucket.core.util.OwnerAuthenticator.$anonfun$authenticate$1(Authenticator.scala:37)
        at scala.Option.map(Option.scala:242)
        at gitbucket.core.util.OwnerAuthenticator.authenticate(Authenticator.scala:35)
        at gitbucket.core.util.OwnerAuthenticator.ownerOnly(Authenticator.scala:29)
        at gitbucket.core.util.OwnerAuthenticator.ownerOnly$(Authenticator.scala:29)
        at gitbucket.core.controller.RepositorySettingsController.ownerOnly(RepositorySettingsController.scala:25)
        at gitbucket.core.controller.RepositorySettingsControllerBase.$anonfun$$init$$55(RepositorySettingsController.scala:470)
        at org.scalatra.ScalatraBase.liftAction(ScalatraBase.scala:284)
        at org.scalatra.ScalatraBase.$anonfun$invoke$1(ScalatraBase.scala:278)
        at org.scalatra.ApiFormats.withRouteMultiParams(ApiFormats.scala:180)
        at org.scalatra.ApiFormats.withRouteMultiParams$(ApiFormats.scala:171)
        at gitbucket.core.controller.ControllerBase.withRouteMultiParams(ControllerBase.scala:38)
        at org.scalatra.ScalatraBase.invoke(ScalatraBase.scala:277)
        at org.scalatra.ScalatraBase.invoke$(ScalatraBase.scala:276)
        at gitbucket.core.controller.ControllerBase.invoke(ControllerBase.scala:38)
        at org.scalatra.ScalatraBase.$anonfun$runRoutes$3(ScalatraBase.scala:252)
        at scala.Option.flatMap(Option.scala:283)
        at org.scalatra.ScalatraBase.$anonfun$runRoutes$1(ScalatraBase.scala:250)
        at scala.collection.immutable.LazyList$.$anonfun$flatMapImpl$1(LazyList.scala:1050)
        at scala.collection.immutable.LazyList.scala$collection$immutable$LazyList$$state$lzycompute(LazyList.scala:259)
        at scala.collection.immutable.LazyList.scala$collection$immutable$LazyList$$state(LazyList.scala:252)
        at scala.collection.immutable.LazyList.isEmpty(LazyList.scala:269)
        at scala.collection.LinearSeqOps.headOption(LinearSeq.scala:57)
        at scala.collection.LinearSeqOps.headOption$(LinearSeq.scala:56)
        at scala.collection.immutable.LazyList.headOption(LazyList.scala:240)
        at org.scalatra.ScalatraBase.runActions$1(ScalatraBase.scala:171)
        at org.scalatra.ScalatraBase.$anonfun$executeRoutes$6(ScalatraBase.scala:183)
        at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
        at org.scalatra.ScalatraBase.cradleHalt(ScalatraBase.scala:203)
        at org.scalatra.ScalatraBase.executeRoutes(ScalatraBase.scala:183)
        at org.scalatra.ScalatraBase.executeRoutes$(ScalatraBase.scala:152)
        at gitbucket.core.controller.ControllerBase.executeRoutes(ControllerBase.scala:38)
        at org.scalatra.ScalatraBase.$anonfun$handle$1(ScalatraBase.scala:125)
        at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
        at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
        at org.scalatra.DynamicScope.withResponse(DynamicScope.scala:75)
        at org.scalatra.DynamicScope.withResponse$(DynamicScope.scala:73)
        at gitbucket.core.controller.ControllerBase.withResponse(ControllerBase.scala:38)
        at org.scalatra.DynamicScope.$anonfun$withRequestResponse$1(DynamicScope.scala:55)
        at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
        at org.scalatra.DynamicScope.withRequest(DynamicScope.scala:66)
        at org.scalatra.DynamicScope.withRequest$(DynamicScope.scala:64)
        at gitbucket.core.controller.ControllerBase.withRequest(ControllerBase.scala:38)
        at org.scalatra.DynamicScope.withRequestResponse(DynamicScope.scala:54)
        at org.scalatra.DynamicScope.withRequestResponse$(DynamicScope.scala:52)
        at gitbucket.core.controller.ControllerBase.withRequestResponse(ControllerBase.scala:38)
        at org.scalatra.ScalatraBase.handle(ScalatraBase.scala:125)
        at org.scalatra.ScalatraBase.handle$(ScalatraBase.scala:121)
        at gitbucket.core.controller.ControllerBase.org$scalatra$servlet$ServletBase$$super$handle(ControllerBase.scala:38)
        at org.scalatra.servlet.ServletBase.handle(ServletBase
9169
.scala:43)
        at org.scalatra.servlet.ServletBase.handle$(ServletBase.scala:36)
        at gitbucket.core.controller.ControllerBase.org$scalatra$FlashMapSupport$$super$handle(ControllerBase.scala:38)
        at org.scalatra.FlashMapSupport.$anonfun$handle$1(FlashMap.scala:177)
        at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
        at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
        at org.scalatra.DynamicScope.withRequest(DynamicScope.scala:66)
        at org.scalatra.DynamicScope.withRequest$(DynamicScope.scala:64)
        at gitbucket.core.controller.ControllerBase.withRequest(ControllerBase.scala:38)
        at org.scalatra.FlashMapSupport.handle(FlashMap.scala:152)
        at org.scalatra.FlashMapSupport.handle$(FlashMap.scala:151)
        at gitbucket.core.controller.ControllerBase.handle(ControllerBase.scala:38)
        at org.scalatra.ScalatraFilter.$anonfun$doFilter$1(ScalatraFilter.scala:41)
        at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
        at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
        at org.scalatra.ScalatraFilter.doFilter(ScalatraFilter.scala:41)
        at org.scalatra.ScalatraFilter.doFilter$(ScalatraFilter.scala:36)
        at gitbucket.core.controller.ControllerBase.doFilter(ControllerBase.scala:76)
        at gitbucket.core.servlet.CompositeScalatraFilter.$anonfun$process$2(CompositeScalatraFilter.scala:67)
        at gitbucket.core.servlet.CompositeScalatraFilter.$anonfun$process$2$adapted(CompositeScalatraFilter.scala:64)
        at scala.collection.IterableOnceOps.foreach(IterableOnce.scala:576)
        at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:574)
        at scala.collection.AbstractIterable.foreach(Iterable.scala:933)
        at gitbucket.core.servlet.CompositeScalatraFilter.process(CompositeScalatraFilter.scala:64)
        at gitbucket.core.servlet.ControllerFilter.doFilter(CompositeScalatraFilter.scala:25)
        at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
        at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
        at gitbucket.core.servlet.ControllerFilter.doFilter(CompositeScalatraFilter.scala:31)
        at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
        at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
        at org.scalatra.ScalatraFilter.$anonfun$doNotFound$1(ScalatraFilter.scala:80)
        at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
        at org.scalatra.ScalatraBase.$anonfun$executeRoutes$5(ScalatraBase.scala:174)
        at scala.Option.getOrElse(Option.scala:201)
        at org.scalatra.ScalatraBase.$anonfun$executeRoutes$3(ScalatraBase.scala:174)
        at scala.Option.getOrElse(Option.scala:201)
        at org.scalatra.ScalatraBase.runActions$1(ScalatraBase.scala:174)
        at org.scalatra.ScalatraBase.$anonfun$executeRoutes$6(ScalatraBase.scala:183)
        at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
        at org.scalatra.ScalatraBase.cradleHalt(ScalatraBase.scala:203)
        at org.scalatra.ScalatraBase.executeRoutes(ScalatraBase.scala:183)
        at org.scalatra.ScalatraBase.executeRoutes$(ScalatraBase.scala:152)
        at gitbucket.core.controller.ControllerBase.executeRoutes(ControllerBase.scala:38)
        at org.scalatra.ScalatraBase.$anonfun$handle$1(ScalatraBase.scala:125)
        at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
        at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
        at org.scalatra.DynamicScope.withResponse(DynamicScope.scala:75)
        at org.scalatra.DynamicScope.withResponse$(DynamicScope.scala:73)
        at gitbucket.core.controller.ControllerBase.withResponse(ControllerBase.scala:38)
        at org.scalatra.DynamicScope.$anonfun$withRequestResponse$1(DynamicScope.scala:55)
        at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
        at org.scalatra.DynamicScope.withRequest(DynamicScope.scala:66)
        at org.scalatra.DynamicScope.withRequest$(DynamicScope.scala:64)
        at gitbucket.core.controller.ControllerBase.withRequest(ControllerBase.scala:38)
        at org.scalatra.DynamicScope.withRequestResponse(DynamicScope.scala:54)
        at org.scalatra.DynamicScope.withRequestResponse$(DynamicScope.scala:52)
        at gitbucket.core.controller.ControllerBase.withRequestResponse(ControllerBase.scala:38)
        at org.scalatra.ScalatraBase.handle(ScalatraBase.scala:125)
        at org.scalatra.ScalatraBase.handle$(ScalatraBase.scala:121)
        at gitbucket.core.controller.ControllerBase.org$scalatra$servlet$ServletBase$$super$handle(ControllerBase.scala:38)
        at org.scalatra.servlet.ServletBase.handle(ServletBase.scala:43)
        at org.scalatra.servlet.ServletBase.handle$(ServletBase.scala:36)
        at gitbucket.core.controller.ControllerBase.org$scalatra$FlashMapSupport$$super$handle(ControllerBase.scala:38)
        at org.scalatra.FlashMapSupport.$anonfun$handle$1(FlashMap.scala:177)
        at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
        at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
        at org.scalatra.DynamicScope.withRequest(DynamicScope.scala:66)
        at org.scalatra.DynamicScope.withRequest$(DynamicScope.scala:64)
        at gitbucket.core.controller.ControllerBase.withRequest(ControllerBase.scala:38)
        at org.scalatra.FlashMapSupport.handle(FlashMap.scala:152)
        at org.scalatra.FlashMapSupport.handle$(FlashMap.scala:151)
        at gitbucket.core.controller.ControllerBase.handle(ControllerBase.scala:38)
        at org.scalatra.ScalatraFilter.$anonfun$doFilter$1(ScalatraFilter.scala:41)
        at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
        at scala.util.DynamicVariable.withValue(DynamicVariable.scala:59)
        at org.scalatra.ScalatraFilter.doFilter(ScalatraFilter.scala:41)
        at org.scalatra.ScalatraFilter.doFilter$(ScalatraFilter.scala:36)
        at gitbucket.core.controller.ControllerBase.doFilter(ControllerBase.scala:76)
        at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202)
        at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
        at gitbucket.core.servlet.TransactionFilter.$anonfun$doFilter$1(TransactionFilter.scala:39)
        at gitbucket.core.servlet.TransactionFilter.$anonfun$doFilter$1$adapted(TransactionFilter.scala:30)
        at com.github.takezoe.slick.blocking.BlockingJdbcProfile$BlockingAPI$BlockingDatabase.$anonfun$withTransaction$2(BlockingProfile.scala:270)
        at slick.JdbcProfileBlockingSession$BlockingSession.withTransaction(TransactionalJdbcBackend.scala:28)
        at com.github.takezoe.slick.blocking.BlockingJdbcProfile$BlockingAPI$BlockingDatabase.$anonfun$withTransaction$1(BlockingProfile.scala:270)
        at com.github.takezoe.slick.blocking.BlockingJdbcProfile$BlockingAPI$BlockingDatabase.withSession(BlockingProfile.scala:263)
        at com.github.takezoe.slick.blocking.BlockingJdbcProfile$BlockingAPI$BlockingDatabase.withTransaction(BlockingProfile.scala:270)
        at gitbucket.core.servlet.TransactionFilter.doFilter(TransactionFilter.scala:30)
        at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:210)
        at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635)
        at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131)
        at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:598)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223)
        at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1570)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
        at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1384)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)
        at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)
        at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1543)
        at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)
        at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1306)
        at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)
        at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:173)
        at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:51)
        at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
        at org.eclipse.jetty.server.Server.handle(Server.java:563)
        at org.eclipse.jetty.server.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1598)
        at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:753)
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:501)
        at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:287)
        at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314)
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)
        at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
        at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:421)
        at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:390)
        at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:277)
        at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:199)
        at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:411)
        at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194)
        at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149)
        at java.base/java.lang.Thread.run(Thread.java:829)

This usually results in me having to manually log into the server and execute git gc in the repository

cd /var/gitbucket/repositories/duv/duv.git/
git gc --aggressive

Which then solves the issue, untill it eventually shows up again.

I have a suspicion that the reason it breaks at times is due to GC not being run consistently and/or periodically.

Ideally this is configurable globally and it would be possible to have Gitbucket execute a GC in each repository following a CRON expression, similar to how Harbor allows users to schedule GC runs.
67440875-9175a900-f5af-11e9-8c30-24940b0b2932

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Development

No branches or pull requests

2 participants
0