v5.0.64: delete idempotency, duplicate adopt, defer unlock, exist marker
This commit is contained in:
@@ -155,12 +155,11 @@ func adoptExistingInstanceOnCreate(ctx context.Context, client *core.UniversalCl
|
||||
case StateNotCreated:
|
||||
// P0.2: авто-cleanup orphan-инстанса при adopt_existing_on_create=true.
|
||||
unlock := client.LockInstance(existing.InstanceUid)
|
||||
defer unlock()
|
||||
if err := client.RunInstanceOperationUniversal(ctx, existing.InstanceUid, "delete", nil); err != nil {
|
||||
unlock()
|
||||
return "", fmt.Errorf("не удалось авто-удалить orphan-инстанс %s (статус: %s): %w. %s",
|
||||
existing.InstanceUid, statusText, err, formatInstanceDetails(existing, serviceID, displayName))
|
||||
}
|
||||
unlock()
|
||||
return client.CreateGenericInstanceUniversalV6(ctx, serviceID, displayName, params)
|
||||
|
||||
case StateRunning, StateRunningPending:
|
||||
@@ -182,11 +181,10 @@ func adoptExistingInstanceOnCreate(ctx context.Context, client *core.UniversalCl
|
||||
return "", fmt.Errorf("required params mismatch for resource_name %s: %s. %s", displayName, FormatRequiredParamMismatchMessage(mismatches), formatInstanceDetails(existing, serviceID, displayName))
|
||||
}
|
||||
unlock := client.LockInstance(existing.InstanceUid)
|
||||
defer unlock()
|
||||
if err := client.RunInstanceOperationUniversal(ctx, existing.InstanceUid, "resume", nil); err != nil {
|
||||
unlock()
|
||||
return "", err
|
||||
}
|
||||
unlock()
|
||||
resumed, err := client.GetInstanceState(ctx, existing.InstanceUid)
|
||||
if err != nil {
|
||||
return "", err
|
||||
|
||||
@@ -113,7 +113,7 @@ func IsSubresourceAlreadyExistsError(err error) bool {
|
||||
if msg == "" {
|
||||
return false
|
||||
}
|
||||
markers := []string{"уже существует", "already exists", "duplicate", "conflict"}
|
||||
markers := []string{"уже существует", "already exists", "already exist", "duplicate", "conflict", " exist"}
|
||||
for _, marker := range markers {
|
||||
if strings.Contains(msg, marker) {
|
||||
return true
|
||||
|
||||
Reference in New Issue
Block a user