1. 12 Jul, 2019 3 commits
  2. 11 Jul, 2019 6 commits
  3. 10 Jul, 2019 8 commits
  4. 08 Jul, 2019 1 commit
  5. 04 Jul, 2019 1 commit
    • Tim Burke's avatar
      container-replicator: Add a timeout for get_shard_ranges · 4c4bd778
      Tim Burke authored
      Previously this had no timeout, which meant that the replicator might
      hang and fail to make progress indefinitely while trying to receive
      shard ranges.
      
      While we're at it, only call get_shard_ranges when the remote indicates
      that it has shard ranges for us to sync -- this reduces the number of
      requests necessary to bring unsharded replicas in sync.
      
      Change-Id: I32f51f42d76db38271442a261600089404a00f91
      Closes-Bug: #1835260
      4c4bd778
  6. 03 Jul, 2019 3 commits
    • Tim Burke's avatar
      s3token: fix conf option name · 345f577f
      Tim Burke authored
      Related-Change: Ica740c28b47aa3f3b38dbfed4a7f5662ec46c2c4
      Change-Id: I71f411a2e99fa8259b86f11ed29d1b816ff469cb
      345f577f
    • Zuul's avatar
    • Tim Burke's avatar
      py3: Be able to read and write non-ASCII headers · 76fde892
      Tim Burke authored
      Apparently Python's stdlib got more picky about what a header should
      look like. As a result, if an account, container, or object had a
      non-ASCII metadata name (values were fine), the proxy-server wouldn't
      parse all of the headers. See https://bugs.python.org/issue37093 for
      more information.
      
      This presented several problems:
      - Since the non-ASCII header aborts parsing, we may lose important
        HTTP-level information like Content-Length or Transfer-Encoding.
      - Since the offending header wouldn't get parsed, the client wouldn't
        even know what the problem was.
      - Even if the client knew what the bad header was, it would have no way
        to clear it, as the server uses the same logic to parse incoming
        requests.
      
      So, hack in our own header parsing if we detect that parsing was
      aborted. Note that we also have to mangle bufferedhttp's putheader so we
      can get non-ASCII headers to the backend servers.
      
      Now, we can run the test_unicode_metadata tests in
      test/functional/test_account.py and test/functional/test_container.py
      under py2 against services running under py3.
      
      Change-Id: I0f03c211f35a9a49e047a5718a9907b515ca88d7
      76fde892
  7. 02 Jul, 2019 2 commits
  8. 01 Jul, 2019 5 commits
  9. 29 Jun, 2019 1 commit
  10. 27 Jun, 2019 2 commits
    • Tim Burke's avatar
      s3api: Put more information in the str() for InternalError · 88cec2c3
      Tim Burke authored
      There are few things more frustrating when digging through a log than
      finding a traceback that ends with
      
          raise InternalError('unexpected status code %d' % status)
      
      while having no indication of what the status code was.
      
      Change-Id: I08e9f7c0643ae0469bd1937a30c1c4477b67c31f
      88cec2c3
    • Yuxin Wang's avatar
      Use get_container_info to check existence before container PUT · e02b9b79
      Yuxin Wang authored
      PUT request on an existing container will trigger an update on
      container db. When disks where container db landed are under
      heavy loads, update on the container db may fail due to LockTimout.
      
      Hence, we first check existence, if it's not there, we PUT.
      
      Change-Id: Ic61153948e35f1c09b05bfc97dfac3fb487b0898
      Closes-Bug: 1780204
      e02b9b79
  11. 25 Jun, 2019 2 commits
  12. 24 Jun, 2019 1 commit
  13. 22 Jun, 2019 3 commits
    • Tim Burke's avatar
      Run all func tests under py2 against services running py3 · 55b04d16
      Tim Burke authored
      ... at least, on the py3 dsvm job.
      
      Depends-On: I0f03c211f35a9a49e047a5718a9907b515ca88d7
      Change-Id: Ia783ae10344380eb5afd9d43273969b433962945
      55b04d16
    • Tim Burke's avatar
      py3: add swift-dsvm-functional-py3 job · 39a54fec
      Tim Burke authored
      Note that keystone wants to stick some UTF-8 encoded bytes into
      memcached, but we want to store it as JSON... or something?
      
      Also, make sure we can hit memcache for containers with invalid UTF-8.
      Although maybe it'd be better to catch that before we ever try memcache?
      
      Change-Id: I1fbe133c8ec73ef6644ecfcbb1931ddef94e0400
      39a54fec
    • Tim Burke's avatar
      Move call to global_conf_callback after loadapp() · ff4459ed
      Tim Burke authored
      Otherwise, paste complains about not being able to interpolate values
      into the replication_semaphore. As long as it gets dropped in before we
      fork(), I think it's OK?
      
      Closes-Bug: 1691075
      Change-Id: Ib7e065c47871876786bcc9ff39737f5d1bb3c12c
      ff4459ed
  14. 20 Jun, 2019 2 commits
    • Matthew Oliver's avatar
      py3: Port the tempurl middleware · 9f1ef356
      Matthew Oliver authored
      This patch ports the tempurl middleware over to PY3. We use
      an "all-native" string model, where we convert WSGI strings
      as soon as we see them. It helps to deal with HMAC.
      
      Aaand, we fix formpost along the way. It _clearly_ was
      doing a wrong thing, encoding the same body several times
      if we had several keys. On py2 it wasn't noticeable, but
      on py3 this breaks, because the bytes type cannot be encoded
      again.
      
      Change-Id: I69974cc8a39731c980b54137b799a36b2e63a44a
      9f1ef356
    • Zuul's avatar
      Merge "py3: port the test of locale" · d44a581c
      Zuul authored
      d44a581c