@@ -232,7 +232,7 @@ func (e *Engine) Create(spdkClient *spdkclient.Client, replicaAddressMap map[str
232232 }
233233
234234 if err := e .ValidateReplicaSize (replicaAddressMap ); err != nil {
235- return nil , err
235+ return nil , errors . Wrapf ( err , "failed to validate replica size during engine creation" )
236236 }
237237
238238 defer func () {
@@ -401,7 +401,7 @@ func (e *Engine) ValidateReplicaSize(replicaAddressMap map[string]string) error
401401 }
402402 replica , err := replicaClient .ReplicaGet (replicaName )
403403 if err != nil {
404- return errors .Wrapf (err , "failed to get replica %v from %v during engine creation " , replicaName , replicaAddr )
404+ return errors .Wrapf (err , "failed to get replica %v from %v" , replicaName , replicaAddr )
405405 }
406406
407407 replicaSizeMap [replicaName ] = replica .SpecSize
@@ -416,7 +416,7 @@ func (e *Engine) ValidateReplicaSize(replicaAddressMap map[string]string) error
416416 }
417417
418418 if expectedSize != replicaSize {
419- return fmt .Errorf ("found different replica sizes during engine creation : %v" , replicaSizeMap )
419+ return fmt .Errorf ("found different replica sizes: %v" , replicaSizeMap )
420420 }
421421 }
422422
@@ -702,26 +702,28 @@ func (e *Engine) reconnectNvmeTcpFrontend(spdkClient *spdkclient.Client) (err er
702702 "port" : e .NvmeTcpFrontend .Port ,
703703 "targetPort" : e .NvmeTcpFrontend .TargetPort ,
704704 }); errUpdateLogger != nil {
705- e .log .WithError (err ).Warn ("Failed to update logger during reconnect frontend" )
705+ e .log .WithError (errUpdateLogger ).Warn ("Failed to update logger during reconnect frontend" )
706706 }
707- e .log .Infof ("Finished reconnecting frontend for engine: %+v" , e )
707+ e .log .Info ("Finished reconnecting frontend for engine" )
708708 }
709709 }()
710710
711+ portStr := strconv .Itoa (int (e .NvmeTcpFrontend .Port ))
712+
711713 // No need to disconnect nvme target and stop expose bdev again
712714 // We already did it in prepareRaidForExpansion
713715 err = spdkClient .StartExposeBdev (
714716 e .NvmeTcpFrontend .Nqn ,
715717 e .Name ,
716718 e .NvmeTcpFrontend .Nguid ,
717719 e .NvmeTcpFrontend .IP ,
718- strconv . Itoa ( int ( e . NvmeTcpFrontend . Port )) ,
720+ portStr ,
719721 )
720722 if err != nil {
721723 return errors .Wrapf (err , "failed to expose bdev during reconnect for engine %v" , e .Name )
722724 }
723725
724- dmDeviceIsBusy , err := e .initiator .StartNvmeTCPInitiator (e .NvmeTcpFrontend .IP , strconv . Itoa ( int ( e . NvmeTcpFrontend . Port )) , true )
726+ dmDeviceIsBusy , err := e .initiator .StartNvmeTCPInitiator (e .NvmeTcpFrontend .IP , portStr , true )
725727 if err != nil {
726728 return errors .Wrapf (err , "failed to start initiator during reconnect for engine %v" , e .Name )
727729 }
@@ -1363,7 +1365,7 @@ func (e *Engine) Expand(spdkClient *spdkclient.Client, size uint64) (retErr erro
13631365 if err != nil {
13641366 return err
13651367 }
1366- defer e .closeRplicaClients (replicaClients )
1368+ defer e .closeReplicaClients (replicaClients )
13671369
13681370 // requireExpansion checks if the expansion is needed and validates the request.
13691371 requireExpansion , err := e .requireExpansion (size , replicaClients )
@@ -1377,32 +1379,24 @@ func (e *Engine) Expand(spdkClient *spdkclient.Client, size uint64) (retErr erro
13771379 }
13781380
13791381 var (
1380- expanded = false
1381- engineErr error
1382+ expanded = false
13821383 )
13831384
13841385 // engineErr will be set when the engine failed to do any non-recoverable operations.
13851386 defer func () {
13861387 if retErr != nil {
1387- e .log .WithError (engineErr ).Errorf ("Engine %s failed to expand" , e .Name )
1388+ e .State = types .InstanceStateError
1389+ e .ErrorMsg = retErr .Error ()
13881390 e .lastExpansionError = errors .Wrap (retErr , "engine failed to expand expansion" ).Error ()
13891391 e .lastExpansionFailedAt = time .Now ().UTC ().Format (time .RFC3339Nano )
1390- }
1391-
1392- if engineErr != nil {
1393- e .State = types .InstanceStateError
1394- e .ErrorMsg = engineErr .Error ()
13951392
13961393 if errUpdateLogger := e .log .UpdateLogger (logrus.Fields {
13971394 "replicaStatusMap" : e .ReplicaStatusMap ,
13981395 }); errUpdateLogger != nil {
13991396 e .log .WithError (errUpdateLogger ).Warn ("Failed to update logger with replica status map during engine creation" )
14001397 }
14011398
1402- e .log .WithError (engineErr ).Errorf ("Engine %s under non-recoverable operation during expansion" , e .Name )
1403-
1404- e .lastExpansionError = errors .Wrap (retErr , "engine under non-recoverable operation" ).Error ()
1405- e .lastExpansionFailedAt = time .Now ().UTC ().Format (time .RFC3339Nano )
1399+ e .log .WithError (retErr ).Errorf ("Engine %s failed to expand" , e .Name )
14061400 }
14071401
14081402 e .finishExpansion (expanded , size )
@@ -1413,30 +1407,22 @@ func (e *Engine) Expand(spdkClient *spdkclient.Client, size uint64) (retErr erro
14131407 if isSuspended {
14141408 defer func () {
14151409 if frontendErr := e .initiator .Resume (); frontendErr != nil {
1416- frontendErr = errors .Wrapf (frontendErr , "failed to resume NVMe initiator during engine %s" , e .Name )
1417- if engineErr != nil {
1418- engineErr = errors .Wrapf (engineErr , "original error; resume failed: %v" , frontendErr )
1419- } else {
1420- engineErr = frontendErr
1421- }
1410+ retErr = multierr .Append (retErr , errors .Wrapf (frontendErr , "original error; resume failed" ))
14221411 }
14231412 }()
14241413 }
14251414 if err != nil {
1426- engineErr = errors .Wrap (err , "prepare raid for expansion failed" )
1427- return err
1415+ return errors .Wrap (err , "prepare raid for expansion failed" )
14281416 }
14291417
14301418 // expand replicas
14311419 if err := e .expandReplicas (replicaClients , spdkClient , size ); err != nil {
1432- engineErr = err
1433- return err
1420+ return errors .Wrap (err , "expand replica failed" )
14341421 }
14351422
14361423 // recreate RAID and reconnect frontend
14371424 if err := e .reconnectFrontend (spdkClient , bdevRaidUUID ); err != nil {
1438- engineErr = errors .Wrap (err , "reconnectFrontend failed" )
1439- return err
1425+ return errors .Wrap (err , "reconnectFrontend failed" )
14401426 }
14411427 e .log .Info ("Expanding engine complete" )
14421428
@@ -1655,9 +1641,7 @@ func (e *Engine) expandReplicas(replicaClients map[string]*client.SPDKClient, sp
16551641 e .log .WithField ("replica" , replicaName ).
16561642 Info ("Replica expansion succeeded despite earlier error, removing from failure list" )
16571643
1658- errorLock .Lock ()
16591644 delete (failedReplica , replicaName )
1660- errorLock .Unlock ()
16611645 }
16621646 }
16631647
@@ -1824,7 +1808,7 @@ func (e *Engine) ReplicaAdd(spdkClient *spdkclient.Client, dstReplicaName, dstRe
18241808 if err != nil {
18251809 return err
18261810 }
1827- defer e .closeRplicaClients (replicaClients )
1811+ defer e .closeReplicaClients (replicaClients )
18281812
18291813 srcReplicaName , srcReplicaAddress , err := e .getReplicaAddSrcReplica ()
18301814 if err != nil {
@@ -2298,7 +2282,7 @@ func (e *Engine) snapshotOperation(spdkClient *spdkclient.Client, inputSnapshotN
22982282 if err != nil {
22992283 return "" , err
23002284 }
2301- defer e .closeRplicaClients (replicaClients )
2285+ defer e .closeReplicaClients (replicaClients )
23022286
23032287 if snapshotName , err = e .snapshotOperationPreCheckWithoutLock (replicaClients , inputSnapshotName , snapshotOp ); err != nil {
23042288 return "" , err
@@ -2373,7 +2357,7 @@ func (e *Engine) getReplicaClients() (replicaClients map[string]*client.SPDKClie
23732357 return replicaClients , nil
23742358}
23752359
2376- func (e * Engine ) closeRplicaClients (replicaClients map [string ]* client.SPDKClient ) {
2360+ func (e * Engine ) closeReplicaClients (replicaClients map [string ]* client.SPDKClient ) {
23772361 for replicaName := range replicaClients {
23782362 if replicaClients [replicaName ] != nil {
23792363 if errClose := replicaClients [replicaName ].Close (); errClose != nil {
0 commit comments