Bug 1033491

Summary: cache: RuntimeError: maximum recursion depth exceeded while calling a Python object
Product: [Fedora] Fedora Reporter: Petr Sklenar <psklenar>
Component: python-nitrateAssignee: Petr Šplíchal <psplicha>
Status: CLOSED CURRENTRELEASE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 22CC: azelinka, fholec, ohudlick, omoris, psplicha
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: python-nitrate-1.0-1.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-02-10 12:30:58 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Petr Sklenar 2013-11-22 08:44:51 UTC
Description of problem:
I used python-nitrate with cache support
and the first run works pretty long and ends with some of my issue in the script. 
Then I rerun and I wasn't happy again.

Version-Release number of selected component (if applicable):
python-nitrate-0.10-0.el7.noarch

How reproducible:
always

Steps to Reproduce:
1. run my script


Actual results:
thousands of line:
    self.name, self.product.name))
  File "/usr/lib/python2.7/site-packages/nitrate/api.py", line 330, in getter
    self._fetch()
  File "/usr/lib/python2.7/site-packages/nitrate/api.py", line 2159, in _fetch
    self.name, self.product.name))
  File "/usr/lib/python2.7/site-packages/nitrate/api.py", line 330, in getter
    self._fetch()
  File "/usr/lib/python2.7/site-packages/nitrate/api.py", line 2159, in _fetch
    self.name, self.product.name))
  File "/usr/lib/python2.7/site-packages/nitrate/api.py", line 330, in getter
    self._fetch()
  File "/usr/lib/python2.7/site-packages/nitrate/api.py", line 2134, in _fetch
    Nitrate._fetch(self)
  File "/usr/lib/python2.7/site-packages/nitrate/api.py", line 752, in _fetch
    self._fetched = datetime.datetime.now()
RuntimeError: maximum recursion depth exceeded while calling a Python object

!!! when I run it on rhel6 with normal python-nitrate-0.9-0.el6.noarch it seems to be OK !!!

Expected results:
happy user

Additional info:

[cache]
level = 3
file = /home/psklenar/.cache/nitrate

ls -lah /home/psklenar/.cache/nitrate
-rw-rw-r--. 1 psklenar psklenar 38K Nov 22 09:26 /home/psklenar/.cache/nitrate

Comment 2 Petr Sklenar 2013-12-17 08:32:25 UTC
ping here?
for.ex. is there any workaround to be able to use cache?

Comment 3 Petr Šplíchal 2014-03-07 22:45:34 UTC
Thanks for the bug Petr and sorry for the long delay. I belive one
of the causes for the recursion problems might have been wrong
implementation of the default version field in the Product object. 

    https://github.com/psss/python-nitrate/commit/3a12971

I've prepared a new rpm for testing which already contains this
patch and could possibly fix your use case. Note that instead of
testplan.product.version you should now be using testplan.version
directly.

    http://psss.fedorapeople.org/python-nitrate/testing/download/

Please, let me know if you see any improvement. There are still about
three features to be implemeted to finalize the caching support so
please do not consider this to be the final package. But we're
getting closer ;-)

Comment 4 Jaroslav Reznik 2015-03-03 17:10:44 UTC
This bug appears to have been reported against 'rawhide' during the Fedora 22 development cycle.
Changing version to '22'.

More information and reason for this action is here:
https://fedoraproject.org/wiki/Fedora_Program_Management/HouseKeeping/Fedora22