#3182 closed undecided (fixed)
MailNotifier throws exceptions.AttributeError: 'NoneType' object has no attribute 'subscribe'
Reported by: | daniel@… | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | undecided |
Version: | master | Keywords: | mail, osx |
Cc: |
Description
I get the following exception when using MailNotifier?:
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/defer.py", line 1155, in gotResult _inlineCallbacks(r, g, deferred) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/defer.py", line 1099, in _inlineCallbacks result = g.send(result) File "/Library/Python/2.7/site-packages/buildbot-0.9.0-py2.7.egg/buildbot/util/service.py", line 43, in reconfigServiceWithBuildbotConfig yield svc.reconfigServiceWithBuildbotConfig(new_config) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/defer.py", line 1237, in unwindGenerator return _inlineCallbacks(None, gen, Deferred()) --- <exception caught here> --- File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/defer.py", line 1099, in _inlineCallbacks result = g.send(result) File "/Library/Python/2.7/site-packages/buildbot-0.9.0-py2.7.egg/buildbot/status/master.py", line 92, in reconfigServiceWithBuildbotConfig yield sr.setServiceParent(self) File "/Library/Python/2.7/site-packages/buildbot-0.9.0-py2.7.egg/buildbot/status/mail.py", line 469, in setServiceParent self.master_status.subscribe(self) exceptions.AttributeError: 'NoneType' object has no attribute 'subscribe'
Repro steps:
- buildbot create-master temp-master
- mv temp-master/temp-master.cfg.sample temp-master/master.cfg
- Change the cfg file to include the following lines:
from buildbot.plugins import status m = status.MailNotifier(fromaddr="buildbot@localhost", extraRecipients=["builds@lists.example.com"], sendToInterestedUsers=False) c['status'] = [] c['status'].append(m)
- buildbot start temp-master
Change History (12)
comment:1 Changed 4 years ago by ewong
comment:2 Changed 4 years ago by ewong
Got GH:1525 up for review.
comment:3 Changed 4 years ago by daniel@…
Thanks!
I changed the code locally and I also doesn't get the exception anymore so I will do some more testing to make sure the MailNotifier? works.
Cheers!
comment:4 Changed 4 years ago by ewong
the fix was easy to figure out. Now I need to figure out the test that needs to come with it.
comment:5 Changed 4 years ago by daniel@…
This may or may not be related but when I tried this for real (I submitted a failing git commit) I now get this:
2015-02-05 10:18:35+0100 [-] Exception caught notifying <buildbot.status.mail.MailNotifier object at 0x10f2d33d0> of buildFinished event 2015-02-05 10:18:35+0100 [-] Unhandled Error Traceback (most recent call last): File "/Library/Python/2.7/site-packages/buildbot-0.9.0-py2.7.egg/buildbot/status/build.py", line 267, in buildFinished w.callback(self) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/defer.py", line 382, in callback self._startRunCallbacks(result) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/defer.py", line 490, in _startRunCallbacks self._runCallbacks() File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/defer.py", line 577, in _runCallbacks current.result = callback(current.result, *args, **kw) --- <exception caught here> --- File "/Library/Python/2.7/site-packages/buildbot-0.9.0-py2.7.egg/buildbot/status/builder.py", line 582, in _buildFinished w.buildFinished(name, s, results) File "/Library/Python/2.7/site-packages/buildbot-0.9.0-py2.7.egg/buildbot/status/mail.py", line 554, in buildFinished return self.buildMessage(name, [build], results) File "/Library/Python/2.7/site-packages/buildbot-0.9.0-py2.7.egg/buildbot/status/mail.py", line 752, in buildMessage build=build, results=build.results) File "/Library/Python/2.7/site-packages/buildbot-0.9.0-py2.7.egg/buildbot/status/mail.py", line 733, in buildMessageDict self.master_status) File "/Library/Python/2.7/site-packages/buildbot-0.9.0-py2.7.egg/buildbot/status/mail.py", line 212, in defaultMessage text += "Blamelist: %s\n" % ",".join(build.getResponsibleUsers()) exceptions.TypeError: sequence item 0: expected string, NoneType
I have setup the mailing like this (realname and pass removed)
mn = status.MailNotifier(fromaddr=“name@gmail.com", sendToInterestedUsers=True, useTls=True, relayhost="smtp.gmail.com", smtpPort=587, smtpUser=“name@gmail.com", smtpPassword=“pass_removed”)
comment:6 Changed 4 years ago by ewong
Do you happen to have any other config errors?
I don't see extraRecipients defined in your config and looking at the code, there should be a config.error raised, unless I missed something.
comment:7 Changed 4 years ago by daniel@…
I have no config errors (I also added extraRecipients to make sure that isn't the problem) but still the same issue. I also notice by looking at the log I get this error a while before the above Blamelist error) but it seems to process just fine even if this happens (but it may perhaps cause the other issue)
2015-02-05 11:15:26+0100 [-] added change with revision 3bb9302e5fe2d4f48e7ae82d012d944d23562136 to database 2015-02-05 11:15:27+0100 [-] added buildset 18 to database 2015-02-05 11:15:27+0100 [-] while invoking <bound method Status.br_consumer_cb of <buildbot.status.master.Status instance at 0x108935ea8>> Traceback (most recent call last): File "/Library/Python/2.7/site-packages/buildbot-0.9.0-py2.7.egg/buildbot/data/base.py", line 69, in produceEvent self.master.mq.produce(routingKey, msg) File "/Library/Python/2.7/site-packages/buildbot-0.9.0-py2.7.egg/buildbot/mq/simple.py", line 43, in produce qref.invoke(routingKey, data) File "/Library/Python/2.7/site-packages/buildbot-0.9.0-py2.7.egg/buildbot/mq/base.py", line 41, in invoke x = self.callback(routing_key, data) File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/defer.py", line 1237, in unwindGenerator return _inlineCallbacks(None, gen, Deferred()) --- <exception caught here> --- File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/defer.py", line 1099, in _inlineCallbacks result = g.send(result) File "/Library/Python/2.7/site-packages/buildbot-0.9.0-py2.7.egg/buildbot/status/master.py", line 429, in br_consumer_cb msg['brid'], self) exceptions.KeyError: 'brid'
comment:8 Changed 4 years ago by dustin
It looks like ewong's patch fixed the first traceback.
The last should be similarly easy to fix -- see what kind of data API dictionary br_consumer_cb is getting, and why it doesn't have a brid key.
In general, MailNotifier?'s still built around the old Status hierarchy, and hasn't been upgraded to use the data API. It's been hacked around the edges to keep it sort of functional, but you're seeing some of the problems with that now.
comment:9 Changed 4 years ago by ewong
I'm looking at the datadict, and I'm thinking brid should actually be changed to buildrequestid.
Being 'lazy' that I am, I'm putting the GH:1528 here.
comment:10 Changed 4 years ago by dustin
- Resolution set to fixed
- Status changed from new to closed
Nice work - thanks!
comment:11 Changed 4 years ago by daniel@…
Thanks for fixing this!
I'm stilling having the "build.getResponsibleUsers()" issue so I wonder if I should create a separate ticket for that?
Cheers!
comment:12 Changed 4 years ago by sa2ajj
Daniel, please do file a separate ticket.
I think I might know why it's tracebacking.
in status/mail.py:
I think the first line in setServiceParent() should be
Since self.parent doesn't exist (from my cursory glance) in MailNotifier?()
If this is correct, I'll get a GP up.
(I just tested my hypothesis, and it seems to reconfig properly... )