From 6c7e8ff86f4bbc276cb8a53e971c915dacd13f47 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Wed, 17 Jan 2024 11:09:16 -0800 Subject: [PATCH] Fix data race in snapshot singletons when running parallel tests Singleton objects need to be created in the singleton factory rather than as a global variable so that they have a unique object per context in order to allow multiple tests to run in parallel. Test: go test -race ./... Change-Id: Ib6912849e1b849ffe8646882cfb476ddea6c6b55 --- snapshot/recovery_snapshot.go | 16 +++++++--------- snapshot/vendor_snapshot.go | 32 ++++++++++++++------------------ 2 files changed, 21 insertions(+), 27 deletions(-) diff --git a/snapshot/recovery_snapshot.go b/snapshot/recovery_snapshot.go index 8ff59cbcf..ab114b411 100644 --- a/snapshot/recovery_snapshot.go +++ b/snapshot/recovery_snapshot.go @@ -22,16 +22,14 @@ type RecoverySnapshotModuleInterface interface { ExcludeFromRecoverySnapshot() bool } -var recoverySnapshotSingleton = SnapshotSingleton{ - "recovery", // name - "SOONG_RECOVERY_SNAPSHOT_ZIP", // makeVar - android.OptionalPath{}, // snapshotZipFile - RecoverySnapshotImageSingleton, // Image - false, // Fake -} - func RecoverySnapshotSingleton() android.Singleton { - return &recoverySnapshotSingleton + return &SnapshotSingleton{ + "recovery", // name + "SOONG_RECOVERY_SNAPSHOT_ZIP", // makeVar + android.OptionalPath{}, // snapshotZipFile + RecoverySnapshotImageSingleton, // Image + false, // Fake + } } // Determine if a dir under source tree is an SoC-owned proprietary directory based diff --git a/snapshot/vendor_snapshot.go b/snapshot/vendor_snapshot.go index 4484c855d..3e5f54669 100644 --- a/snapshot/vendor_snapshot.go +++ b/snapshot/vendor_snapshot.go @@ -22,28 +22,24 @@ type VendorSnapshotModuleInterface interface { ExcludeFromVendorSnapshot() bool } -var vendorSnapshotSingleton = SnapshotSingleton{ - "vendor", // name - "SOONG_VENDOR_SNAPSHOT_ZIP", // makeVar - android.OptionalPath{}, // snapshotZipFile - VendorSnapshotImageSingleton, // Image - false, // Fake -} - -var vendorFakeSnapshotSingleton = SnapshotSingleton{ - "vendor", // name - "SOONG_VENDOR_FAKE_SNAPSHOT_ZIP", // makeVar - android.OptionalPath{}, // snapshotZipFile - VendorSnapshotImageSingleton, // Image - true, // Fake -} - func VendorSnapshotSingleton() android.Singleton { - return &vendorSnapshotSingleton + return &SnapshotSingleton{ + "vendor", // name + "SOONG_VENDOR_SNAPSHOT_ZIP", // makeVar + android.OptionalPath{}, // snapshotZipFile + VendorSnapshotImageSingleton, // Image + false, // Fake + } } func VendorFakeSnapshotSingleton() android.Singleton { - return &vendorFakeSnapshotSingleton + return &SnapshotSingleton{ + "vendor", // name + "SOONG_VENDOR_FAKE_SNAPSHOT_ZIP", // makeVar + android.OptionalPath{}, // snapshotZipFile + VendorSnapshotImageSingleton, // Image + true, // Fake + } } // Determine if a dir under source tree is an SoC-owned proprietary directory based