[2.x] perf: Improve incremental test stamper (#9257)

**Problem**
Incremental stamper is still causing perf issue.

**Solution**
This further avoids SHA-256 calls to calculate the stamp.
This commit is contained in:
eugene yokota 2026-06-01 02:17:39 -04:00 committed by GitHub
parent 5dd886e243
commit 619e034ec9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 11 additions and 4 deletions

View File

@ -182,11 +182,18 @@ class ClassStamper(
extraHashes: Seq[Digest],
log: Logger,
): Option[Digest] =
val digests = SortedSet(analyses.flatMap(internalStamp(javaClassName, _, Set.empty, log))*)
log.debug(s"test: transitiveStamp($javaClassName, $extraHashes) = $digests")
if digests.nonEmpty then Some(Digest.sha256Hash(digests.toSeq ++ extraHashes*))
val digests = transitiveStamps(javaClassName, extraHashes, log)
if digests.nonEmpty then Some(Digest.sha256Hash(digests*))
else None
private def transitiveStamps(
javaClassName: String,
extraHashes: Seq[Digest],
log: Logger,
): Seq[Digest] =
val digests = SortedSet(analyses.flatMap(internalStamp(javaClassName, _, Set.empty, log))*)
digests.toSeq ++ extraHashes
private def internalStamp(
javaClassName: String,
analysis: Analysis,
@ -205,7 +212,7 @@ class ClassStamper(
val internalJarDeps = relations
.externalDeps(className)
.flatMap: libClassName =>
transitiveStamp(libClassName, Nil, log)
transitiveStamps(libClassName, Nil, log)
val externalDeps = relations
.externalDeps(className)
.flatMap: libClassName =>