Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions controllers/evacuation_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ func (h *EvacuationController) EvacuateClaimedActualLRP(ctx context.Context, log
}

// this is an ordinary LRP
before, after, err := h.actualLRPDB.UnclaimActualLRP(ctx, logger, actualLRPKey)
before, after, err := h.actualLRPDB.UnclaimActualLRP(ctx, logger, false, actualLRPKey)
bbsErr := models.ConvertError(err)
if bbsErr != nil {
if bbsErr.Type == models.Error_ResourceNotFound {
Expand Down Expand Up @@ -430,7 +430,7 @@ func (h *EvacuationController) evacuateInstance(ctx context.Context, logger lage
return nil
}

_, after, err := h.actualLRPDB.UnclaimActualLRP(ctx, logger, &actualLRP.ActualLRPKey)
_, after, err := h.actualLRPDB.UnclaimActualLRP(ctx, logger, false, &actualLRP.ActualLRPKey)
if err != nil {
return err
}
Expand Down
4 changes: 2 additions & 2 deletions controllers/lrp_convergence_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ func (h *LRPConvergenceController) ConvergeLRPs(ctx context.Context) {
for _, lrpKey := range convergenceResult.UnstartedLRPKeys {
dereferencedKey := *lrpKey
works = append(works, func() {
before, after, err := h.lrpDB.UnclaimActualLRP(ctx, logger, dereferencedKey.Key)
before, after, err := h.lrpDB.UnclaimActualLRP(ctx, logger, true, dereferencedKey.Key)
if err != nil && err != models.ErrActualLRPCannotBeUnclaimed {
logger.Error("cannot-unclaim-lrp", err, lager.Data{"key": dereferencedKey})
return
Expand Down Expand Up @@ -218,7 +218,7 @@ func (h *LRPConvergenceController) ConvergeLRPs(ctx context.Context) {
// there is a Suspect LRP already, unclaim this previously created
// replacement and reauction it
logger.Debug("found-suspect-lrp-unclaiming", lager.Data{"key": dereferencedKey.Key})
before, after, err := h.lrpDB.UnclaimActualLRP(ctx, logger, dereferencedKey.Key)
before, after, err := h.lrpDB.UnclaimActualLRP(ctx, logger, false, dereferencedKey.Key)
if err != nil {
logger.Error("failed-unclaiming-lrp", err)
return
Expand Down
2 changes: 1 addition & 1 deletion db/actual_lrp_db.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ type ActualLRPDB interface {
ActualLRPs(ctx context.Context, logger lager.Logger, filter models.ActualLRPFilter) ([]*models.ActualLRP, error)
ActualLRPsByProcessGuids(ctx context.Context, logger lager.Logger, filter models.ActualLRPsByProcessGuidsFilter) ([]*models.ActualLRP, error)
CreateUnclaimedActualLRP(ctx context.Context, logger lager.Logger, key *models.ActualLRPKey) (after *models.ActualLRP, err error)
UnclaimActualLRP(ctx context.Context, logger lager.Logger, key *models.ActualLRPKey) (before *models.ActualLRP, after *models.ActualLRP, err error)
UnclaimActualLRP(ctx context.Context, logger lager.Logger, isStaleUnclaimed bool, key *models.ActualLRPKey) (before *models.ActualLRP, after *models.ActualLRP, err error)
ClaimActualLRP(ctx context.Context, logger lager.Logger, processGuid string, index int32, instanceKey *models.ActualLRPInstanceKey) (before *models.ActualLRP, after *models.ActualLRP, err error)
StartActualLRP(ctx context.Context,
logger lager.Logger,
Expand Down
8 changes: 6 additions & 2 deletions db/sqldb/actual_lrp_db.go
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ func (db *SQLDB) CreateUnclaimedActualLRP(ctx context.Context, logger lager.Logg
return lrp, nil
}

func (db *SQLDB) UnclaimActualLRP(ctx context.Context, logger lager.Logger, key *models.ActualLRPKey) (*models.ActualLRP, *models.ActualLRP, error) {
func (db *SQLDB) UnclaimActualLRP(ctx context.Context, logger lager.Logger, isStaleUnclaimed bool, key *models.ActualLRPKey) (*models.ActualLRP, *models.ActualLRP, error) {
logger = logger.Session("db-unclaim-actual-lrp", lager.Data{"key": key})
logger.Info("starting")
defer logger.Info("complete")
Expand All @@ -213,7 +213,11 @@ func (db *SQLDB) UnclaimActualLRP(ctx context.Context, logger lager.Logger, key
beforeActualLRP = *actualLRP

if actualLRP.State == models.ActualLRPStateUnclaimed {
logger.Debug("already-unclaimed")
logger.Debug("already-" + actualLRP.State)
return models.ErrActualLRPCannotBeUnclaimed
}
if isStaleUnclaimed && actualLRP.State == models.ActualLRPStateClaimed {
logger.Debug("a stale unstarted claim already-" + actualLRP.State + " by another cell.")
return models.ErrActualLRPCannotBeUnclaimed
}

Expand Down