diff options
author | Alexandru DAMIAN <alexandru.damian@intel.com> | 2015-02-26 21:41:58 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2015-02-27 07:36:07 +0000 |
commit | ee1af30548a6ac3f243c9ee61f0988aa307c0c6b (patch) | |
tree | c92a1b207e4df112c856ad960b49d6abff6f921a /bitbake/lib/bb/ui | |
parent | 87c6a5482f9042c7dd663078f7ebe5222649a547 (diff) | |
download | poky-ee1af30548a6ac3f243c9ee61f0988aa307c0c6b.tar.gz |
bitbake: toasterui: do not use transactions if the database autocommits
Some databases, notably the SQLite3 adapter, force autocommits even if
the autocommit is turned off. The behavious is tracked in this bug:
http://bugs.python.org/issue8145#msg109965
Django refuses to work with autocommit off in this case, so we have
to take the same precautions when using manual transaction support.
[YOCTO #7363]
[YOCTO #7365]
(Bitbake rev: 90231ab63a129fa344d461c2911898ea0f07f206)
Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/ui')
-rw-r--r-- | bitbake/lib/bb/ui/buildinfohelper.py | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/bitbake/lib/bb/ui/buildinfohelper.py b/bitbake/lib/bb/ui/buildinfohelper.py index c0f42d2dcb..19ddd8e029 100644 --- a/bitbake/lib/bb/ui/buildinfohelper.py +++ b/bitbake/lib/bb/ui/buildinfohelper.py | |||
@@ -35,7 +35,7 @@ from bb.msg import BBLogFormatter as format | |||
35 | from django.db import models | 35 | from django.db import models |
36 | import logging | 36 | import logging |
37 | 37 | ||
38 | from django.db import transaction | 38 | from django.db import transaction, connection |
39 | 39 | ||
40 | logger = logging.getLogger("BitBake") | 40 | logger = logging.getLogger("BitBake") |
41 | 41 | ||
@@ -609,7 +609,9 @@ class BuildInfoHelper(object): | |||
609 | self.task_order = 0 | 609 | self.task_order = 0 |
610 | self.autocommit_step = 1 | 610 | self.autocommit_step = 1 |
611 | self.server = server | 611 | self.server = server |
612 | transaction.set_autocommit(False) | 612 | # we use manual transactions if the database doesn't autocommit on us |
613 | if not connection.features.autocommits_when_autocommit_is_off: | ||
614 | transaction.set_autocommit(False) | ||
613 | self.orm_wrapper = ORMWrapper() | 615 | self.orm_wrapper = ORMWrapper() |
614 | self.has_build_history = has_build_history | 616 | self.has_build_history = has_build_history |
615 | self.tmp_dir = self.server.runCommand(["getVariable", "TMPDIR"])[0] | 617 | self.tmp_dir = self.server.runCommand(["getVariable", "TMPDIR"])[0] |
@@ -929,11 +931,12 @@ class BuildInfoHelper(object): | |||
929 | task_information['outcome'] = Task.OUTCOME_FAILED | 931 | task_information['outcome'] = Task.OUTCOME_FAILED |
930 | del self.internal_state['taskdata'][identifier] | 932 | del self.internal_state['taskdata'][identifier] |
931 | 933 | ||
932 | # we force a sync point here, to get the progress bar to show | 934 | if not connection.features.autocommits_when_autocommit_is_off: |
933 | if self.autocommit_step % 3 == 0: | 935 | # we force a sync point here, to get the progress bar to show |
934 | transaction.set_autocommit(True) | 936 | if self.autocommit_step % 3 == 0: |
935 | transaction.set_autocommit(False) | 937 | transaction.set_autocommit(True) |
936 | self.autocommit_step += 1 | 938 | transaction.set_autocommit(False) |
939 | self.autocommit_step += 1 | ||
937 | 940 | ||
938 | self.orm_wrapper.get_update_task_object(task_information, True) # must exist | 941 | self.orm_wrapper.get_update_task_object(task_information, True) # must exist |
939 | 942 | ||
@@ -1207,4 +1210,5 @@ class BuildInfoHelper(object): | |||
1207 | for event in self.internal_state['backlog']: | 1210 | for event in self.internal_state['backlog']: |
1208 | logger.error("UNSAVED log: %s", event.msg) | 1211 | logger.error("UNSAVED log: %s", event.msg) |
1209 | 1212 | ||
1210 | transaction.set_autocommit(True) | 1213 | if not connection.features.autocommits_when_autocommit_is_off: |
1214 | transaction.set_autocommit(True) | ||