Comment 7 for bug 1680083

Revision history for this message
clayg (clay-gerrard) wrote : Re: SLO upload

oh wow! You can set X-Static-Large-Object on PUT even if SLO is not in the pipeline!?

OH WOW! but then you can't *download* them once you enable SLO!?

Apr 6 03:53:22 saio proxy-server: Error: An error occurred: #012Traceback (most recent call last):#012 File "/vagrant/swift/swift/common/middleware/catch_errors.py", line 41, in handle_request#012 resp = self._app_call(env)#012 File "/vagrant/swift/swift/common/wsgi.py", line 1058, in _app_call#012 resp = self.app(env, self._start_response)#012 File "/vagrant/swift/swift/common/middleware/gatekeeper.py", line 102, in __call__#012 return self.app(env, gatekeeper_response)#012 File "/vagrant/swift/swift/common/middleware/healthcheck.py", line 52, in __call__#012 return self.app(env, start_response)#012 File "/vagrant/swift/swift/common/middleware/proxy_logging.py", line 346, in __call__#012 six.reraise(exc_type, exc_value, exc_traceback)#012 File "/vagrant/swift/swift/common/middleware/proxy_logging.py", line 338, in __call__#012 iterable = self.app(env, my_start_response)#012 File "/vagrant/swift/swift/common/middleware/memcache.py", line 109, in __call__#012 return self.app(env, start_response)#012 File "/vagrant/swift/swift/common/swob.py", line 1402, in _wsgify_self#012 return func(self, Request(env))(env, start_response)#012 File "/vagrant/swift/swift/common/swob.py", line 1402, in _wsgify_self#012 return func(self, Request(env))(env, start_response)#012 File "/vagrant/swift/swift/common/middleware/tempurl.py", line 401, in __call__#012 return self.app(env, start_response)#012 File "/vagrant/swift/swift/common/middleware/tempauth.py", line 292, in __call__#012 return self.app(env, start_response)#012 File "/vagrant/swift/swift/common/middleware/staticweb.py", line 531, in __call__#012 return self.app(env, start_response)#012 File "/vagrant/swift/swift/common/middleware/copy.py", line 344, in __call__#012 return self.app(env, start_response)#012 File "/vagrant/swift/swift/common/middleware/slo.py", line 1189, in __call__#012 return self.handle_multipart_get_or_head(req, start_response)#012 File "/vagrant/swift/swift/common/middleware/slo.py", line 904, in handle_multipart_get_or_head#012 return SloGetContext(self).handle_slo_get_or_head(req, start_response)#012 File "/vagrant/swift/swift/common/middleware/slo.py", line 705, in handle_slo_get_or_head#012 req, resp_headers, resp_iter)#012 File "/vagrant/swift/swift/common/middleware/slo.py", line 775, in get_or_head_response#012 etag.update(seg_dict['hash'])#012KeyError: 'hash' (txn: txb774a458007e46a988cd4-0058e5f3f2)

such a cool failure mode.

This is why we use sysmeta people! Let us learn from our past mistakes. ;)

@Archana yeah dlo (being older i guess) managed to get some auto-insertion support:

Apr 6 03:59:31 saio proxy-server: Adding required filter dlo to pipeline at position 10

Grrr.. "pipeline" doens't appear anywhere on https://docs.openstack.org/developer/swift/overview_large_objects.html#module-swift.common.middleware.slo - maybe this bug is half that - "you HAVE to turn on SLO in the pipeline". I hear people hate featureization because of interop - it's obviously annoying for application developers (/info would tell you if your user pointed you at a swift cluster w/o slo). And annoying/confusing for users when they find their provider doesn't support their app that requires SLO. Did anyone ever *mean* to deploy swift w/o SLO support? Maybe we warn if it's not there and/or auto insert after version X.

General intro to middleware concepts for your proxy config:

https://docs.openstack.org/developer/swift/development_middleware.html?highlight=pipeline#using-middleware

Example config/pipeline:

https://github.com/openstack/swift/blob/bc9a7075d3accf3160043e8366745a1dd895b08d/etc/proxy-server.conf-sample#L97