Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(28)

Side by Side Diff: third_party/buildbot_8_4p1/buildbot/db/pool.py

Issue 2134453003: Revert of Cherry-pick buildbot 6bd279caf945e51882a1126288355528db68c769: (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/build.git@buildbot-docs
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # This file is part of Buildbot. Buildbot is free software: you can 1 # This file is part of Buildbot. Buildbot is free software: you can
2 # redistribute it and/or modify it under the terms of the GNU General Public 2 # redistribute it and/or modify it under the terms of the GNU General Public
3 # License as published by the Free Software Foundation, version 2. 3 # License as published by the Free Software Foundation, version 2.
4 # 4 #
5 # This program is distributed in the hope that it will be useful, but WITHOUT 5 # This program is distributed in the hope that it will be useful, but WITHOUT
6 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 6 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
7 # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more 7 # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
8 # details. 8 # details.
9 # 9 #
10 # You should have received a copy of the GNU General Public License along with 10 # You should have received a copy of the GNU General Public License along with
(...skipping 30 matching lines...) Expand all
41 # connection (and thus thread) should be used. 41 # connection (and thus thread) should be used.
42 if hasattr(engine, 'optimal_thread_pool_size'): 42 if hasattr(engine, 'optimal_thread_pool_size'):
43 pool_size = engine.optimal_thread_pool_size 43 pool_size = engine.optimal_thread_pool_size
44 44
45 threadpool.ThreadPool.__init__(self, 45 threadpool.ThreadPool.__init__(self,
46 minthreads=1, 46 minthreads=1,
47 maxthreads=pool_size, 47 maxthreads=pool_size,
48 name='DBThreadPool') 48 name='DBThreadPool')
49 self.engine = engine 49 self.engine = engine
50 if engine.dialect.name == 'sqlite': 50 if engine.dialect.name == 'sqlite':
51 vers = self.get_sqlite_version() 51 log.msg("applying SQLite workaround from Buildbot bug #1810")
52 log.msg("Using SQLite Version %s" % (vers,)) 52 self.__broken_sqlite = self.detect_bug1810()
53 if vers < (3,3,17):
54 log.msg("NOTE: this old version of SQLite does not support "
55 "multiple simultaneous accesses to the database; "
56 "add the 'pool_size=1' argument to your db url")
57 brkn = self.__broken_sqlite = self.detect_bug1810()
58 if brkn:
59 log.msg("Applying SQLite workaround from Buildbot bug #1810")
60 self._start_evt = reactor.callWhenRunning(self._start) 53 self._start_evt = reactor.callWhenRunning(self._start)
61 54
62 def _start(self): 55 def _start(self):
63 self._start_evt = None 56 self._start_evt = None
64 if not self.running: 57 if not self.running:
65 self.start() 58 self.start()
66 self._stop_evt = reactor.addSystemEventTrigger( 59 self._stop_evt = reactor.addSystemEventTrigger(
67 'during', 'shutdown', self._stop) 60 'during', 'shutdown', self._stop)
68 self.running = True 61 self.running = True
69 62
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 172
180 try: 173 try:
181 test() 174 test()
182 except sqlite.OperationalError: 175 except sqlite.OperationalError:
183 # this is the expected error indicating it's broken 176 # this is the expected error indicating it's broken
184 return True 177 return True
185 178
186 # but this version should not fail.. 179 # but this version should not fail..
187 test(select_from_sqlite_master=True) 180 test(select_from_sqlite_master=True)
188 return False # not broken - no workaround required 181 return False # not broken - no workaround required
189
190 def get_sqlite_version(self):
191 engine = sa.create_engine('sqlite://')
192 conn = engine.contextual_connect()
193
194 try:
195 r = conn.execute("SELECT sqlite_version()")
196 vers_row = r.fetchone()
197 r.close()
198 except:
199 return (0,)
200
201 if vers_row:
202 try:
203 return tuple(map(int, vers_row[0].split('.')))
204 except (TypeError, ValueError):
205 return (0,)
206 else:
207 return (0,)
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698