summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorAlexandru DAMIAN <alexandru.damian@intel.com>2015-03-09 11:23:47 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-03-09 14:33:47 +0000
commite248a503ba84658dea086e65e9cde8b845b9c0ed (patch)
tree2eb055c52def9025e07103540a484af9a4a942fd /bitbake
parent7d9dd125f1207d4b1751763d9fd33d8ed1d74498 (diff)
downloadast2050-yocto-poky-e248a503ba84658dea086e65e9cde8b845b9c0ed.zip
ast2050-yocto-poky-e248a503ba84658dea086e65e9cde8b845b9c0ed.tar.gz
bitbake: toaster: models.py do not use transactions
This is the counterpart patch of do not use transactions if the database autocommits fix on toasterui, applied to models.py [YOCTO #7402] (Bitbake rev: 48d0d510816346073f135bb86fb7904fdb50bb27) Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/toaster/orm/models.py34
1 files changed, 23 insertions, 11 deletions
diff --git a/bitbake/lib/toaster/orm/models.py b/bitbake/lib/toaster/orm/models.py
index 90e11d2..4d1dcbc 100644
--- a/bitbake/lib/toaster/orm/models.py
+++ b/bitbake/lib/toaster/orm/models.py
@@ -724,7 +724,7 @@ class LayerIndexLayerSource(LayerSource):
"""
assert self.apiurl is not None
from django.db import IntegrityError
- from django.db import transaction
+ from django.db import transaction, connection
import httplib, urlparse, json
import os
@@ -789,7 +789,8 @@ class LayerIndexLayerSource(LayerSource):
# update layers
layers_info = _get_json_response(apilinks['layerItems'])
- transaction.set_autocommit(False)
+ if not connection.features.autocommits_when_autocommit_is_off:
+ transaction.set_autocommit(False)
for li in layers_info:
l, created = Layer.objects.get_or_create(layer_source = self, name = li['name'])
l.up_id = li['id']
@@ -801,7 +802,8 @@ class LayerIndexLayerSource(LayerSource):
l.summary = li['summary']
l.description = li['description']
l.save()
- transaction.set_autocommit(True)
+ if not connection.features.autocommits_when_autocommit_is_off:
+ transaction.set_autocommit(True)
# update layerbranches/layer_versions
print "Fetching layer information"
@@ -809,7 +811,8 @@ class LayerIndexLayerSource(LayerSource):
+ "?filter=branch:%s" % "OR".join(map(lambda x: str(x.up_id), [i for i in Branch.objects.filter(layer_source = self) if i.up_id is not None] ))
)
- transaction.set_autocommit(False)
+ if not connection.features.autocommits_when_autocommit_is_off:
+ transaction.set_autocommit(False)
for lbi in layerbranches_info:
lv, created = Layer_Version.objects.get_or_create(layer_source = self,
up_id = lbi['id'],
@@ -822,12 +825,14 @@ class LayerIndexLayerSource(LayerSource):
lv.commit = lbi['actual_branch']
lv.dirpath = lbi['vcs_subdir']
lv.save()
- transaction.set_autocommit(True)
+ if not connection.features.autocommits_when_autocommit_is_off:
+ transaction.set_autocommit(True)
# update layer dependencies
layerdependencies_info = _get_json_response(apilinks['layerDependencies'])
dependlist = {}
- transaction.set_autocommit(False)
+ if not connection.features.autocommits_when_autocommit_is_off:
+ transaction.set_autocommit(False)
for ldi in layerdependencies_info:
try:
lv = Layer_Version.objects.get(layer_source = self, up_id = ldi['layerbranch'])
@@ -846,7 +851,8 @@ class LayerIndexLayerSource(LayerSource):
LayerVersionDependency.objects.filter(layer_version = lv).delete()
for lvd in dependlist[lv]:
LayerVersionDependency.objects.get_or_create(layer_version = lv, depends_on = lvd)
- transaction.set_autocommit(True)
+ if not connection.features.autocommits_when_autocommit_is_off:
+ transaction.set_autocommit(True)
# update machines
@@ -854,21 +860,26 @@ class LayerIndexLayerSource(LayerSource):
machines_info = _get_json_response(apilinks['machines']
+ "?filter=layerbranch:%s" % "OR".join(map(lambda x: str(x.up_id), Layer_Version.objects.filter(layer_source = self)))
)
- transaction.set_autocommit(False)
+
+ if not connection.features.autocommits_when_autocommit_is_off:
+ transaction.set_autocommit(False)
for mi in machines_info:
mo, created = Machine.objects.get_or_create(layer_source = self, up_id = mi['id'], layer_version = Layer_Version.objects.get(layer_source = self, up_id = mi['layerbranch']))
mo.up_date = mi['updated']
mo.name = mi['name']
mo.description = mi['description']
mo.save()
- transaction.set_autocommit(True)
+
+ if not connection.features.autocommits_when_autocommit_is_off:
+ transaction.set_autocommit(True)
# update recipes; paginate by layer version / layer branch
print "Fetching target information"
recipes_info = _get_json_response(apilinks['recipes']
+ "?filter=layerbranch:%s" % "OR".join(map(lambda x: str(x.up_id), Layer_Version.objects.filter(layer_source = self)))
)
- transaction.set_autocommit(False)
+ if not connection.features.autocommits_when_autocommit_is_off:
+ transaction.set_autocommit(False)
for ri in recipes_info:
try:
ro, created = Recipe.objects.get_or_create(layer_source = self, up_id = ri['id'], layer_version = Layer_Version.objects.get(layer_source = self, up_id = ri['layerbranch']))
@@ -886,7 +897,8 @@ class LayerIndexLayerSource(LayerSource):
except:
#print "Duplicate Recipe, ignoring: ", vars(ro)
pass
- transaction.set_autocommit(True)
+ if not connection.features.autocommits_when_autocommit_is_off:
+ transaction.set_autocommit(True)
pass
class BitbakeVersion(models.Model):
OpenPOWER on IntegriCloud