concretization: improve performance by avoiding database locks

Checks for deprecated specs were repeatedly taking out read locks on the
database, which can be very slow.

- [x] put a read transaction around the deprecation check
This commit is contained in:
Todd Gamblin 2019-12-16 17:37:47 -08:00
parent 33335c9d0a
commit f73cdac731

View File

@ -2243,10 +2243,12 @@ def concretize(self, tests=False):
# If any spec in the DAG is deprecated, throw an error
deprecated = []
with spack.store.db.read_transaction():
for x in self.traverse():
_, rec = spack.store.db.query_by_spec_hash(x.dag_hash())
if rec and rec.deprecated_for:
deprecated.append(rec)
if deprecated:
msg = "\n The following specs have been deprecated"
msg += " in favor of specs with the hashes shown:\n"