container-updater can't suppress accounts with whitespace in name
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Object Storage (swift) |
New
|
Undecided
|
Unassigned |
Bug Description
The container-updater has a unique account-suppression feature: if it cannot successfully update a quorum of account replicas, it will attempt to suppress further updates to that account for some period of time. Within a single worker handling a single part, this is easy enough. To share state between workers, though, we create a temporary files per-worker [0] which we write to as failures occur [1], and then read back in the manager process [2].
The serialization format is very simple: write out a line like "<account> <next allowed update time>". However, accounts (like all virtual paths in Swift) can contain not just spaces but newlines as well; if such an account is suppressed, it may lead to ValueErrors during unpacking or even cause us to suppress the wrong account.
[0] https:/
[1] https:/
[2] https:/