(@NotNull Function<Bean, Bean> retreatFunc)
| 108 | } |
| 109 | |
| 110 | @Override |
| 111 | public void upgrade(@NotNull Function<Bean, Bean> retreatFunc) throws Exception { |
| 112 | // 如果需要,重建_tlocal内存表的用户设置的bean。 |
| 113 | var retreats = new ArrayList<Retreat>(); |
| 114 | _tlocal.walkMemory((account, locals) -> { |
| 115 | for (var login : locals.getLogins()) { |
| 116 | var clientId = login.getKey(); |
| 117 | for (var e : login.getValue().getDatas()) { |
| 118 | var retreatBean = retreatFunc.apply(e.getValue().getAny().getBean()); |
| 119 | if (retreatBean != null) { |
| 120 | beanFactory.register(retreatBean); // 覆盖beanFactory. |
| 121 | retreats.add(new Retreat(account, clientId, e.getKey(), retreatBean)); |
| 122 | if (retreats.size() > 50) { |
| 123 | saveRetreats(retreats); |
| 124 | retreats.clear(); |
| 125 | } |
| 126 | } |
| 127 | } |
| 128 | } |
| 129 | return true; |
| 130 | }); |
| 131 | if (!retreats.isEmpty()) |
| 132 | saveRetreats(retreats); |
| 133 | } |
| 134 | |
| 135 | private void saveRetreats(@NotNull ArrayList<Retreat> retreats) { |
| 136 | // 【注意,这里不使用 Task.call or run,因为这个在热更流程中调用,避免去使用hotGuard。】 |
nothing calls this directly
no test coverage detected