-
Notifications
You must be signed in to change notification settings - Fork 71
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adjust implementation of DeleteClient #323
Comments
All errors encountered during the deletion process should be logged, as this will be the only way to tell what happened. |
I believe part of this is also connected to #319: we need to make sure that About DeleteClient, if multiple |
Indeed, my worry is that in some cases, for some providers, we won't be able to guarantee that the key is destroyed and unusable - we are helped by the fact that the identifier used by clients is not related in any way to the identifier used by the backend. But maybe we need to solve #319 first and then figure out how this one fits in |
From #319
I have just been thinking, Rust being Rust, we can not return both an error (ie Similarly I am looking at our other core operations that are looping through providers:
|
During our weekly call we decided
DeleteClient
should be interpreted as "make a best effort to remove all resources belonging to client X or to unlink those resources if the backend fails to remove them". This is in contrast with our previous expectation which sawDeleteClient
as a sum ofDestroy<Resource>
, e.g.PsaDestroyKey
, operations and which currently fails at the first "sub-operation" failure.The new semantics should be that all providers must do a best-effort job of removing all references and metadata to resources belonging to client X, even when removing the resource returns an error code from the backend. The only case where an error response code should be returned to the Parsec client is when a failure occurs during metadata cleanup, and thus a new service client with the same identity would potentially be able to access some old resources (or have conflicts when creating new ones with identical names).
The contract and interface will remain the same (although we will probably need a new response code specific for these errors), but the implementation will change. We also need to make sure the documentation for this operation is consistent with these semantics and sufficiently clear.
The text was updated successfully, but these errors were encountered: