Note: This is a beta release of Red Hat Bugzilla 5.0. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Also email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback here.
Bug 591427 - python qmf client - unhandled exception 'exceptions.TypeError: 'NoneType' object is not callable' from connection's write_op()
Summary: python qmf client - unhandled exception 'exceptions.TypeError: 'NoneType' obj...
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: qpid-qmf
Version: Development
Hardware: All
OS: Linux
medium
medium
Target Milestone: 1.3
: ---
Assignee: Ken Giusti
QA Contact: MRG Quality Engineering
URL:
Whiteboard:
Depends On: 547295
Blocks:
TreeView+ depends on / blocked
 
Reported: 2010-05-12 08:45 UTC by Frantisek Reznicek
Modified: 2015-11-16 01:12 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2010-10-22 10:52:58 UTC
Target Upstream Version:


Attachments (Terms of Use)

Description Frantisek Reznicek 2010-05-12 08:45:25 UTC
Description of problem:

During the qmf client testing against deployed MRG/M + MRG/G.

Below pasted client (qmf_list_objects.py) shows that some runs end with unhandled exception:

Exception in thread Thread-4 (most likely raised during interpreter shutdown):
Traceback (most recent call last):
  File "/usr/lib/python2.4/threading.py", line 442, in __bootstrap
  File "/usr/lib/python2.4/threading.py", line 422, in run
  File "/usr/lib/python2.4/site-packages/qpid/queue.py", line 84, in run
  File "/usr/lib/python2.4/site-packages/qmf/console.py", line 2253, in _v2Cb
  File "/usr/lib/python2.4/site-packages/qpid/generator.py", line 25, in <lambda>
  File "/usr/lib/python2.4/site-packages/qpid/connection.py", line 219, in invoke
  File "/usr/lib/python2.4/site-packages/qpid/connection.py", line 192, in write_op
  File "/usr/lib/python2.4/threading.py", line 112, in release
exceptions.TypeError: 'NoneType' object is not callable
Unhandled exception in thread started by
Error in sys.excepthook:

Original exception was:


The test was run on RHEL 5.5 i386.

Version-Release number of selected component (if applicable):
condor-7.4.3-0.13.el5
condor-debuginfo-7.4.3-0.13.el5
condor-kbdd-7.4.3-0.13.el5
condor-qmf-7.4.3-0.13.el5
condor-test-7.4.3-0.13.el5
condor-vm-gahp-7.4.3-0.13.el5
python-qmf-0.7.934605-1.el5
python-qpid-0.7.938298-1.el5
qmf-0.7.939184-1.el5
qmf-devel-0.7.939184-1.el5
qpid-cpp-client-0.7.939184-1.el5
qpid-cpp-client-devel-0.7.939184-1.el5
qpid-cpp-server-0.7.939184-1.el5
qpid-cpp-server-store-0.7.939184-1.el5
qpid-tests-0.7.934605-1.el5
qpid-tools-0.7.934605-2.el5
ruby-qmf-0.7.939184-1.el5


How reproducible:
~ 10% (once per 10 runs)

Steps to Reproduce:
1. install packages, start condor and qpidd services + configure the condor service to use QMF plugins
2. python ./qmf_list_objects.py in the loop
3.
  
Actual results:
QMF client shows unhandled threading exception.

Expected results:
QMF client should not show unhandled threading exception.

Testing client qmf_list_objects.py:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#!/usr/bin/env python

from qmf.console import Session
from sys import exit

gridobjs = [ 'master', 'grid', 'collector', 'negotiator', 'slot', 'scheduler', 'jobserver', 'submitter', 'submission' ]

session = Session(); 
try:
	session.addBroker()
except:
	print 'Unable to connect to broker'
	exit(1)

for objs in gridobjs:
	objects = session.getObjects(_class=objs, _package='com.redhat.grid')
	for obj in objects:
		print '\n'
		print objs," = ",obj.Name
		print "*****Properties*****"
		for prop in obj.getProperties():
			print " ",prop[0],"=",prop[1]
		print "*****Statistics*****"
		for stat in obj.getStatistics():
			print " ",stat[0],"=",stat[1]
		print "*****Methods********"
		for meth in obj.getMethods():
			print " ",meth
                        


Additional info:

master  =  mrg-qe-05.lab.eng.brq.redhat.com
*****Properties*****
  CondorPlatform = $CondorPlatform: I386-LINUX_RHEL5 $
  CondorVersion = $CondorVersion: 7.4.3 May  5 2010 BuildID: RH-7.4.3-0.13.el5 PRE-RELEASE $
  DaemonStartTime = 1273650856000000000
  Pool = mrg-qe-05.lab.eng.brq.redhat.com
  System = mrg-qe-05.lab.eng.brq.redhat.com
  Name = mrg-qe-05.lab.eng.brq.redhat.com
  Machine = mrg-qe-05.lab.eng.brq.redhat.com
  MyAddress = <10.34.33.58:52470>
  RealUid = 0
*****Statistics*****
  MonitorSelfAge = 0
  MonitorSelfCPUUsage = 0.0363834649324
  MonitorSelfImageSize = 48692.0
  MonitorSelfRegisteredSocketCount = 2
  MonitorSelfResidentSetSize = 7088
  MonitorSelfTime = 0
*****Methods********
  Start(Subsystem)
  Stop(Subsystem)


collector  =  Personal Condor
*****Properties*****
  Pool = mrg-qe-05.lab.eng.brq.redhat.com
  System = mrg-qe-05.lab.eng.brq.redhat.com
  CondorPlatform = $CondorPlatform: I386-LINUX_RHEL5 $
  CondorVersion = $CondorVersion: 7.4.3 May  5 2010 BuildID: RH-7.4.3-0.13.el5 PRE-RELEASE $
  Name = Personal Condor
  MyAddress = <10.34.33.58:9618>
*****Statistics*****
  RunningJobs = 0
  IdleJobs = 0
  HostsTotal = 8
  HostsClaimed = 0
  HostsUnclaimed = 8
  HostsOwner = 0
*****Methods********


negotiator  =  mrg-qe-05.lab.eng.brq.redhat.com
*****Properties*****
  Pool = mrg-qe-05.lab.eng.brq.redhat.com
  System = mrg-qe-05.lab.eng.brq.redhat.com
  Name = mrg-qe-05.lab.eng.brq.redhat.com
  Machine = mrg-qe-05.lab.eng.brq.redhat.com
  MyAddress = <10.34.33.58:57555>
  CondorPlatform = $CondorPlatform: I386-LINUX_RHEL5 $
  CondorVersion = $CondorVersion: 7.4.3 May  5 2010 BuildID: RH-7.4.3-0.13.el5 PRE-RELEASE $
  DaemonStartTime = 1273650859000000000
*****Statistics*****
  MonitorSelfAge = 0
  MonitorSelfCPUUsage = 0.0
  MonitorSelfImageSize = 0.0
  MonitorSelfRegisteredSocketCount = 0
  MonitorSelfResidentSetSize = 0
  MonitorSelfTime = 0
*****Methods********
  GetLimits()
  SetLimit(Name, Max)
  GetStats(Name)
  SetPriority(Name, Priority)
  SetPriorityFactor(Name, PriorityFactor)
  SetUsage(Name, Usage)
  GetRawConfig(Name)
  SetRawConfig(Name, Value)
  Reconfig()


scheduler  =  mrg-qe-05.lab.eng.brq.redhat.com
*****Properties*****
  CondorPlatform = $CondorPlatform: I386-LINUX_RHEL5 $
  CondorVersion = $CondorVersion: 7.4.3 May  5 2010 BuildID: RH-7.4.3-0.13.el5 PRE-RELEASE $
  DaemonStartTime = 1273650859000000000
  Pool = mrg-qe-05.lab.eng.brq.redhat.com
  System = mrg-qe-05.lab.eng.brq.redhat.com
  JobQueueBirthdate = 1272620499000000000
  MaxJobsRunning = 8311
  Machine = mrg-qe-05.lab.eng.brq.redhat.com
  MyAddress = <10.34.33.58:42983>
  Name = mrg-qe-05.lab.eng.brq.redhat.com
*****Statistics*****
  MonitorSelfAge = 0
  MonitorSelfCPUUsage = 0.0
  MonitorSelfImageSize = 50284.0
  MonitorSelfRegisteredSocketCount = 4
  MonitorSelfResidentSetSize = 8316
  MonitorSelfTime = 1273653259000000000
  NumUsers = 0
  TotalHeldJobs = 0
  TotalIdleJobs = 0
  TotalJobAds = 0
  TotalRemovedJobs = 0
  TotalRunningJobs = 0
*****Methods********
  Submit(Ad)
  GetAd(Id)
  SetAttribute(Id, Name, Value)
  Hold(Id, Reason)
  Release(Id, Reason)
  Remove(Id, Reason)
  Fetch(Id, File, Start, End)
  GetStates(Submission, State)
  GetJobs(Submission)
  echo(sequence, body)
Exception in thread Thread-4 (most likely raised during interpreter shutdown):
Traceback (most recent call last):
  File "/usr/lib/python2.4/threading.py", line 442, in __bootstrap
  File "/usr/lib/python2.4/threading.py", line 422, in run
  File "/usr/lib/python2.4/site-packages/qpid/queue.py", line 84, in run
  File "/usr/lib/python2.4/site-packages/qmf/console.py", line 2253, in _v2Cb
  File "/usr/lib/python2.4/site-packages/qpid/generator.py", line 25, in <lambda>
  File "/usr/lib/python2.4/site-packages/qpid/connection.py", line 219, in invoke
  File "/usr/lib/python2.4/site-packages/qpid/connection.py", line 192, in write_op
  File "/usr/lib/python2.4/threading.py", line 112, in release
exceptions.TypeError: 'NoneType' object is not callable
Unhandled exception in thread started by
Error in sys.excepthook:

Original exception was:


[root@mrg-qe-05 freznice]# cat /var/lib/condor/condor_config.local
CONDOR_DEVELOPERS = NONE
CONDOR_DEVELOPERS_COLLECTOR = NONE

CONDOR_HOST = $(FULL_HOSTNAME)
COLLECTOR_NAME = Personal Condor
START = TRUE
SUSPEND = FALSE
PREEMPT = FALSE
KILL = FALSE
DAEMON_LIST = COLLECTOR, MASTER, NEGOTIATOR, SCHEDD, STARTD
NEGOTIATOR_INTERVAL = 20

#SCHEDD_CLUSTER_INITIAL_VALUE = 1000000
SCHEDD_CLUSTER_MAXIMUM_VALUE = 10

#UPDATE_INTERVAL=5
SCHEDD_CLUSTER_MAXIMUM_VALUE = 2
SCHEDD_CLUSTER_MAXIMUM_VALUE = 10

SCHEDD.PLUGINS = $(LIB)/plugins/MgmtScheddPlugin-plugin.so
COLLECTOR.PLUGINS = $(LIB)/plugins/MgmtCollectorPlugin-plugin.so
NEGOTIATOR.PLUGINS = $(LIB)/plugins/MgmtNegotiatorPlugin-plugin.so
MASTER.PLUGINS = $(LIB)/plugins/MgmtMasterPlugin-plugin.so
QMF_BROKER_HOST = $(FULL_HOSTNAME)
QMF_BROKER_PORT = 5672

Comment 1 Ken Giusti 2010-07-13 14:15:54 UTC
The qmf_list_objects.py script needs to call "delBroker()" to delete the broker returned by "addBroker()" before exiting.  Example:

bkr = s.addBroker()
.....

s.delBroker(bkr)

There is a feature request to add a "close()" interface to the session that will clean up all brokers automatically, but until then you'll need to call "delBroker()" by hand.

https://issues.apache.org/jira/browse/QPID-2730


Note You need to log in before you can comment on or make changes to this bug.