\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]]