c7845cd69ab5b5a268654433d70d545a14c80261
\345\270\270\350\247\201\351\227\256\351\242\230/\345\272\224\347\224\250\345\270\202\345\234\272\345\256\211\350\243\205app\345\274\202\345\270\270\346\216\222\346\237\245.md
| ... | ... | @@ -5,6 +5,32 @@ |
| 5 | 5 | |
| 6 | 6 | 由上图死锁导致整个流程卡住,安装app的流程无法继续,导致应用市场安装app异常。 |
| 7 | 7 | |
| 8 | +下面的是详细的业务分析 |
|
| 9 | +[[http://iidp.chinasie.com:9999/iidpminio/issure/lock-1.png]] |
|
| 10 | +[[http://iidp.chinasie.com:9999/iidpminio/issure/lock-2.png]] |
|
| 11 | +[[http://iidp.chinasie.com:9999/iidpminio/issure/lock-4.jpg]] |
|
| 12 | +可以发现数据库存在很多死锁 |
|
| 13 | + |
|
| 14 | +[[http://iidp.chinasie.com:9999/iidpminio/issure/lock-3.png]] |
|
| 15 | +进一步可以查看相关代码 |
|
| 16 | + |
|
| 17 | +[[http://iidp.chinasie.com:9999/iidpminio/issure/lock-5.jpg]] |
|
| 18 | + |
|
| 19 | +上图显示如果锁表以后,程序一直卡在 preepare write final meta to redis 以及 end write final meta to redis |
|
| 20 | +结合代码发现恰好卡在修改表结构这里。 |
|
| 21 | +```java |
|
| 22 | + // 加载配置 |
|
| 23 | + AppLifecycleFacade.initProcess(meta, MetaConstant.BUSSINESS, allInstallAppList); |
|
| 24 | + AppLifecycleFacade.initShard(); |
|
| 25 | + // 创建表结构. 修改表结构,可能会导致锁表。 |
|
| 26 | + AppLifecycleFacade.prepareAutoInitModels(appGroupContainer, allInstallAppList); |
|
| 27 | + // 根据全量模型生成业务种子数据,前端目录要与下载一致 |
|
| 28 | + SeedUtils.loadSeedData(meta, allInstallAppList, appGroupContainer,MetaConstant.BASE_FRONTEND); |
|
| 29 | + // 加载文件种子数据 |
|
| 30 | + AppLifecycleFacade.loadFileSeed(meta, allInstallAppList); |
|
| 31 | +``` |
|
| 32 | + |
|
| 33 | + |
|
| 8 | 34 | ##### 2,调用distribute安装接口异常 |
| 9 | 35 | |
| 10 | 36 | [[http://iidp.chinasie.com:9999/iidpminio/issure/distributed-install.png]] |