@@ -311,12 +311,34 @@ func (me *CbsService) ResizeDisk(ctx context.Context, diskId string, diskSize in
311311 ratelimit .Check (request .GetAction ())
312312 response , err := me .client .UseCbsClient ().ResizeDisk (request )
313313 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 ())
316315 return err
317316 }
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+
320342 return nil
321343}
322344
0 commit comments