[Buildbot-commits] [Buildbot] #2600: buildbot try doesn't work with patches >=64kb when using a mysqlite database
Buildbot trac
trac at buildbot.net
Sun Dec 1 13:52:05 UTC 2013
#2600: buildbot try doesn't work with patches >=64kb when using a mysqlite
database
---------------------+--------------------------------
Reporter: dluntzer | Owner:
Type: defect | Status: new
Priority: major | Milestone: undecided
Version: 0.8.8 | Keywords: database try mysql
---------------------+--------------------------------
When using pb as connection method for try builds the patches are storred
in the database.
The current buildbot implementation uses the mysql-type "text" to store
the patch-data.
According to the mysql-documentation the maximum size of this type is 64kb
(http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html).
When submitting a try-build with a patch-size larger than 64kb the try
command does not return an error message but the patch is never processed.
According to the output of the web interface (see output below) base64
decoding of the patch fails and the triggered buildslaves stop working.
To solve this exception the patch has to be manually removed from the
database.
If the 64kb limit for mysql is intended it would be better to not accept
patches exceeding this limit and to return an error message. Otherwise
changing the datatype to mediumtext (limit 16mb) or longtext could solve
this issue...
web.Server Traceback (most recent call last):
exceptions.TypeError: Incorrect padding
/usr/local/lib/python2.7/dist-
packages/Twisted-13.2.0-py2.7-linux-i686.egg/twisted/internet/defer.py:1097
in _inlineCallbacks
1096 if isFailure:
1097 result = result.throwExceptionIntoGenerator(g)
1098 else:
/usr/local/lib/python2.7/dist-
packages/Twisted-13.2.0-py2.7-linux-i686.egg/twisted/python/failure.py:389
in throwExceptionIntoGenerator
388 """
389 return g.throw(self.type, self.value, self.tb)
390
/usr/local/lib/python2.7/dist-
packages/buildbot-0.8.8-py2.7.egg/buildbot/status/web/builder.py:266 in
content
265
266 source = yield pb.getSourceStamp()
267 submitTime = yield pb.getSubmitTime()
/usr/local/lib/python2.7/dist-
packages/Twisted-13.2.0-py2.7-linux-i686.egg/twisted/internet/defer.py:1097
in _inlineCallbacks
1096 if isFailure:
1097 result = result.throwExceptionIntoGenerator(g)
1098 else:
/usr/local/lib/python2.7/dist-
packages/Twisted-13.2.0-py2.7-linux-i686.egg/twisted/python/failure.py:389
in throwExceptionIntoGenerator
388 """
389 return g.throw(self.type, self.value, self.tb)
390
/usr/local/lib/python2.7/dist-
packages/buildbot-0.8.8-py2.7.egg/buildbot/status/buildrequest.py:85 in
getSourceStamp
84 def getSourceStamp(self):
85 br = yield self._getBuildRequest()
86 defer.returnValue(br.source)
/usr/local/lib/python2.7/dist-
packages/Twisted-13.2.0-py2.7-linux-i686.egg/twisted/internet/defer.py:1097
in _inlineCallbacks
1096 if isFailure:
1097 result = result.throwExceptionIntoGenerator(g)
1098 else:
/usr/local/lib/python2.7/dist-
packages/Twisted-13.2.0-py2.7-linux-i686.egg/twisted/python/failure.py:389
in throwExceptionIntoGenerator
388 """
389 return g.throw(self.type, self.value, self.tb)
390
/usr/local/lib/python2.7/dist-
packages/buildbot-0.8.8-py2.7.egg/buildbot/status/buildrequest.py:58 in
_getBuildRequest
57 br = yield
buildrequest.BuildRequest.fromBrdict(self.master,
58 brd)
59 self._buildrequest = br
/usr/local/lib/python2.7/dist-
packages/Twisted-13.2.0-py2.7-linux-i686.egg/twisted/internet/defer.py:1097
in _inlineCallbacks
1096 if isFailure:
1097 result = result.throwExceptionIntoGenerator(g)
1098 else:
/usr/local/lib/python2.7/dist-
packages/Twisted-13.2.0-py2.7-linux-i686.egg/twisted/python/failure.py:389
in throwExceptionIntoGenerator
388 """
389 return g.throw(self.type, self.value, self.tb)
390
/usr/local/lib/python2.7/dist-
packages/buildbot-0.8.8-py2.7.egg/buildbot/process/buildrequest.py:116 in
_make_br
115 # fetch the sourcestamp dictionary
116 sslist = yield
master.db.sourcestamps.getSourceStamps(buildset['sourcestampsetid'])
117 assert len(sslist) > 0, "Empty sourcestampset: db schema
enforces set to exist but cannot enforce a non empty set"
/usr/local/lib/python2.7/dist-
packages/Twisted-13.2.0-py2.7-linux-i686.egg/twisted/internet/defer.py:1097
in _inlineCallbacks
1096 if isFailure:
1097 result = result.throwExceptionIntoGenerator(g)
1098 else:
/usr/local/lib/python2.7/dist-
packages/Twisted-13.2.0-py2.7-linux-i686.egg/twisted/python/failure.py:389
in throwExceptionIntoGenerator
388 """
389 return g.throw(self.type, self.value, self.tb)
390
/usr/local/lib/python2.7/dist-
packages/buildbot-0.8.8-py2.7.egg/buildbot/db/sourcestamps.py:95 in
getSourceStamps
94 for ssid in ssids:
95 sourcestamp = yield self.getSourceStamp(ssid)
96 sslist.append(sourcestamp)
/usr/local/lib/python2.7/dist-
packages/Twisted-13.2.0-py2.7-linux-i686.egg/twisted/python/threadpool.py:191
in _worker
190 try:
191 result = context.call(ctx, function, *args,
**kwargs)
192 success = True
/usr/local/lib/python2.7/dist-
packages/Twisted-13.2.0-py2.7-linux-i686.egg/twisted/python/context.py:118
in callWithContext
117 def callWithContext(self, ctx, func, *args, **kw):
118 return self.currentContext().callWithContext(ctx, func, *args,
**kw)
119
/usr/local/lib/python2.7/dist-
packages/Twisted-13.2.0-py2.7-linux-i686.egg/twisted/python/context.py:81
in callWithContext
80 try:
81 return func(*args,**kw)
82 finally:
/usr/local/lib/python2.7/dist-
packages/buildbot-0.8.8-py2.7.egg/buildbot/db/pool.py:184 in __thd
183 try:
184 rv = callable(arg, *args, **kwargs)
185 assert not isinstance(rv, sa.engine.ResultProxy), \
/usr/local/lib/python2.7/dist-
packages/buildbot-0.8.8-py2.7.egg/buildbot/db/sourcestamps.py:129 in thd
128 ssdict['patch_comment'] = row.patch_comment
129 body = base64.b64decode(row.patch_base64)
130 ssdict['patch_body'] = body
/usr/lib/python2.7/base64.py:76 in b64decode
75 # Transform this exception for consistency
76 raise TypeError(msg)
77
exceptions.TypeError: Incorrect padding
--
Ticket URL: <http://trac.buildbot.net/ticket/2600>
Buildbot <http://buildbot.net/>
Buildbot: build/test automation
More information about the Commits
mailing list