Skip to content

Commit a7d2ad1

Browse files
committed
Change overwrite to affect any "locked in"/completed state
1 parent e109305 commit a7d2ad1

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

common/fe-ste-models.go

+5
Original file line numberDiff line numberDiff line change
@@ -670,6 +670,11 @@ var ETransferStatus = TransferStatus(0)
670670

671671
type TransferStatus int32 // Must be 32-bit for atomic operations; negative #s represent a specific failure code
672672

673+
func (t TransferStatus) StatusLocked() bool { // Is an overwrite necessary to change tx status?
674+
// Any kind of failure, or success is considered "locked in".
675+
return t <= ETransferStatus.Failed() || t == ETransferStatus.Success()
676+
}
677+
673678
// Transfer is ready to transfer and not started transferring yet
674679
func (TransferStatus) NotStarted() TransferStatus { return TransferStatus(0) }
675680

ste/JobPartPlan.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -409,9 +409,8 @@ func (jppt *JobPartPlanTransfer) SetTransferStatus(status common.TransferStatus,
409409
if !overWrite {
410410
common.AtomicMorphInt32((*int32)(&jppt.atomicTransferStatus),
411411
func(startVal int32) (val int32, morphResult interface{}) {
412-
// start value < 0 means that transfer status is already a failed value.
413-
// If current transfer status has already failed value, then it will not be changed.
414-
return common.Iffint32(startVal < 0, startVal, int32(status)), nil
412+
// If current transfer status has some completed value, then it will not be changed.
413+
return common.Iffint32(common.TransferStatus(startVal).StatusLocked(), startVal, int32(status)), nil
415414
})
416415
} else {
417416
(&jppt.atomicTransferStatus).AtomicStore(status)

0 commit comments

Comments
 (0)