swift/test
Tim Burke 229065d781 expirer: Only try to delete empty containers
Currently, the object-expirer is a little delete-happy -- after a
container gets processed, an attempt is always made to delete it,
even if we know it will fail with a 409 because either

    * we found items that this worker won't process (see the
      process/processes config options) or

    * we encountered failures processing items and thus didn't
      pop all the records off the queue that we *could* process.

The failed DELETE has downsides such as

    * adding unnecessary load to the container servers (though
      the 409 can hopefully be serviced fairly quickly) and

    * evicting container info and listing shard ranges from
      memcache, which

    * can further load the container-servers (if the expiry queues
      have gotten large enough to shard), as all the expirers
      doing listings now have to go fetch shard ranges directly
      from the DB.

Now, only attempt to delete an expiry container if it appears to be
empty. In any reasonably-sized cluster, we expect dozens to hundreds of
concurrent expirers to be processing the expiry queues. Seeing the
container empty is the most reliable signal that the delete is expected
to succeed.

Change-Id: I8c3f78d1d1850ab501180f884f81f84552617fb7
2022-02-10 15:56:55 -08:00
..
cors s3api: Allow CORS preflights for pre-signed URLs 2021-07-14 10:52:12 -07:00
functional s3api: fix the copy of non-ASCII objects 2021-09-29 19:05:14 -07:00
probe Get rid of port to node assumptions and their modulo kludges 2021-09-30 00:42:24 -05:00
s3api replace md5 with swift utils version 2020-12-15 09:52:55 -05:00
unit expirer: Only try to delete empty containers 2022-02-10 15:56:55 -08:00
__init__.py Quiet more deprecation warnings on py2 2021-03-30 14:02:36 -07:00
debug_logger.py Capture logs when running custom daemons in probe tests 2021-06-24 09:32:38 +01:00
sample.conf fix s3api functional tests 2020-05-15 22:38:04 -07:00