Skip to content
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

Merge pull request creates java.lang.NullPointerException #3379

Open
OscarS1969 opened this issue Sep 29, 2023 · 3 comments
Open

Merge pull request creates java.lang.NullPointerException #3379

OscarS1969 opened this issue Sep 29, 2023 · 3 comments

Comments

@OscarS1969
Copy link

Issue

Impacted version: 4.39.0

Deployment mode: Application: Microsoft Windows Server 2022, Microsoft Internet Information Services 10 as reverse proxy, Windows Service Wrapper (https://github.com/winsw/winsw), Oracle Java 11.0.18. Database: SUSE Linux Enterprise Server 15 SP4 with PostgreSQL 12.12.

Problem description:

  • Create a pull request
  • Merge pull request
  • Internal Server Error, java.lang.NullPointerException
  • gitbucket.out.log:

09:44:33.130 [...] ERROR g.c.c.PullRequestsController - Catch unhandled error in request: Request(POST //localhost:12345/myuser/myapp/pull/123/merge)@12345678
java.lang.NullPointerException: null
at org.eclipse.jgit.lib.CommitBuilder.setTreeId(CommitBuilder.java:79)
at gitbucket.core.service.MergeService$MergeCacheInfo._cloneCommit$1(MergeService.scala:696)
at gitbucket.core.service.MergeService$MergeCacheInfo.$anonfun$rebase$3(MergeService.scala:709)
at gitbucket.core.service.MergeService$MergeCacheInfo.$anonfun$rebase$3$adapted(MergeService.scala:708)
at scala.collection.immutable.List.foreach(List.scala:333)
at gitbucket.core.service.MergeService$MergeCacheInfo.$anonfun$rebase$2(MergeService.scala:708)
at gitbucket.core.service.MergeService$MergeCacheInfo.$anonfun$rebase$2$adapted(MergeService.scala:707)
at scala.util.Using$.resource(Using.scala:261)
at gitbucket.core.service.MergeService$MergeCacheInfo.rebase(MergeService.scala:707)
at gitbucket.core.service.MergeService.mergeWithRebase(MergeService.scala:93)
at gitbucket.core.service.MergeService.mergeWithRebase$(MergeService.scala:81)
at gitbucket.core.controller.PullRequestsController.mergeWithRebase(PullRequestsController.scala:20)
at gitbucket.core.service.MergeService.mergeGitRepository(MergeService.scala:511)
at gitbucket.core.service.MergeService.$anonfun$mergePullRequest$3(MergeService.scala:350)
at scala.util.Using$.resource(Using.scala:261)
at gitbucket.core.service.MergeService.$anonfun$mergePullRequest$2(MergeService.scala:339)
at scala.Option.map(Option.scala:242)
at gitbucket.core.service.MergeService.$anonfun$mergePullRequest$1(MergeService.scala:337)
at gitbucket.core.util.LockUtil$.lock(LockUtil.scala:30)
at gitbucket.core.service.MergeService.mergePullRequest(MergeService.scala:470)
at gitbucket.core.service.MergeService.mergePullRequest$(MergeService.scala:324)
at gitbucket.core.controller.PullRequestsController.mergePullRequest(PullRequestsController.scala:20)
at gitbucket.core.controller.PullRequestsControllerBase.$anonfun$$init$$64(PullRequestsController.scala:363)
at gitbucket.core.controller.PullRequestsControllerBase.$anonfun$$init$$64$adapted(PullRequestsController.scala:362)
at scala.Option.flatMap(Option.scala:283)
at gitbucket.core.controller.PullRequestsControllerBase.$anonfun$$init$$63(PullRequestsController.scala:362)
at gitbucket.core.controller.Context.withLoginAccount(ControllerBase.scala:356)
at gitbucket.core.controller.PullRequestsControllerBase.$anonfun$$init$$62(PullRequestsController.scala:361)
at gitbucket.core.util.WritableUsersAuthenticator.$anonfun$writableUsersOnly$2(Authenticator.scala:130)
at gitbucket.core.util.WritableUsersAuthenticator.$anonfun$authenticate$8(Authenticator.scala:138)
at scala.Option.map(Option.scala:242)
at gitbucket.core.util.WritableUsersAuthenticator.authenticate(Authenticator.scala:136)
at gitbucket.core.util.WritableUsersAuthenticator.$anonfun$writableUsersOnly$1(Authenticator.scala:130)
at gitbucket.core.controller.ValidationSupport.$anonfun$post$3(ValidationSupport.scala:25)
at org.scalatra.forms.FormSupport.validate(FormSupport.scala:14)
at org.scalatra.forms.FormSupport.validate$(FormSupport.scala:8)
at gitbucket.core.controller.ControllerBase.validate(ControllerBase.scala:38)
at gitbucket.core.controller.ValidationSupport.$anonfun$post$1(ValidationSupport.scala:25)
at org.scalatra.ScalatraBase.liftAction(ScalatraBase.scala:282)
at org.scalatra.ScalatraBase.$anonfun$invoke$1(ScalatraBase.scala:276)
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:275)
at org.scalatra.ScalatraBase.invoke$(ScalatraBase.scala:274)
at gitbucket.core.controller.ControllerBase.invoke(ControllerBase.scala:38)
at org.scalatra.ScalatraBase.$anonfun$runRoutes$3(ScalatraBase.scala:250)
at scala.Option.flatMap(Option.scala:283)
at org.scalatra.ScalatraBase.$anonfun$runRoutes$1(ScalatraBase.scala:248)
at scala.collection.immutable.Stream.flatMap(Stream.scala:204)
at org.scalatra.ScalatraBase.runRoutes(ScalatraBase.scala:247)
at org.scalatra.ScalatraBase.runRoutes$(ScalatraBase.scala:245)
at gitbucket.core.controller.ControllerBase.runRoutes(ControllerBase.scala:38)
at org.scalatra.ScalatraBase.runActions$1(ScalatraBase.scala:169)
at org.scalatra.ScalatraBase.$anonfun$executeRoutes$6(ScalatraBase.scala:181)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
at org.scalatra.ScalatraBase.cradleHalt(ScalatraBase.scala:201)
at org.scalatra.ScalatraBase.executeRoutes(ScalatraBase.scala:181)
at org.scalatra.ScalatraBase.executeRoutes$(ScalatraBase.scala:150)
at gitbucket.core.controller.ControllerBase.executeRoutes(ControllerBase.scala:38)
at org.scalatra.ScalatraBase.$anonfun$handle$1(ScalatraBase.scala:123)
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:123)
at org.scalatra.ScalatraBase.handle$(ScalatraBase.scala:119)
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 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:575)
at scala.collection.IterableOnceOps.foreach$(IterableOnce.scala:573)
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:193)
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)
at gitbucket.core.servlet.ControllerFilter.doFilter(CompositeScalatraFilter.scala:31)
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:193)
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)
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:172)
at scala.Option.getOrElse(Option.scala:201)
at org.scalatra.ScalatraBase.$anonfun$executeRoutes$3(ScalatraBase.scala:172)
at scala.Option.getOrElse(Option.scala:201)
at org.scalatra.ScalatraBase.runActions$1(ScalatraBase.scala:172)
at org.scalatra.ScalatraBase.$anonfun$executeRoutes$6(ScalatraBase.scala:181)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
at org.scalatra.ScalatraBase.cradleHalt(ScalatraBase.scala:201)
at org.scalatra.ScalatraBase.executeRoutes(ScalatraBase.scala:181)
at org.scalatra.ScalatraBase.executeRoutes$(ScalatraBase.scala:150)
at gitbucket.core.controller.ControllerBase.executeRoutes(ControllerBase.scala:38)
at org.scalatra.ScalatraBase.$anonfun$handle$1(ScalatraBase.scala:123)
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:123)
at org.scalatra.ScalatraBase.handle$(ScalatraBase.scala:119)
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:193)
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)
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:207)
at slick.JdbcProfileBlockingSession$BlockingSession.withTransaction(TransactionalJdbcBackend.scala:26)
at com.github.takezoe.slick.blocking.BlockingJdbcProfile$BlockingAPI$BlockingDatabase.$anonfun$withTransaction$1(BlockingProfile.scala:207)
at com.github.takezoe.slick.blocking.BlockingJdbcProfile$BlockingAPI$BlockingDatabase.withSession(BlockingProfile.scala:200)
at com.github.takezoe.slick.blocking.BlockingJdbcProfile$BlockingAPI$BlockingDatabase.withTransaction(BlockingProfile.scala:207)
at gitbucket.core.servlet.TransactionFilter.doFilter(TransactionFilter.scala:30)
at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:201)
at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1626)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:552)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.StatisticsHandler.handle(StatisticsHandler.java:181)
at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:59)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.Server.handle(Server.java:516)
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
at java.base/java.lang.Thread.run(Thread.java:834)

@takezoe
Copy link
Member

takezoe commented Oct 22, 2023

I can't reproduce this error. Could you give more info? Or it would be great if you can show how to reproduce the error on a fresh installation of GitBucket.

@OscarS1969
Copy link
Author

Hello takezoe, the error cannot be reproduced by us either, but occurs sporadically and rarely in different repositories. If it occurs, we can only merge the pull request via the git command line. The next pull request can then be merged again in the same repository via GitBucket. It seems to be due to the configuration of the pull request, but we didn't notice anything unusual.

@takezoe
Copy link
Member

takezoe commented Nov 14, 2023

Thank you for sharing. Hmm... I see... It may not be easy to find the root cause, but will take a look.

@takezoe takezoe added the bug label Nov 14, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

2 participants