@@ -86,6 +86,11 @@ func (s *Service) migrateDatabase(req *restful.Request, resp *restful.Response)
86
86
return
87
87
}
88
88
89
+ // refresh tenants, ignore refresh tenants error
90
+ if err = logics .RefreshTenants (s .CoreAPI , s .db ); err != nil {
91
+ blog .Errorf ("refresh tenant failed, err: %v" , err )
92
+ }
93
+
89
94
if err = s .createWatchDBChainCollections (kit ); err != nil {
90
95
blog .Errorf ("create watch db chain collections failed, err: %v" , err )
91
96
resp .WriteError (http .StatusInternalServerError , & metadata.RespError {
@@ -94,11 +99,6 @@ func (s *Service) migrateDatabase(req *restful.Request, resp *restful.Response)
94
99
return
95
100
}
96
101
97
- // refresh tenants, ignore refresh tenants error
98
- if err = logics .RefreshTenants (s .CoreAPI ); err != nil {
99
- blog .Errorf ("refresh tenant failed, err: %v" , err )
100
- }
101
-
102
102
resp .WriteEntity (metadata .NewSuccessResp (result ))
103
103
}
104
104
@@ -126,14 +126,12 @@ func (s *Service) createWatchDBChainCollections(kit *rest.Kit) error {
126
126
}
127
127
128
128
err = tenant .ExecForAllTenants (func (tenantID string ) error {
129
- // TODO 在新增租户初始化时同时增加watch相关表,并刷新cache的tenant
130
129
return s .addTenantWatchToken (kit .NewKit ().WithTenant (tenantID ), cursorType , key )
131
130
})
132
131
if err != nil {
133
132
return err
134
133
}
135
134
136
- // TODO 在新增DB时同时增加db relation和token数据
137
135
err = s .createWatchTokenForEventKey (kit , key , watchDBToDBRelation )
138
136
if err != nil {
139
137
return err
@@ -321,16 +319,20 @@ func (s *Service) createWatchIndexes(kit *rest.Kit, cursorType watch.CursorType,
321
319
existIdxMap [index .Name ] = true
322
320
}
323
321
322
+ createIndexes := make ([]daltypes.Index , 0 )
324
323
for _ , index := range indexes {
325
- if _ , exist := existIdxMap [index .Name ]; exist {
326
- continue
324
+ if _ , exist := existIdxMap [index .Name ]; ! exist {
325
+ createIndexes = append ( createIndexes , index )
327
326
}
327
+ }
328
+ if len (createIndexes ) == 0 {
329
+ return nil
330
+ }
328
331
329
- err = s .watchDB .Shard (kit .ShardOpts ()).Table (key .ChainCollection ()).CreateIndex (s .ctx , index )
330
- if err != nil && ! mongodb .IsDuplicatedError (err ) {
331
- blog .Errorf ("create indexes for table %s failed, err: %v, rid: %s" , key .ChainCollection (), err , kit .Rid )
332
- return err
333
- }
332
+ err = s .watchDB .Shard (kit .ShardOpts ()).Table (key .ChainCollection ()).BatchCreateIndexes (s .ctx , createIndexes )
333
+ if err != nil && ! mongodb .IsDuplicatedError (err ) {
334
+ blog .Errorf ("create indexes for table %s failed, err: %v, rid: %s" , key .ChainCollection (), err , kit .Rid )
335
+ return err
334
336
}
335
337
return nil
336
338
}
0 commit comments