4

运行 ColdBox 4.2,我们在重新初始化后看到此错误,但仅在一个特定的处理程序 cfc 上。如果我们重新初始化几次,它最终会消失,这听起来像是一种竞争条件。

我们想直接做extends="coldbox.system.EventHandler"而不是让框架混合处理程序方法,但后来我们开始看到另一个错误:

错误构建:myApp.handlers.admin.report -> init 函数的 CONTROLLER 参数是必需的,但未传入。带有构造函数参数:{}

类似地,如果我们重新初始化几次,这个错误就会消失,直到我们得到一个在请求中途进入之前完成烘焙的错误。

我们无法在非产品系统上重现这一点,可能是由于负载大大降低。

有没有人遇到过类似的事情并想出了一种在负载下优雅地重新启动框架的方法?

4

1 回答 1

3

我实际上设法在重新初始化期间合理可靠地重现竞争条件错误并将其发布为问题COLDBOX-307,几乎响应是不要在生产中使用 fwreinit 这是正确的,我们切换到使用我们自己的方法调用applicationStop在应用程序.cfc 并解决了我们在使用 fwreinit 时遇到的问题。

使用 applicationStop 时需要注意的一件事,它不是线程安全的(可能不是正确的术语),这意味着所有当前正在运行的请求的应用程序范围将在调用时再见,因此您可能会因重新启动这种方式而遇到一些奇怪的错误。

于 2017-05-10T19:53:29.473 回答