[dev][oslo] oslo.cache and dogpile 0.7.0+ cache errors

Ben Nemec openstack at nemebean.com
Wed Feb 27 19:04:38 UTC 2019


To close the loop on this, we just merged a unit test fix that unblocks 
oslo.cache ci. We'll continue to work on sorting out where these tests 
should live as a followup.

On 2/26/19 1:40 PM, Herve Beraud wrote:
> Submit a patch to dogpile.cache to add some related tests cases:
> 
> https://github.com/sqlalchemy/dogpile.cache/pull/145/
> 
> Le mar. 26 févr. 2019 à 19:35, Herve Beraud <hberaud at redhat.com 
> <mailto:hberaud at redhat.com>> a écrit :
> 
>     FYI dogpile.cache issue was opened:
>     https://github.com/sqlalchemy/dogpile.cache/issues/144
> 
>     Come with a possible oslo.cache solution that I've introduce there
>     => https://review.openstack.org/#/c/638788/8
> 
>     Le mar. 26 févr. 2019 à 16:49, Ben Nemec <openstack at nemebean.com
>     <mailto:openstack at nemebean.com>> a écrit :
> 
>         Copying Mike. More thoughts inline.
> 
>         On 2/26/19 9:24 AM, Herve Beraud wrote:
>          > Hi,
>          >
>          > Just a heads up that the latest version of dogpile (0.7.0
>         onwards)
>          > have become incompatible with oslo.cache.  This is causing a few
>          > issues for jobs.  It's a little complex due to functional
>         code and many
>          > decorated functions.
>          >
>          > The error you will see is:
>          > /
>          > /
>          >
>          >
>         /oslo_cache.//tests.test_//cache.CacheRegi//onTest.//test_function_//key_generator_//with_kwargs
>          >
>         -------//-------//-------//-------//-------//-------//-------//-------//-------//-------//-------//------/
>          >
>          > //
>          >
>          > /Captured traceback:
>          > ~~~~~~~~~~~~~~~~~~~
>          >      b'Traceback (most recent call last):'
>          >      b' File
>         "/tmp/oslo.//cache/oslo_//cache/tests///test_cache.//py",
>          > line 324, in test_function_//key_generator_//with_kwargs'
>          >      b' value=self.//test_value)//'
>          >      b' File
>          >
>         "/tmp/oslo.//cache/.//tox/py37///lib/python3.//7/site-//packages///testtools///testcase.//py",
> 
>          > line 485, in assertRaises'
>          >      b' self.assertThat//(our_callable, matcher)'
>          >      b' File
>          >
>         "/tmp/oslo.//cache/.//tox/py37///lib/python3.//7/site-//packages///testtools///testcase.//py",
> 
>          > line 498, in assertThat'
>          >      b' raise mismatch_error'
>          >      b'testtools//.matchers.//_impl.MismatchE//rror: <function
>          >
>         CacheRegionTest//._get_cacheable//_function.//<locals>//.cacheable_//function
> 
>          > at 0x7fec3f795400> returned
>          > <oslo_cache.//tests.test_//cache.TestProxy//Value object at
>          > 0x7fec3f792550>'/
>          >
>          >
>          > The problem appear since we uncap dogpile.cache on oslo.cache:
>          >
>         https://github.com/openstack/oslo.cache/commit/62b53099861134859482656dc92db81243b88bd9
>          >
>          > The following unit test fail since we uncap dogpile =>
>          >
>         https://github.com/openstack/oslo.cache/blob/master/oslo_cache/tests/test_cache.py#L318
>          >
>          > The problem was introduced by:
>          > https://gerrit.sqlalchemy.org/#/c/sqlalchemy/dogpile.cache/+/996/
>          >
>          > Your main issue on oslo.cache side is that keyword arguments are
>          > tranformed in positionnal arguments when we use
>          > dogpile.cache.region.cache_on_arguments.
>          >
>          > I've try to revert the changes introduced by the previous
>         dogpile.cache
>          > change and everything works fine on the oslo.cache side when
>         changes was
>          > reverted (reverted to revision
>          >
>         https://github.com/sqlalchemy/dogpile.cache/blob/2762ada1f5e43075494d91c512f7c1ec68907258/dogpile/cache/region.py).
>          >
>          > The expected behavior is that
>         dogpile.cache.util.function_key_generator
>          > raise a ValueError if **kwargs founds, but our kwargs is
>         empty and our
>          > `value=self.test_value was` is recognized as a positionnal
>         argument.
>          > Our unit test looking for an assertRaise(ValueError) on cachable
>          > decorated function when we pass kwargs but it doesn't happen
>         due to
>          > empty kwargs.
>          >
>          > For these reasons we guess that is an dogpile.cache issue and
>         not an
>          > oslo.cache issue due to the changes introduced by `decorator`
>         module.
>          >
>          > The following are related:
>          >
>          > -
>          >
>         https://github.com/openstack/oslo.cache/blob/master/oslo_cache/tests/test_cache.py#L318
> 
>          > : unit test where the problem occure
>          > - https://review.openstack.org/#/c/638788/ : possible fix but
>         we don't
>          > think that is the right way
>          > - https://review.openstack.org/#/c/638732/ : possible remove
>         of the unit
>          > test who fail
> 
>         As I noted in the reviews, I don't think this is something we
>         should
>         have been testing in oslo.cache in the first place. The failing
>         test is
>         testing the dogpile interface, not the oslo.cache one. I've seen no
>         evidence that oslo.cache is doing anything wrong here, so our
>         unit tests
>         are clearly testing something that should be out of scope.
> 
>         And to be clear, I'm not even sure this is a bug in dogpile. It
>         may be a
>         happy side-effect of the decorator change that the regular
>         decorator now
>         works for kwargs too. I don't know dogpile well enough to make a
>         definitive statement on that though. Hence cc'ing Mike. :-)
> 
>          >
>          > The issue is being tracked in:
>          >
>          > https://bugs.launchpad.net/oslo.cache/+bug/1817032
>          >
>          > If some dogpile expert can take a look and send feedback on
>         this thread
>          > you are welcome.
>          >
>          > Thanks,
>          >
>          > --
>          > Hervé Beraud
>          > Senior Software Engineer
>          > Red Hat - Openstack Oslo
>          > irc: hberaud
>          > -----BEGIN PGP SIGNATURE-----
>          >
>          > wsFcBAABCAAQBQJb4AwCCRAHwXRBNkGNegAALSkQAHrotwCiL3VMwDR0vcja10Q+
>          > Kf31yCutl5bAlS7tOKpPQ9XN4oC0ZSThyNNFVrg8ail0SczHXsC4rOrsPblgGRN+
>          > RQLoCm2eO1AkB0ubCYLaq0XqSaO+Uk81QxAPkyPCEGT6SRxXr2lhADK0T86kBnMP
>          > F8RvGolu3EFjlqCVgeOZaR51PqwUlEhZXZuuNKrWZXg/oRiY4811GmnvzmUhgK5G
>          > 5+f8mUg74hfjDbR2VhjTeaLKp0PhskjOIKY3vqHXofLuaqFDD+WrAy/NgDGvN22g
>          > glGfj472T3xyHnUzM8ILgAGSghfzZF5Skj2qEeci9cB6K3Hm3osj+PbvfsXE/7Kw
>          > m/xtm+FjnaywZEv54uCmVIzQsRIm1qJscu20Qw6Q0UiPpDFqD7O6tWSRKdX11UTZ
>          > hwVQTMh9AKQDBEh2W9nnFi9kzSSNu4OQ1dRMcYHWfd9BEkccezxHwUM4Xyov5Fe0
>          > qnbfzTB1tYkjU78loMWFaLa00ftSxP/DtQ//iYVyfVNfcCwfDszXLOqlkvGmY1/Y
>          > F1ON0ONekDZkGJsDoS6QdiUSn8RZ2mHArGEWMV00EV5DCIbCXRvywXV43ckx8Z+3
>          > B8qUJhBqJ8RS2F+vTs3DTaXqcktgJ4UkhYC2c1gImcPRyGrK9VY0sCT+1iA+wp/O
>          > v6rDpkeNksZ9fFSyoY2o
>          > =ECSj
>          > -----END PGP SIGNATURE-----
>          >
> 
> 
> 
>     -- 
>     Hervé Beraud
>     Senior Software Engineer
>     Red Hat - Openstack Oslo
>     irc: hberaud
>     -----BEGIN PGP SIGNATURE-----
> 
>     wsFcBAABCAAQBQJb4AwCCRAHwXRBNkGNegAALSkQAHrotwCiL3VMwDR0vcja10Q+
>     Kf31yCutl5bAlS7tOKpPQ9XN4oC0ZSThyNNFVrg8ail0SczHXsC4rOrsPblgGRN+
>     RQLoCm2eO1AkB0ubCYLaq0XqSaO+Uk81QxAPkyPCEGT6SRxXr2lhADK0T86kBnMP
>     F8RvGolu3EFjlqCVgeOZaR51PqwUlEhZXZuuNKrWZXg/oRiY4811GmnvzmUhgK5G
>     5+f8mUg74hfjDbR2VhjTeaLKp0PhskjOIKY3vqHXofLuaqFDD+WrAy/NgDGvN22g
>     glGfj472T3xyHnUzM8ILgAGSghfzZF5Skj2qEeci9cB6K3Hm3osj+PbvfsXE/7Kw
>     m/xtm+FjnaywZEv54uCmVIzQsRIm1qJscu20Qw6Q0UiPpDFqD7O6tWSRKdX11UTZ
>     hwVQTMh9AKQDBEh2W9nnFi9kzSSNu4OQ1dRMcYHWfd9BEkccezxHwUM4Xyov5Fe0
>     qnbfzTB1tYkjU78loMWFaLa00ftSxP/DtQ//iYVyfVNfcCwfDszXLOqlkvGmY1/Y
>     F1ON0ONekDZkGJsDoS6QdiUSn8RZ2mHArGEWMV00EV5DCIbCXRvywXV43ckx8Z+3
>     B8qUJhBqJ8RS2F+vTs3DTaXqcktgJ4UkhYC2c1gImcPRyGrK9VY0sCT+1iA+wp/O
>     v6rDpkeNksZ9fFSyoY2o
>     =ECSj
>     -----END PGP SIGNATURE-----
> 
> 
> 
> -- 
> Hervé Beraud
> Senior Software Engineer
> Red Hat - Openstack Oslo
> irc: hberaud
> -----BEGIN PGP SIGNATURE-----
> 
> wsFcBAABCAAQBQJb4AwCCRAHwXRBNkGNegAALSkQAHrotwCiL3VMwDR0vcja10Q+
> Kf31yCutl5bAlS7tOKpPQ9XN4oC0ZSThyNNFVrg8ail0SczHXsC4rOrsPblgGRN+
> RQLoCm2eO1AkB0ubCYLaq0XqSaO+Uk81QxAPkyPCEGT6SRxXr2lhADK0T86kBnMP
> F8RvGolu3EFjlqCVgeOZaR51PqwUlEhZXZuuNKrWZXg/oRiY4811GmnvzmUhgK5G
> 5+f8mUg74hfjDbR2VhjTeaLKp0PhskjOIKY3vqHXofLuaqFDD+WrAy/NgDGvN22g
> glGfj472T3xyHnUzM8ILgAGSghfzZF5Skj2qEeci9cB6K3Hm3osj+PbvfsXE/7Kw
> m/xtm+FjnaywZEv54uCmVIzQsRIm1qJscu20Qw6Q0UiPpDFqD7O6tWSRKdX11UTZ
> hwVQTMh9AKQDBEh2W9nnFi9kzSSNu4OQ1dRMcYHWfd9BEkccezxHwUM4Xyov5Fe0
> qnbfzTB1tYkjU78loMWFaLa00ftSxP/DtQ//iYVyfVNfcCwfDszXLOqlkvGmY1/Y
> F1ON0ONekDZkGJsDoS6QdiUSn8RZ2mHArGEWMV00EV5DCIbCXRvywXV43ckx8Z+3
> B8qUJhBqJ8RS2F+vTs3DTaXqcktgJ4UkhYC2c1gImcPRyGrK9VY0sCT+1iA+wp/O
> v6rDpkeNksZ9fFSyoY2o
> =ECSj
> -----END PGP SIGNATURE-----
> 



More information about the openstack-discuss mailing list