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:
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: txb774a458007e4 6a988cd4- 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/developme nt_middleware. html?highlight= pipeline# using-middlewar e
Example config/pipeline:
https:/ /github. com/openstack/ swift/blob/ bc9a7075d3accf3 160043e8366745a 1dd895b08d/ etc/proxy- server. conf-sample# L97