All of lore.kernel.org
 help / color / mirror / Atom feed
* [1.44 0/7] patch review
@ 2020-02-09 16:03 Armin Kuster
  2020-02-09 16:03 ` [1.44 1/7] fetch2: do not suffix srcrev cache key with PN Armin Kuster
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Armin Kuster @ 2020-02-09 16:03 UTC (permalink / raw)
  To: bitbake-devel

Here are a few more changes targeted for the zeus 3.0.2 release.
Please have comments back by Tuesday.

The following changes since commit 1a026d4aca47ed1b0b74a8a818635e7520e8f9c8:

  runqueue: Use a set for the setscene tasks list (2020-01-18 12:20:38 -0800)

are available in the Git repository at:

  git://git.openembedded.org/bitbake-contrib stable/1.44-nut
  http://cgit.openembedded.org/bitbake-contrib/log/?h=stable/1.44-nut

Chris Laplante (3):
  fetch2: do not suffix srcrev cache key with PN
  fetch2/git: _revision_key: collapse adjacent slashes
  persist_data.py: Immediately get exclusive lock in __setitem__

Frazer Clews (1):
  cooker/toaster: replaced deprecated method warn() with warning()

Richard Purdie (3):
  siggen: Optimise get_unihash disk based cache handling
  siggen: Cache unihash values to avoid cache lookup
  siggen: Avoid cache mismatch issues with locked sigs

 lib/bb/cooker.py                              |  2 +-
 lib/bb/fetch2/__init__.py                     |  3 +-
 lib/bb/fetch2/git.py                          |  4 +-
 lib/bb/persist_data.py                        |  3 +
 lib/bb/siggen.py                              | 68 +++++++++++++------
 .../management/commands/runbuilds.py          |  6 +-
 6 files changed, 60 insertions(+), 26 deletions(-)

-- 
2.17.1



^ permalink raw reply	[flat|nested] 8+ messages in thread

* [1.44 1/7] fetch2: do not suffix srcrev cache key with PN
  2020-02-09 16:03 [1.44 0/7] patch review Armin Kuster
@ 2020-02-09 16:03 ` Armin Kuster
  2020-02-09 16:03 ` [1.44 2/7] fetch2/git: _revision_key: collapse adjacent slashes Armin Kuster
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Armin Kuster @ 2020-02-09 16:03 UTC (permalink / raw)
  To: bitbake-devel

From: Chris Laplante <chris.laplante@agilent.com>

Prior to this change, two different recipes pulling from the same
exact repo could get a different SRCREV during a single parse session.

This was originally observed using git. For git at least, it still
allows recipes to pull from the same repo, but with different branches
or tags, since the form of the srcrev cache key for git is:

        "git:" + ud.host + ud.path.replace('/', '.') + ud.unresolvedrev[name]

Where the 'unresolvedrev' part is the branch or tag name.

Signed-off-by: Chris Laplante <chris.laplante@agilent.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 6c938e6fd29beebe09b32be839dae008fe6491d2)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
---
 lib/bb/fetch2/__init__.py | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py
index 731c1608..4a781bde 100644
--- a/lib/bb/fetch2/__init__.py
+++ b/lib/bb/fetch2/__init__.py
@@ -1567,8 +1567,7 @@ class FetchMethod(object):
         return True, str(latest_rev)
 
     def generate_revision_key(self, ud, d, name):
-        key = self._revision_key(ud, d, name)
-        return "%s-%s" % (key, d.getVar("PN") or "")
+        return self._revision_key(ud, d, name)
 
     def latest_versionstring(self, ud, d):
         """
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [1.44 2/7] fetch2/git: _revision_key: collapse adjacent slashes
  2020-02-09 16:03 [1.44 0/7] patch review Armin Kuster
  2020-02-09 16:03 ` [1.44 1/7] fetch2: do not suffix srcrev cache key with PN Armin Kuster
@ 2020-02-09 16:03 ` Armin Kuster
  2020-02-09 16:03 ` [1.44 3/7] persist_data.py: Immediately get exclusive lock in __setitem__ Armin Kuster
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Armin Kuster @ 2020-02-09 16:03 UTC (permalink / raw)
  To: bitbake-devel

From: Chris Laplante <chris.laplante@agilent.com>

From a SRCREV caching point of view, there is no reason to treat the
following upstreams as different:

    SRC_URI = "git://github.com/file/file.git"
    SRC_URI = "git://github.com//file/file.git"

Signed-off-by: Chris Laplante <chris.laplante@agilent.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 425e21c14955dd38868c6e97637df3bbe0f89fac)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
---
 lib/bb/fetch2/git.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/bb/fetch2/git.py b/lib/bb/fetch2/git.py
index fa41b078..9ba9cdcc 100644
--- a/lib/bb/fetch2/git.py
+++ b/lib/bb/fetch2/git.py
@@ -594,7 +594,9 @@ class Git(FetchMethod):
         """
         Return a unique key for the url
         """
-        return "git:" + ud.host + ud.path.replace('/', '.') + ud.unresolvedrev[name]
+        # Collapse adjacent slashes
+        slash_re = re.compile(r"/+")
+        return "git:" + ud.host + slash_re.sub(".", ud.path) + ud.unresolvedrev[name]
 
     def _lsremote(self, ud, d, search):
         """
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [1.44 3/7] persist_data.py: Immediately get exclusive lock in __setitem__
  2020-02-09 16:03 [1.44 0/7] patch review Armin Kuster
  2020-02-09 16:03 ` [1.44 1/7] fetch2: do not suffix srcrev cache key with PN Armin Kuster
  2020-02-09 16:03 ` [1.44 2/7] fetch2/git: _revision_key: collapse adjacent slashes Armin Kuster
@ 2020-02-09 16:03 ` Armin Kuster
  2020-02-09 16:03 ` [1.44 4/7] cooker/toaster: replaced deprecated method warn() with warning() Armin Kuster
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Armin Kuster @ 2020-02-09 16:03 UTC (permalink / raw)
  To: bitbake-devel

From: Chris Laplante <chris.laplante@agilent.com>

To avoid races, SQLTable::__setitem__ needs an exclusive lock for the
entire transaction, not just the INSERT/UPDATE part.

Signed-off-by: Chris Laplante <chris.laplante@agilent.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit feb43e7c30f5bfab75d718896c45df621810d06f)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
---
 lib/bb/persist_data.py | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/lib/bb/persist_data.py b/lib/bb/persist_data.py
index de8f87a8..7357ab2d 100644
--- a/lib/bb/persist_data.py
+++ b/lib/bb/persist_data.py
@@ -179,6 +179,9 @@ class SQLTable(collections.MutableMapping):
         elif not isinstance(value, str):
             raise TypeError('Only string values are supported')
 
+        # Ensure the entire transaction (including SELECT) executes under write lock
+        cursor.execute("BEGIN EXCLUSIVE")
+
         cursor.execute("SELECT * from %s where key=?;" % self.table, [key])
         row = cursor.fetchone()
         if row is not None:
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [1.44 4/7] cooker/toaster: replaced deprecated method warn() with warning()
  2020-02-09 16:03 [1.44 0/7] patch review Armin Kuster
                   ` (2 preceding siblings ...)
  2020-02-09 16:03 ` [1.44 3/7] persist_data.py: Immediately get exclusive lock in __setitem__ Armin Kuster
@ 2020-02-09 16:03 ` Armin Kuster
  2020-02-09 16:03 ` [1.44 5/7] siggen: Optimise get_unihash disk based cache handling Armin Kuster
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Armin Kuster @ 2020-02-09 16:03 UTC (permalink / raw)
  To: bitbake-devel

From: Frazer Clews <frazer.clews@codethink.co.uk>

Removed the deprecated methods as it will only cause problems later on,
and since warn() just calls warning(), it shouldn't change anything

Signed-off-by: Frazer Clews <frazer.clews@codethink.co.uk>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit a194f275235f22411cb2368f06a44f61ceb6a0f3)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
---
 lib/bb/cooker.py                                        | 2 +-
 lib/toaster/bldcontrol/management/commands/runbuilds.py | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index b74affa7..911805a6 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -1788,7 +1788,7 @@ class CookerCollectFiles(object):
                 # When constructing an older style single regex, it's possible for BBMASK
                 # to end up beginning with '|', which matches and masks _everything_.
                 if mask.startswith("|"):
-                    collectlog.warn("BBMASK contains regular expression beginning with '|', fixing: %s" % mask)
+                    collectlog.warning("BBMASK contains regular expression beginning with '|', fixing: %s" % mask)
                     mask = mask[1:]
                 try:
                     re.compile(mask)
diff --git a/lib/toaster/bldcontrol/management/commands/runbuilds.py b/lib/toaster/bldcontrol/management/commands/runbuilds.py
index 50ec4098..19f659ec 100644
--- a/lib/toaster/bldcontrol/management/commands/runbuilds.py
+++ b/lib/toaster/bldcontrol/management/commands/runbuilds.py
@@ -168,17 +168,17 @@ class Command(BaseCommand):
         try:
             self.cleanup()
         except Exception as e:
-            logger.warn("runbuilds: cleanup exception %s" % str(e))
+            logger.warning("runbuilds: cleanup exception %s" % str(e))
 
         try:
             self.archive()
         except Exception as e:
-            logger.warn("runbuilds: archive exception %s" % str(e))
+            logger.warning("runbuilds: archive exception %s" % str(e))
 
         try:
             self.schedule()
         except Exception as e:
-            logger.warn("runbuilds: schedule exception %s" % str(e))
+            logger.warning("runbuilds: schedule exception %s" % str(e))
 
     def handle(self, **options):
         pidfile_path = os.path.join(os.environ.get("BUILDDIR", "."),
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [1.44 5/7] siggen: Optimise get_unihash disk based cache handling
  2020-02-09 16:03 [1.44 0/7] patch review Armin Kuster
                   ` (3 preceding siblings ...)
  2020-02-09 16:03 ` [1.44 4/7] cooker/toaster: replaced deprecated method warn() with warning() Armin Kuster
@ 2020-02-09 16:03 ` Armin Kuster
  2020-02-09 16:03 ` [1.44 6/7] siggen: Cache unihash values to avoid cache lookup Armin Kuster
  2020-02-09 16:03 ` [1.44 7/7] siggen: Avoid cache mismatch issues with locked sigs Armin Kuster
  6 siblings, 0 replies; 8+ messages in thread
From: Armin Kuster @ 2020-02-09 16:03 UTC (permalink / raw)
  To: bitbake-devel

From: Richard Purdie <richard.purdie@linuxfoundation.org>

Currently the cache can grow huge since any previously used hash is
retained in the cache. This change moves to use one hash per task
which improves the speed of the functions considerably. Currently
performance is an issue, as are very large cache files and cache
load time.

By moving to a single hash per task, the shorted filename as a key
is no longer usable as the same recipe has multiple variants for
the same filename so this has to change.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit ed764e7fcf04b6d0ba6b4cac7415b1ee8f492865)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
---
 lib/bb/siggen.py | 50 +++++++++++++++++++++++++++++++-----------------
 1 file changed, 32 insertions(+), 18 deletions(-)

diff --git a/lib/bb/siggen.py b/lib/bb/siggen.py
index ded1da02..209a3428 100644
--- a/lib/bb/siggen.py
+++ b/lib/bb/siggen.py
@@ -44,6 +44,7 @@ class SignatureGenerator(object):
         self.file_checksum_values = {}
         self.taints = {}
         self.unitaskhashes = {}
+        self.tidtopn = {}
         self.setscenetasks = set()
 
     def finalise(self, fn, d, varient):
@@ -79,19 +80,19 @@ class SignatureGenerator(object):
         return
 
     def get_taskdata(self):
-        return (self.runtaskdeps, self.taskhash, self.file_checksum_values, self.taints, self.basehash, self.unitaskhashes, self.setscenetasks)
+        return (self.runtaskdeps, self.taskhash, self.file_checksum_values, self.taints, self.basehash, self.unitaskhashes, self.tidtopn, self.setscenetasks)
 
     def set_taskdata(self, data):
-        self.runtaskdeps, self.taskhash, self.file_checksum_values, self.taints, self.basehash, self.unitaskhashes, self.setscenetasks = data
+        self.runtaskdeps, self.taskhash, self.file_checksum_values, self.taints, self.basehash, self.unitaskhashes, self.tidtopn, self.setscenetasks = data
 
     def reset(self, data):
         self.__init__(data)
 
     def get_taskhashes(self):
-        return self.taskhash, self.unitaskhashes
+        return self.taskhash, self.unitaskhashes, self.tidtopn
 
     def set_taskhashes(self, hashes):
-        self.taskhash, self.unitaskhashes = hashes
+        self.taskhash, self.unitaskhashes, self.tidtopn = hashes
 
     def save_unitaskhashes(self):
         return
@@ -124,9 +125,10 @@ class SignatureGeneratorBasic(SignatureGenerator):
         else:
             self.checksum_cache = None
 
-        self.unihash_cache = bb.cache.SimpleCache("1")
+        self.unihash_cache = bb.cache.SimpleCache("3")
         self.unitaskhashes = self.unihash_cache.init_cache(data, "bb_unihashes.dat", {})
         self.localdirsexclude = (data.getVar("BB_SIGNATURE_LOCAL_DIRS_EXCLUDE") or "CVS .bzr .git .hg .osc .p4 .repo .svn").split()
+        self.tidtopn = {}
 
     def init_rundepcheck(self, data):
         self.taskwhitelist = data.getVar("BB_HASHTASK_WHITELIST") or None
@@ -210,6 +212,9 @@ class SignatureGeneratorBasic(SignatureGenerator):
         self.runtaskdeps[tid] = []
         self.file_checksum_values[tid] = []
         recipename = dataCache.pkg_fn[fn]
+
+        self.tidtopn[tid] = recipename
+
         for dep in sorted(deps, key=clean_basepath):
             (depmc, _, deptaskname, depfn) = bb.runqueue.split_tid_mcfn(dep)
             if mc != depmc:
@@ -407,24 +412,35 @@ class SignatureGeneratorUniHashMixIn(object):
             self._client = hashserv.create_client(self.server)
         return self._client
 
-    def __get_task_unihash_key(self, tid):
-        # TODO: The key only *needs* to be the taskhash, the tid is just
-        # convenient
-        return '%s:%s' % (tid.rsplit("/", 1)[1], self.taskhash[tid])
-
     def get_stampfile_hash(self, tid):
         if tid in self.taskhash:
             # If a unique hash is reported, use it as the stampfile hash. This
             # ensures that if a task won't be re-run if the taskhash changes,
             # but it would result in the same output hash
-            unihash = self.unitaskhashes.get(self.__get_task_unihash_key(tid), None)
+            unihash = self._get_unihash(tid)
             if unihash is not None:
                 return unihash
 
         return super().get_stampfile_hash(tid)
 
     def set_unihash(self, tid, unihash):
-        self.unitaskhashes[self.__get_task_unihash_key(tid)] = unihash
+        (mc, fn, taskname, taskfn) = bb.runqueue.split_tid_mcfn(tid)
+        key = mc + ":" + self.tidtopn[tid] + ":" + taskname
+        self.unitaskhashes[key] = (self.taskhash[tid], unihash)
+
+    def _get_unihash(self, tid, checkkey=None):
+        if tid not in self.tidtopn:
+            return None
+        (mc, fn, taskname, taskfn) = bb.runqueue.split_tid_mcfn(tid)
+        key = mc + ":" + self.tidtopn[tid] + ":" + taskname
+        if key not in self.unitaskhashes:
+            return None
+        if not checkkey:
+            checkkey = self.taskhash[tid]
+        (key, unihash) = self.unitaskhashes[key]
+        if key != checkkey:
+            return None
+        return unihash
 
     def get_unihash(self, tid):
         taskhash = self.taskhash[tid]
@@ -433,11 +449,9 @@ class SignatureGeneratorUniHashMixIn(object):
         if self.setscenetasks and tid not in self.setscenetasks:
             return taskhash
 
-        key = self.__get_task_unihash_key(tid)
-
         # TODO: This cache can grow unbounded. It probably only needs to keep
         # for each task
-        unihash = self.unitaskhashes.get(key, None)
+        unihash =  self._get_unihash(tid)
         if unihash is not None:
             return unihash
 
@@ -472,7 +486,7 @@ class SignatureGeneratorUniHashMixIn(object):
         except hashserv.client.HashConnectionError as e:
             bb.warn('Error contacting Hash Equivalence Server %s: %s' % (self.server, str(e)))
 
-        self.unitaskhashes[key] = unihash
+        self.set_unihash(tid, unihash)
         return unihash
 
     def report_unihash(self, path, task, d):
@@ -484,13 +498,13 @@ class SignatureGeneratorUniHashMixIn(object):
         tempdir = d.getVar('T')
         fn = d.getVar('BB_FILENAME')
         tid = fn + ':do_' + task
-        key = tid.rsplit("/", 1)[1] + ':' + taskhash
+        key = tid + ':' + taskhash
 
         if self.setscenetasks and tid not in self.setscenetasks:
             return
 
         # Sanity checks
-        cache_unihash = self.unitaskhashes.get(key, None)
+        cache_unihash = self._get_unihash(tid, checkkey=taskhash)
         if cache_unihash is None:
             bb.fatal('%s not in unihash cache. Please report this error' % key)
 
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [1.44 6/7] siggen: Cache unihash values to avoid cache lookup
  2020-02-09 16:03 [1.44 0/7] patch review Armin Kuster
                   ` (4 preceding siblings ...)
  2020-02-09 16:03 ` [1.44 5/7] siggen: Optimise get_unihash disk based cache handling Armin Kuster
@ 2020-02-09 16:03 ` Armin Kuster
  2020-02-09 16:03 ` [1.44 7/7] siggen: Avoid cache mismatch issues with locked sigs Armin Kuster
  6 siblings, 0 replies; 8+ messages in thread
From: Armin Kuster @ 2020-02-09 16:03 UTC (permalink / raw)
  To: bitbake-devel

From: Richard Purdie <richard.purdie@linuxfoundation.org>

Add unihash cache of values to speed up cache lookup.

This avoids the overhead of the disk based check functions.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 5c9cc45b60904a1c355db9bf9c4495f1b25aca37)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
---
 lib/bb/siggen.py | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/lib/bb/siggen.py b/lib/bb/siggen.py
index 209a3428..96807c46 100644
--- a/lib/bb/siggen.py
+++ b/lib/bb/siggen.py
@@ -40,6 +40,7 @@ class SignatureGenerator(object):
     def __init__(self, data):
         self.basehash = {}
         self.taskhash = {}
+        self.unihash = {}
         self.runtaskdeps = {}
         self.file_checksum_values = {}
         self.taints = {}
@@ -80,19 +81,19 @@ class SignatureGenerator(object):
         return
 
     def get_taskdata(self):
-        return (self.runtaskdeps, self.taskhash, self.file_checksum_values, self.taints, self.basehash, self.unitaskhashes, self.tidtopn, self.setscenetasks)
+        return (self.runtaskdeps, self.taskhash, self.unihash, self.file_checksum_values, self.taints, self.basehash, self.unitaskhashes, self.tidtopn, self.setscenetasks)
 
     def set_taskdata(self, data):
-        self.runtaskdeps, self.taskhash, self.file_checksum_values, self.taints, self.basehash, self.unitaskhashes, self.tidtopn, self.setscenetasks = data
+        self.runtaskdeps, self.taskhash, self.unihash, self.file_checksum_values, self.taints, self.basehash, self.unitaskhashes, self.tidtopn, self.setscenetasks = data
 
     def reset(self, data):
         self.__init__(data)
 
     def get_taskhashes(self):
-        return self.taskhash, self.unitaskhashes, self.tidtopn
+        return self.taskhash, self.unihash, self.unitaskhashes, self.tidtopn
 
     def set_taskhashes(self, hashes):
-        self.taskhash, self.unitaskhashes, self.tidtopn = hashes
+        self.taskhash, self.unihash, self.unitaskhashes, self.tidtopn = hashes
 
     def save_unitaskhashes(self):
         return
@@ -108,6 +109,7 @@ class SignatureGeneratorBasic(SignatureGenerator):
     def __init__(self, data):
         self.basehash = {}
         self.taskhash = {}
+        self.unihash = {}
         self.taskdeps = {}
         self.runtaskdeps = {}
         self.file_checksum_values = {}
@@ -256,7 +258,13 @@ class SignatureGeneratorBasic(SignatureGenerator):
 
         data = self.basehash[tid]
         for dep in self.runtaskdeps[tid]:
-            data = data + self.get_unihash(dep)
+            if dep in self.unihash:
+                if self.unihash[dep] is None:
+                    data = data + self.taskhash[dep]
+                else:
+                    data = data + self.unihash[dep]
+            else:
+                data = data + self.get_unihash(dep)
 
         for (f, cs) in self.file_checksum_values[tid]:
             if cs:
@@ -427,6 +435,7 @@ class SignatureGeneratorUniHashMixIn(object):
         (mc, fn, taskname, taskfn) = bb.runqueue.split_tid_mcfn(tid)
         key = mc + ":" + self.tidtopn[tid] + ":" + taskname
         self.unitaskhashes[key] = (self.taskhash[tid], unihash)
+        self.unihash[tid] = unihash
 
     def _get_unihash(self, tid, checkkey=None):
         if tid not in self.tidtopn:
@@ -447,12 +456,14 @@ class SignatureGeneratorUniHashMixIn(object):
 
         # If its not a setscene task we can return
         if self.setscenetasks and tid not in self.setscenetasks:
+            self.unihash[tid] = None
             return taskhash
 
         # TODO: This cache can grow unbounded. It probably only needs to keep
         # for each task
         unihash =  self._get_unihash(tid)
         if unihash is not None:
+            self.unihash[tid] = unihash
             return unihash
 
         # In the absence of being able to discover a unique hash from the
@@ -487,6 +498,7 @@ class SignatureGeneratorUniHashMixIn(object):
             bb.warn('Error contacting Hash Equivalence Server %s: %s' % (self.server, str(e)))
 
         self.set_unihash(tid, unihash)
+        self.unihash[tid] = unihash
         return unihash
 
     def report_unihash(self, path, task, d):
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [1.44 7/7] siggen: Avoid cache mismatch issues with locked sigs
  2020-02-09 16:03 [1.44 0/7] patch review Armin Kuster
                   ` (5 preceding siblings ...)
  2020-02-09 16:03 ` [1.44 6/7] siggen: Cache unihash values to avoid cache lookup Armin Kuster
@ 2020-02-09 16:03 ` Armin Kuster
  6 siblings, 0 replies; 8+ messages in thread
From: Armin Kuster @ 2020-02-09 16:03 UTC (permalink / raw)
  To: bitbake-devel

From: Richard Purdie <richard.purdie@linuxfoundation.org>

If locked sigs are in use this function makes little sense, need to
avoid generating mismatch warnings.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 27ad9c1d468fba858a4adeb56b605227b415ae0f)
Signed-off-by: Armin Kuster <akuster808@gmail.com>
---
 lib/bb/siggen.py | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/lib/bb/siggen.py b/lib/bb/siggen.py
index 96807c46..ffd8fcaf 100644
--- a/lib/bb/siggen.py
+++ b/lib/bb/siggen.py
@@ -515,6 +515,10 @@ class SignatureGeneratorUniHashMixIn(object):
         if self.setscenetasks and tid not in self.setscenetasks:
             return
 
+        # This can happen if locked sigs are in action. Detect and just abort
+        if taskhash != self.taskhash[tid]:
+            return
+
         # Sanity checks
         cache_unihash = self._get_unihash(tid, checkkey=taskhash)
         if cache_unihash is None:
-- 
2.17.1



^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-02-09 16:03 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-09 16:03 [1.44 0/7] patch review Armin Kuster
2020-02-09 16:03 ` [1.44 1/7] fetch2: do not suffix srcrev cache key with PN Armin Kuster
2020-02-09 16:03 ` [1.44 2/7] fetch2/git: _revision_key: collapse adjacent slashes Armin Kuster
2020-02-09 16:03 ` [1.44 3/7] persist_data.py: Immediately get exclusive lock in __setitem__ Armin Kuster
2020-02-09 16:03 ` [1.44 4/7] cooker/toaster: replaced deprecated method warn() with warning() Armin Kuster
2020-02-09 16:03 ` [1.44 5/7] siggen: Optimise get_unihash disk based cache handling Armin Kuster
2020-02-09 16:03 ` [1.44 6/7] siggen: Cache unihash values to avoid cache lookup Armin Kuster
2020-02-09 16:03 ` [1.44 7/7] siggen: Avoid cache mismatch issues with locked sigs Armin Kuster

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.