1

上周发生了一些奇怪的事情,让我在同龄人面前丢了脸。我还没有时间找出根本原因,但现在我正在深入研究。上周星期四晚上,经过一个月左右的正常运行时间后,我用 Compojure 编写的几乎所有 Web 服务实例都在同时,在依赖它的产品发布前 5 天。想象。

Clojure 已经被视为“边缘”而受到怀疑,它立即受到指责,正如您可能想象的那样,这引起了很多变化。烧伤。我用 Java 重写了我的服务并准备好了,但 QA 说不行。什么样的恶梦。现在我有几分钟的时间,我真的想知道社区是否可以提供帮助。

失败。这是一个带有意外 500 错误的堆栈跟踪:

2013-09-26 18:00:55.934:WARN:oejs.ServletHandler:qtp1525259451-38221: Error for /path/to/api
java.lang.NoClassDefFoundError: clout/core$re_groups_STAR_$iter_242246$fn247$fn_248
at clout.core$re_groups_STAR_$iter_242246$fn_247.invoke(core.clj:23)
at clojure.lang.LazySeq.sval(LazySeq.java:42)
at clojure.lang.LazySeq.seq(LazySeq.java:60)
at clojure.lang.RT.seq(RT.java:484)
at clojure.core$seq.invoke(core.clj:133)
at clojure.core$map$fn__4207.invoke(core.clj:2479)
at clojure.lang.LazySeq.sval(LazySeq.java:42)
at clojure.lang.LazySeq.seq(LazySeq.java:60)
at clojure.lang.RT.seq(RT.java:484)
at clojure.core$seq.invoke(core.clj:133)
at clojure.core$map$fn__4211.invoke(core.clj:2490)
at clojure.lang.LazySeq.sval(LazySeq.java:42)
at clojure.lang.LazySeq.seq(LazySeq.java:60)
at clojure.lang.RT.seq(RT.java:484)
at clojure.core$seq.invoke(core.clj:133)
at clojure.core.protocols$seq_reduce.invoke(protocols.clj:30)
at clojure.core.protocols$fn__6026.invoke(protocols.clj:54)
at clojure.core.protocols$fn_5979$G5974_5992.invoke(protocols.clj:13)
at clojure.core$reduce.invoke(core.clj:6177)
at clout.core$assoc_keys_with_groups.invoke(core.clj:54)
at clout.core.CompiledRoute.route_matches(core.clj:84)
at compojure.core$if_route$fn__515.invoke(core.clj:38)
at compojure.core$if_method$fn__508.invoke(core.clj:24)

Prod eng 说:“循环应用程序后,一切正常。”

什么可能导致这样的事情?其他人说,“它看起来像丢失了它的类文件”,但据我所知,我不知道这意味着什么或如何发生......在影响力核心中,引发异常的行看起来像

(defn re-groups*
  "More consistant re-groups that always returns a vector of groups, even if there is only one group."
  [^Matcher matcher]
  (for [i (range (.groupCount matcher))]
      (.group matcher (int (inc i)))))

那么发生了什么?一个错误?托词?有没有人使用 Compojure 应用程序超过几个月没有骑自行车?

4

0 回答 0