MCPcopy Create free account
hub / github.com/e2wugui/zeze / install

Method install

ZezeJava/ZezeJava/src/main/java/Zeze/Hot/HotManager.java:340–510  ·  view source on GitHub ↗
(List<String> namespaces, boolean atomicAll)

Source from the content-addressed store, hash-verified

338 }
339
340 private ArrayList<HotModule> install(List<String> namespaces, boolean atomicAll) throws Exception {
341 logger.info("________________ install ________________ {}", namespaces);
342 try {
343 upgrading = true;
344 // 首先查询得到现有的模块,不存在也加入null。
345 var exists = new ArrayList<HotModule>(namespaces.size());
346 for (var namespace : namespaces)
347 exists.add(modules.get(namespace));
348 // 锁外执行stopBefore
349 for (var exist : exists) {
350 if (null != exist)
351 exist.stopBefore();
352 }
353 var result = new ArrayList<HotModule>();
354 try (var ignored = enterWriteLock()) {
355 var app = zeze.getAppBase();
356 // 先保存现有的数据
357 app.getZeze().checkpointRun();
358 // remove
359 for (var namespace : namespaces) {
360 modules.remove(namespace);
361 }
362 // reverse stop
363 var reverseIndex = exists.size() - 1;
364 try {
365 for (; reverseIndex >= 0; --reverseIndex) {
366 var exist = exists.get(reverseIndex);
367 if (exist != null)
368 exist.stop();
369 }
370 } catch (Throwable ex) {
371 logger.error("stop modules {}", exists, ex);
372 recoverModules(exists, reverseIndex); // 此时的恢复,schemas没有变化,不需要重新alter。
373 return null;
374 }
375
376 var txn = new HotTransaction("HotManager.install");
377 app.getZeze().__install_prepare__();
378 var old = app.getZeze().__upgrade_schemas__(loadSchemas());
379
380 var mainRollbackAction = new MainRollbackAction(zeze, exists, old);
381 txn.whileRollback(mainRollbackAction);
382
383 ArrayList<JarFile> hotJarFiles;
384 ArrayList<HotModule> newModules;
385 try {
386 // install
387 for (var namespace : namespaces) {
388 result.add(_install(namespace, txn));
389 }
390 // batch load redirect
391 var iModules = createModuleInstance(result);
392 txn.whileRollback(() -> {
393 for (var iModule : iModules)
394 iModule.UnRegister();
395 });
396 app.getZeze().__install_alter__();
397 mainRollbackAction.setHasAlter();

Callers 1

installReadiesMethod · 0.95

Calls 15

enterWriteLockMethod · 0.95
recoverModulesMethod · 0.95
loadSchemasMethod · 0.95
whileRollbackMethod · 0.95
_installMethod · 0.95
createModuleInstanceMethod · 0.95
setHasAlterMethod · 0.95
commitMethod · 0.95
rollbackMethod · 0.95
retreatMethod · 0.95
resetHotMethod · 0.95
getAppBaseMethod · 0.80

Tested by

no test coverage detected