You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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
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.
The text was updated successfully, but these errors were encountered:
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.
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
Illegal state exception
This usually results in me having to manually log into the server and execute
git gc
in the repositorycd /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.

The text was updated successfully, but these errors were encountered: