kaakaa Blog

この世は極楽 空にはとんぼ

Gitbucket1.2で500エラー

会社でGitbucketを試用しているのですが、
ある日、TOPページにアクセスしようとすると500エラーを返すようになりました。

どうやら、メンバがSourceTreeからGitbucketに対して
プッシュやタグ付けをしていたら、500エラーを返すようになった模様。

500エラーを返すのは下記ページのみっぽい。

  • Gitbucketトップページ
  • 上記メンバのPublic Activityページ

スタックトレースは以下。

HTTPステータス 500 - String index out of range: 40
 
type 例外レポート
 
メッセージ String index out of range: 40
 
説明 The server encountered an internal error that prevented it from fulfilling this request.
 
例外
 
java.lang.StringIndexOutOfBoundsException: String index out of range: 40
java.lang.String.substring(Unknown Source)
helper.html.activities$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$3.apply(activities.template.scala:38)
helper.html.activities$$anonfun$apply$1$$anonfun$apply$2$$anonfun$apply$3.apply(activities.template.scala:36)
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:105)
scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
scala.collection.mutable.ArrayOps$ofRef.map(ArrayOps.scala:105)
helper.html.activities$$anonfun$apply$1$$anonfun$apply$2.apply(activities.template.scala:36)
helper.html.activities$$anonfun$apply$1$$anonfun$apply$2.apply(activities.template.scala:26)
scala.Option.map(Option.scala:145)
helper.html.activities$$anonfun$apply$1.apply(activities.template.scala:26)
helper.html.activities$$anonfun$apply$1.apply(activities.template.scala:22)
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
scala.collection.immutable.List.foreach(List.scala:318)
scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
scala.collection.AbstractTraversable.map(Traversable.scala:105)
helper.html.activities$.apply(activities.template.scala:22)
html.index$.apply(index.template.scala:26)
app.IndexControllerBase$$anonfun$1.apply(IndexController.scala:12)
app.IndexControllerBase$$anonfun$1.apply(IndexController.scala:12)
org.scalatra.ScalatraBase$class.org$scalatra$ScalatraBase$$liftAction(ScalatraBase.scala:183)
org.scalatra.ScalatraBase$$anonfun$invoke$1.apply(ScalatraBase.scala:178)
org.scalatra.ScalatraBase$$anonfun$invoke$1.apply(ScalatraBase.scala:178)
org.scalatra.ApiFormats$class.withRouteMultiParams(ApiFormats.scala:175)
app.ControllerBase.withRouteMultiParams(ControllerBase.scala:13)
org.scalatra.ScalatraBase$class.invoke(ScalatraBase.scala:177)
app.ControllerBase.org$scalatra$json$JsonSupport$$super$invoke(ControllerBase.scala:13)
org.scalatra.json.JsonSupport$$anonfun$invoke$1.apply(JsonSupport.scala:65)
org.scalatra.json.JsonSupport$$anonfun$invoke$1.apply(JsonSupport.scala:57)
org.scalatra.ApiFormats$class.withRouteMultiParams(ApiFormats.scala:175)
app.ControllerBase.withRouteMultiParams(ControllerBase.scala:13)
org.scalatra.json.JsonSupport$class.invoke(JsonSupport.scala:57)
app.ControllerBase.invoke(ControllerBase.scala:13)
org.scalatra.ScalatraBase$$anonfun$runRoutes$1$$anonfun$apply$3.apply(ScalatraBase.scala:163)
org.scalatra.ScalatraBase$$anonfun$runRoutes$1$$anonfun$apply$3.apply(ScalatraBase.scala:162)
scala.Option.flatMap(Option.scala:170)
org.scalatra.ScalatraBase$$anonfun$runRoutes$1.apply(ScalatraBase.scala:162)
org.scalatra.ScalatraBase$$anonfun$runRoutes$1.apply(ScalatraBase.scala:161)
scala.collection.immutable.Stream.flatMap(Stream.scala:442)
org.scalatra.ScalatraBase$class.runRoutes(ScalatraBase.scala:161)
app.ControllerBase.runRoutes(ControllerBase.scala:13)
org.scalatra.ScalatraBase$class.executeRoutes(ScalatraBase.scala:114)
app.ControllerBase.executeRoutes(ControllerBase.scala:13)
org.scalatra.ScalatraBase$$anonfun$handle$1.apply$mcV$sp(ScalatraBase.scala:80)
org.scalatra.ScalatraBase$$anonfun$handle$1.apply(ScalatraBase.scala:80)
org.scalatra.ScalatraBase$$anonfun$handle$1.apply(ScalatraBase.scala:80)
scala.util.DynamicVariable.withValue(DynamicVariable.scala:57)
org.scalatra.DynamicScope$class.withResponse(DynamicScope.scala:80)
app.ControllerBase.withResponse(ControllerBase.scala:13)
org.scalatra.DynamicScope$$anonfun$withRequestResponse$1.apply(DynamicScope.scala:60)
scala.util.DynamicVariable.withValue(DynamicVariable.scala:57)
org.scalatra.DynamicScope$class.withRequest(DynamicScope.scala:71)
app.ControllerBase.withRequest(ControllerBase.scala:13)
org.scalatra.DynamicScope$class.withRequestResponse(DynamicScope.scala:59)
app.ControllerBase.withRequestResponse(ControllerBase.scala:13)
org.scalatra.ScalatraBase$class.handle(ScalatraBase.scala:78)
app.ControllerBase.org$scalatra$servlet$ServletBase$$super$handle(ControllerBase.scala:13)
org.scalatra.servlet.ServletBase$class.handle(ServletBase.scala:43)
app.ControllerBase.handle(ControllerBase.scala:13)
org.scalatra.ScalatraFilter$$anonfun$doFilter$1.apply$mcV$sp(ScalatraFilter.scala:33)
org.scalatra.ScalatraFilter$$anonfun$doFilter$1.apply(ScalatraFilter.scala:33)
org.scalatra.ScalatraFilter$$anonfun$doFilter$1.apply(ScalatraFilter.scala:33)
scala.util.DynamicVariable.withValue(DynamicVariable.scala:57)
org.scalatra.ScalatraFilter$class.doFilter(ScalatraFilter.scala:32)
app.ControllerBase.doFilter(ControllerBase.scala:13)
servlet.TransactionFilter$$anonfun$doFilter$1.apply$mcV$sp(TransactionFilter.scala:30)
servlet.TransactionFilter$$anonfun$doFilter$1.apply(TransactionFilter.scala:28)
servlet.TransactionFilter$$anonfun$doFilter$1.apply(TransactionFilter.scala:28)
scala.slick.session.BaseSession.withTransaction(Session.scala:236)
scala.slick.session.Database$$anonfun$withTransaction$2.apply(Database.scala:58)
scala.util.DynamicVariable.withValue(DynamicVariable.scala:57)
scala.slick.session.Database$$anonfun$withSession$1.apply(Database.scala:46)
scala.slick.session.Database$$anonfun$withSession$1.apply(Database.scala:46)
scala.slick.session.Database.withSession(Database.scala:38)
scala.slick.session.Database.withSession(Database.scala:46)
scala.slick.session.Database.withTransaction(Database.scala:58)
servlet.TransactionFilter.doFilter(TransactionFilter.scala:28)
注意 原因のすべてのスタックトレースは、Apache Tomcat/7.0.42のログに記録されています
 
Apache Tomcat/7.0.42

スタックトレースからソースを参照してみると、
コミットへのリンクを生成する所でエラーが出ている様子。

SourceTreeだから起きる事象なのかは不明。

GitbucketのDB内のActivityテーブルの中が見れれば、なんとなく分かりそうだけど、
DB力が足りずにぐぬぬってなってる。