• @guqing guqing opened issue #5872 in halo-dev/halo

    Your current Halo version

    2.15.1

    Describe this feature

    目前插件依赖中关于被依赖插件的停止或启动存在一些问题:

    1. 以应用市场插件为例,应用市场插件被 A 和 B 插件依赖,且都处于启动状态
    2. 停止应用市场插件后会自动停止 A 和 B,然后点击启动 A 会自动启动 B 插件和应用市场插件
    3. 在 Reconciler 中会去监听内存中插件的实际状态并修改 spec.enabled 这违反了 spec 的初衷,spec 是用户期望如果内存中状态不符合应该协调到期望状态

    重构点:

    1. 插件的停止和启动前应该加入依赖检测,如果有插件依赖了当前被停止的插件则不允许停止当前插件,如果插件启动时所依赖的插件没有启动应该拒绝启动并给用户提示
    2. 不应该监听内存中插件状态并去修改 spec 来适应内存中的状态,而是要以用户期望状态为准

    以升级步骤为例,应该的逻辑是:

    1. 检测依赖插件,比如已经启动的 A,B
    2. 更新 A 和 B 的 annotations 中加入 reload 标记
    3. 检测依赖插件,有就抛出异常 requeue(可能因为抛出异常 requeue 后进入第4步),没有则 reload 应用市场,stop ,unload,load 等步骤
    4. A 和 B 中途可能会进入执行(由于 3 步骤让出了执行权),检测到 reload 标记,执行 reload 操作,但是需要检测依赖插件是否正常,如果没有启动则抛出异常等待。
    5. 应用市场启动完成了,reconciler 轮到 A 执行,检测到 reload 标记执行 reload 等逻辑重复到第3步

    如此不在需要停止插件时检测依赖并记录到当前插件然后又再启动后回复依赖插件的状态,且不需要去以内存中实际状态为主来修改插件 spec.enabled,spec.enabled 是用户期望,无论如何要以用户期望为准,避免出现升级应用市场插件时其他插件被停止而没有自动启动的问题

    Additional information

    /kind improvement
    /area core
    /milestone 2.16.x
    /assign @JohnNiang

    0 0
  • @guqing guqing commented on issue #33 in halo-dev/plugin-starter

    暂时放弃这个依赖了,自己实现功能了,不理它先 想问一下怎么样在插件理做免登录验证的接口

    参考文档 聚合角色
    通过定义角色模板并聚合到 anonymous 角色上实现免登陆

    0 0
  • @guqing guqing pushed to main in halo-dev/docs

    Below is the list of commits:

    • doc: add doc for template head processor extension point (#348) (b8b5a4e)
    0 0
  • @guqing guqing closed pull request #348 in halo-dev/docs

    What this PR does?

    添加 TemplateHeadProcessor 扩展点的文档

    开源之夏已经开始报名,但是发现缺少此文档可能会对报名者造成困扰

    None
    
    0 0
  • @guqing guqing commented on issue #33 in halo-dev/plugin-starter

    Wechat-Group/WxJava 引入这个的企业微信开发,一写相关逻辑就会报错

    建议提供复现步骤而不是这样笼统的描述,我怎么复现呢

    0 0
  • @guqing guqing opened pull request #348 in halo-dev/docs

    What this PR does?

    添加 TemplateHeadProcessor 扩展点的文档

    开源之夏已经开始报名,但是发现缺少此文档可能会对报名者造成困扰

    None
    
    0 0
  • @guqing guqing created branch docs/template-head-process in guqing/docs

    guqing/docs

    The open-source repo for docs.halo.run

    0 0
  • @guqing guqing commented on issue #33 in halo-dev/plugin-starter

    /kind needs-information

    0 0
  • @guqing guqing commented on issue #33 in halo-dev/plugin-starter

    文档问题建议到 halo-dev/docs 提交 issue,至于你说的引入第三方依赖报错,建议提供日志,以及引入的是什么依赖,目前无法复现

    0 0
  • @guqing guqing commented on issue #5870 in halo-dev/halo

    /area core
    /milestone 2.16.x
    /assign

    0 0