@@ -311,12 +311,34 @@ func (me *CbsService) ResizeDisk(ctx context.Context, diskId string, diskSize in
311
311
ratelimit .Check (request .GetAction ())
312
312
response , err := me .client .UseCbsClient ().ResizeDisk (request )
313
313
if err != nil {
314
- log .Printf ("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n " ,
315
- logId , request .GetAction (), request .ToJsonString (), err .Error ())
314
+ log .Printf ("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n " , logId , request .GetAction (), request .ToJsonString (), err .Error ())
316
315
return err
317
316
}
318
- log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " ,
319
- logId , request .GetAction (), request .ToJsonString (), response .ToJsonString ())
317
+
318
+ log .Printf ("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n " , logId , request .GetAction (), request .ToJsonString (), response .ToJsonString ())
319
+
320
+ err = resource .Retry (tccommon .ReadRetryTimeout , func () * resource.RetryError {
321
+ storage , e := me .DescribeDiskById (ctx , diskId )
322
+ if e != nil {
323
+ return tccommon .RetryError (e )
324
+ }
325
+
326
+ if * storage .DiskState == CBS_STORAGE_STATUS_EXPANDING {
327
+ return resource .RetryableError (fmt .Errorf ("cbs storage status is %s" , * storage .DiskState ))
328
+ }
329
+
330
+ if * storage .DiskSize != uint64 (diskSize ) {
331
+ return resource .RetryableError (fmt .Errorf ("waiting for cbs size changed to %d, now %d" , diskSize , * storage .DiskSize ))
332
+ }
333
+
334
+ return nil
335
+ })
336
+
337
+ if err != nil {
338
+ log .Printf ("[CRITAL]%s resize cbs failed, reason:%s\n " , logId , err .Error ())
339
+ return err
340
+ }
341
+
320
342
return nil
321
343
}
322
344
0 commit comments