首页 > 解决方案 > 有没有办法在不重新启动 Bitbucket 的情况下更新 Bitbucket 插件?

问题描述

我想更改用于镜像的 Bitbucket Server Repository Hook ( 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/84或https://github.com/ef-labs/stash-hook-镜子/问题/83

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

另一个似乎可行的解决方法是重命名类和文件以包含一个版本作为后缀:like MirrorRepositoryHook.javato MirrorRepositoryHookV331.java.

有更优雅的解决方案吗?

标签: javabitbucketbitbucket-serveratlassian-plugin-sdk

解决方案


推荐阅读