[Buildbot-devel] Perforce problem with error responses

John Bäckstrand sandos at sandos.se
Tue Nov 6 13:51:50 UTC 2007


I am wondering if anyone is using p4polller in buildbot? I have seen
older references to where DNS failures makes the poller die, and our
perforce server for some reason has problems accessing its DB once every
24h (probably due to virus scanning), resulting in an error response,
which makes p4poller die.

I would love to fix this problem myself, but I am very unfamiliar with
Twisted and Deferreds. I've tried a few things in p4poller.py, but I
have yet to succeed.

This is how it looks:

----

2007/11/05 23:08 +0200 [-] P4 poll failed: [Failure instance: Traceback
(failure with no frames): exceptions.IOError: got stderr: "Date
2007/11/05 22:08:03:\nOperation: user-changes\nOperation 'dbopen'
failed.\nDatabase open error on db.have!\ndbopen: db.have: The process
cannot access the file because it is being used by another process.\r\n\n"
         ]
2007/11/05 23:08 +0200 [-] Unhandled error in Deferred:
2007/11/05 23:08 +0200 [-] Unhandled Error
         Traceback (most recent call last):
         Failure: exceptions.IOError: got stderr: "Date 2007/11/05
22:08:03:\nOperation: user-changes\nOperation 'dbopen' failed.\nDatabase
open error on db.have!\ndbopen: db.have: The process cannot access the
file because it is being used by another process.\r\n\n"

----

I assume it is as easy as returning the correct thing in _finish or
possibly some other place. I saw that yet another deferred was used from
within _process_changes, and I don't think that one has any errbacks?
Specifically this code:

         # Retrieve each sequentially.
         d = defer.succeed(None)
         for c in changelists:
             d.addCallback(self._get_describe, c)
             d.addCallback(self._process_describe, c)
         return d


I am not convinced this actually ever gets run in my case.




More information about the devel mailing list