[Buildbot-commits] [SPAM] Re: [Buildbot] #692: exceptions.AssertionError: assert s.number == self.nextBuildNumber - 1

Buildbot buildbot-devel at lists.sourceforge.net
Mon Jan 25 22:20:45 UTC 2010


#692: exceptions.AssertionError: assert s.number == self.nextBuildNumber - 1
--------------------+-------------------------------------------------------
Reporter:  rackamx  |        Owner:       
    Type:  defect   |       Status:  new  
Priority:  major    |    Milestone:  0.8.0
 Version:  0.7.11   |   Resolution:       
Keywords:           |  
--------------------+-------------------------------------------------------

Comment(by rackamx):

 I haven't tried 0.7.12 yet, but I will next time this problem happened. It
 happened once only so far, after more than 100days of uptime. There isn't
 anything really special about this config, the only thing might be how the
 locks are dealt with, to get per build locks. Example below. Thanks for
 your help, and thanks for the awesome work on this program !

 {{{
 c['slaves'] = [BuildSlave('fooslave', 'foopwd', max_builds = 5)]

 ################################################################################
 #                              Schedulers
 #
 ################################################################################
 c['schedulers'] = [
     Scheduler('footest2', svn_mod_foo, 4 * 3600, ['footest2']),
     Nightly('foobuild', ['foobuild'], 0, 12),
     Nightly('foobuild_reg', ['foobuild_reg'], 0, 13),
     Nightly('foobuild_reg_unit', ['foobuild_reg_unit'], 0, 3),
     Nightly('footest1', ['footest1'], 0, 2),
 ]

 footest2 = BuildFactory()
 footest1 = BuildFactory()
 foobuild = BuildFactory()
 foobuild = BuildFactory()
 foobuild_reg = BuildFactory()
 foobuild_reg_unit = BuildFactory()

 ################################################################################
 #                               Locks
 #
 ################################################################################
 locks  = {}
 rlocks = {}
 wlocks = {}

 def getRWLock(name, ldict, mode) :
     if not ldict.has_key(name) :
         if not locks.has_key(name) :
             locks[name] = SlaveLock(name, maxCount = 10)
         ldict[name]      = LockAccess(locks[name], mode)
         ldict[name].name = name
     return ldict[name]

 def getRLock(name) :
     ''' Get a R lock, means the builder is using this guy '''
     return getRWLock(name, rlocks, 'counting')

 def getWLock(name) :
     ''' Get a W lock, means the builder is generating this guy '''
     return getRWLock(name, wlocks, 'exclusive')

 ################################################################################
 #                                 Builders
 #
 ################################################################################
 c['builders'] = [
     {
         'name': 'foobuild',
         'slavename': 'fooslave',
         'builddir': 'foobuild',
         'factory': foobuild,
         'locks': [getWLock('foobuild')],
     },
     {
         'name': 'foobuild_reg',
         'slavename': 'fooslave',
         'builddir': 'foobuild_reg',
         'factory': foobuild_reg,
         'locks': [getRLock('foobuild'), getWLock('foobuild_reg')],
     },
     {
         'name': 'foobuild_reg_unit',
         'slavename': 'fooslave',
         'builddir': 'foobuild_reg_unit',
         'factory': foobuild_reg_unit,
         'locks': [getRLock('foobuild'), getWLock('foobuild_reg')],
     },
     {
         'name': 'footest1',
         'slavename': 'fooslave',
         'builddir': 'footest1',
         'factory': footest1,
         'locks': [getRLock('foobuild')],
     },
     {
         'name': 'footest2',
         'slavename': 'fooslave',
         'builddir': 'footest2',
         'factory': footest2,
         'locks': [getRLock('foobuild')],
     },
  ]
 }}}

-- 
Ticket URL: <http://buildbot.net/trac/ticket/692#comment:2>
Buildbot <http://buildbot.net/>
Buildbot: build/test automation


More information about the Commits mailing list