aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecTestUtils.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecWithStore.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils/SerializationTester.java16
3 files changed, 17 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecTestUtils.java b/src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecTestUtils.java
index 89faad4a8b..901b771c8b 100644
--- a/src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecTestUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecTestUtils.java
@@ -29,7 +29,8 @@ public class NestedSetCodecTestUtils {
NestedSetBuilder.<String>stableOrder().add("e").build();
/** Perform serialization/deserialization checks for several simple NestedSet examples. */
- public static void checkCodec(ObjectCodecs objectCodecs) throws Exception {
+ public static void checkCodec(ObjectCodecs objectCodecs, boolean allowFutureBlocking)
+ throws Exception {
new SerializationTester(
NestedSetBuilder.emptySet(Order.STABLE_ORDER),
NestedSetBuilder.emptySet(Order.NAIVE_LINK_ORDER),
@@ -51,6 +52,7 @@ public class NestedSetCodecTestUtils {
.addTransitive(NestedSetBuilder.emptySet(Order.STABLE_ORDER))
.build())
.setObjectCodecs(objectCodecs)
+ .makeMemoizingAndAllowFutureBlocking(allowFutureBlocking)
.setVerificationFunction(NestedSetCodecTestUtils::verifyDeserialization)
.runTests();
}
diff --git a/src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecWithStore.java b/src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecWithStore.java
index 285bd6f230..030b0a3332 100644
--- a/src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecWithStore.java
+++ b/src/main/java/com/google/devtools/build/lib/collect/nestedset/NestedSetCodecWithStore.java
@@ -73,6 +73,7 @@ public class NestedSetCodecWithStore<T> implements ObjectCodec<NestedSet<T>> {
context.serialize(NestedSetSize.GROUP, codedOut);
FingerprintComputationResult fingerprintComputationResult =
nestedSetStore.computeFingerprintAndStore((Object[]) obj.rawChildren(), context);
+ context.addFutureToBlockWritingOn(fingerprintComputationResult.writeStatus());
codedOut.writeByteArrayNoTag(fingerprintComputationResult.fingerprint().toByteArray());
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils/SerializationTester.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils/SerializationTester.java
index ff4dbe8b4d..c8fda47539 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils/SerializationTester.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils/SerializationTester.java
@@ -62,6 +62,7 @@ public class SerializationTester {
private final ImmutableMap.Builder<Class<?>, Object> dependenciesBuilder;
private final ArrayList<ObjectCodec<?>> additionalCodecs = new ArrayList<>();
private boolean memoize;
+ private boolean allowFutureBlocking;
private ObjectCodecs objectCodecs;
@SuppressWarnings("rawtypes")
@@ -100,6 +101,12 @@ public class SerializationTester {
return this;
}
+ public SerializationTester makeMemoizingAndAllowFutureBlocking(boolean allowFutureBlocking) {
+ makeMemoizing();
+ this.allowFutureBlocking = allowFutureBlocking;
+ return this;
+ }
+
public SerializationTester setObjectCodecs(ObjectCodecs objectCodecs) {
this.objectCodecs = objectCodecs;
return this;
@@ -138,10 +145,13 @@ public class SerializationTester {
return new ObjectCodecs(registryBuilder.build(), dependencies);
}
- private ByteString serialize(Object subject, ObjectCodecs codecs)
- throws SerializationException, IOException {
+ private ByteString serialize(Object subject, ObjectCodecs codecs) throws SerializationException {
if (memoize) {
- return codecs.serializeMemoized(subject);
+ if (allowFutureBlocking) {
+ return codecs.serializeMemoizedAndBlocking(subject).getObject();
+ } else {
+ return codecs.serializeMemoized(subject);
+ }
} else {
return codecs.serialize(subject);
}