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:
		@@ -2243,10 +2243,12 @@ def concretize(self, tests=False):
 | 
			
		||||
 | 
			
		||||
        # If any spec in the DAG is deprecated, throw an error
 | 
			
		||||
        deprecated = []
 | 
			
		||||
        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)
 | 
			
		||||
        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"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user