[Buildbot] #3490: re-enable foreign keys for sqlite
Buildbot trac
trac at buildbot.net
Thu Mar 17 12:27:38 UTC 2016
#3490: re-enable foreign keys for sqlite
------------------------+------------------------
Reporter: tardyp | Owner:
Type: enhancement | Status: new
Priority: major | Milestone: undecided
Version: master | Resolution:
Keywords: |
------------------------+------------------------
Comment (by delanne):
= context =
- DB backend: sqlite
- SingleBranchScheduler with treestabletimer > 0
- updated my buildbot master to the HEAD of the master branch (which was
2d11233d9b87052355c8d228ab30de44cf8162f8).
after doing a git bisect, 68b8542f2f86dcc0c10ae475fa24801083261369 was the
changeset which introduce the issue.
= symptoms =
- No build scheduled
= investigations =
- in schedulers/basic.py
{{{
@util.deferredLocked('_stable_timers_lock')
@defer.inlineCallbacks
def stableTimerFired(self, timer_name):
# delete this now-fired timer, if the service has already been
stopped
# then just bail out
if not self._stable_timers.pop(timer_name, None):
return
classifications = \
yield self.getChangeClassificationsForTimer(self.objectid,
timer_name)
# just in case: databases do weird things sometimes!
if not classifications: # pragma: no cover
return
changeids = sorted(classifications.keys())
yield self.addBuildsetForChanges(reason=self.reason,
changeids=changeids)
max_changeid = changeids[-1] # (changeids are sorted)
yield self.master.db.schedulers.flushChangeClassifications(
self.objectid, less_than=max_changeid + 1)
}}}
the function self.getChangeClassificationsForTimer returns an empty dict,
as a consequence the buildset is not created.
= discussion on irc =
Here's a copy/paste of the discussion we had on IRC about this issue:
{{{
<delanne> I think there's a regression in the master branch, since I
updated my buildbot from 605ed7bdb8686a710a4b7e7a51e9d78f03e346c1 to HEAD,
my builders aren't triggered ...
<tardyp> delanne: weird. There is no change on the scheduler
<tardyp> the only big thing is the slaveworker
<delanne> well, I did a git bisect and the result is:
<delanne> with 60e6ef4496090a649d8cd910b9719e54300d88f3, everything works
as expected
<delanne> and the commit after, my builders aren't triggered
<delanne> so, 68b8542f2f86dcc0c10ae475fa24801083261369 seems to introduce
the regression
<delanne> I continue to investigate ...
<tardyp> can you git bisect?
<tardyp> ah sorry
<tardyp> you did it :-}
<tardyp> I read too fast
<tardyp> 68b8542f2f86dcc0c10ae475fa24801083261369 is a merge commit
<tardyp> I also experience some issue with schedulers
<delanne> well,
<tardyp> but it is not always. some works some dont (always the same
project)
<delanne> if it helps
<delanne> schedulers/basic.py line 191
<delanne> yield self.getChangeClassificationsForTimer(self.objectid,
<delanne>
timer_name)
<delanne> returns an empty dict in my case
<delanne> so :
<delanne> if not classifications: # pragma: no cover
<delanne> return
<delanne> as a consequence, the buildset is not added
<tardyp> hmm
<delanne> (I use a stableTimer in my config)
<delanne> and I use SingleBranchScheduler
<tardyp> you are sqlite?
<delanne> yes
<tardyp> bug3472 is adding foreign key checks enforcements
<delanne> for the SingleBranchScheduler, the function
getChangeClassifications use the db layer directly, and not the data
layer. is this expected ?
<tardyp> I expect it to be a legacy issue
<delanne> I deleted my sqlite file, and recreate it with upgrade-master
<tardyp> you copied you sqlitefile!
<tardyp> so that we could postmortem?
<delanne> I first upgraded my sql file ... in order to see if that solves
the issue, but no
<delanne> so I deleted it, and recreated it from scratch
<delanne> but, the issue is still there.
<tardyp> ok
<tardyp> in enginestrategy.py +118
<tardyp> can you disable fk quick?
<tardyp> and see if this fixes?
<delanne> ok
<tardyp> as nobody is using pg with bb nine, we may have some fk bugs
<delanne> it fixes
<delanne> thanks
<delanne> to be clear, what I did is:
<delanne> connection.execute('pragma foreign_keys=OFF')
<tardyp> You can use this as a workaround. but the bug is probably
elsewere
<tardyp> either its a bug in sqlite foreigh key
<tardyp> or its a bug in our code, and other people will see it with fk
enabled db
}}}
--
Ticket URL: <http://trac.buildbot.net/ticket/3490#comment:2>
Buildbot <http://buildbot.net/>
Buildbot: build/test automation
More information about the bugs
mailing list