有没有办法在不重启 Bitbucket 的情况下更新 Bitbucket 插件?

时间:2021-04-22 14:53:00

标签: java bitbucket bitbucket-server atlassian-plugin-sdk

我想对用于镜像的 Bitbucket 服务器存储库挂钩 (https://github.com/ef-labs/stash-hook-mirror) 进行更改,然后删除原始版本并安装更新版本。

但是,在进行此类更改后,Bitbucket 开始给出 java.lang.ClassCastException 错误,堆栈跟踪如下所示:

java.lang.ClassCastException: com.englishtown.bitbucket.hook.MirrorRequest cannot be cast to com.englishtown.bitbucket.hook.MirrorRequest
        at com.atlassian.stash.internal.concurrent.HazelcastBucketedExecutor.schedule(HazelcastBucketedExecutor.java:63)
        at com.atlassian.stash.internal.concurrent.DelegatingInternalBucketedExecutor.schedule(DelegatingInternalBucketedExecutor.java:24)
        at com.englishtown.bitbucket.hook.MirrorRepositoryHook.lambda$schedulePushes$0(MirrorRepositoryHook.java:177)
        at java.util.ArrayList.forEach(ArrayList.java:1259)
        at com.englishtown.bitbucket.hook.MirrorRepositoryHook.schedulePushes(MirrorRepositoryHook.java:177)
        at com.englishtown.bitbucket.hook.MirrorRepositoryHook.validate(MirrorRepositoryHook.java:138)
        at com.atlassian.stash.internal.hook.repository.DefaultRepositoryHookService.validateSettings(DefaultRepositoryHookService.java:896)
        at com.atlassian.stash.internal.hook.repository.DefaultRepositoryHookService.lambda$enable$0(DefaultRepositoryHookService.java:203)
        at java.util.Optional.ifPresent(Optional.java:159)

似乎 BitBucket 会缓存插件中的数据,并且在删除插件后不会清除它。这是它的一个常见问题 - 请参阅这些票证:https://github.com/ef-labs/stash-hook-mirror/issues/84https://github.com/ef-labs/stash-hook-mirror/issues/83

建议的解决方法是重新启动 BitBucket 实例,它可以工作。

另一种似乎有效的解决方法是重命名类和文件以包含一个版本作为后缀:比如 MirrorRepositoryHook.javaMirrorRepositoryHookV331.java

有更优雅的解决方案吗?

0 个答案:

没有答案