Skip to content

Commit 6c31f69

Browse files
aoeuicopybara-github
authored andcommitted
Integrate SkyValueRetriever with SerializationCheckingGraph.
This formalizes the distinction between serialization policies into a DefaultPolicy and an AnaylsisPolicy that uses the SkyValueRetriever. PiperOrigin-RevId: 671332658 Change-Id: I1c02e2c06e74328fa6a3d21dbd2fb056dea4d97a
1 parent 7913818 commit 6c31f69

File tree

4 files changed

+41
-2
lines changed

4 files changed

+41
-2
lines changed

src/main/java/com/google/devtools/build/lib/skyframe/serialization/FingerprintValueService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public FingerprintValueService(
8080
}
8181

8282
/** Delegates to {@link FingerprintValueStore#put}. */
83-
ListenableFuture<Void> put(ByteString fingerprint, byte[] serializedBytes) {
83+
public ListenableFuture<Void> put(ByteString fingerprint, byte[] serializedBytes) {
8484
return store.put(fingerprint, serializedBytes);
8585
}
8686

src/main/java/com/google/devtools/build/lib/skyframe/serialization/SerializationResult.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public T getObject() {
5353
return object;
5454
}
5555

56-
static <T> SerializationResult<T> create(
56+
public static <T> SerializationResult<T> create(
5757
T object, @Nullable ListenableFuture<Void> futureToBlockWritesOn) {
5858
return futureToBlockWritesOn != null
5959
? new ObjectWithFuture<>(object, futureToBlockWritesOn)

src/test/java/com/google/devtools/build/lib/skyframe/BUILD

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -766,6 +766,7 @@ java_test(
766766
"//src/main/java/com/google/devtools/build/lib/skyframe:configured_target_key",
767767
"//src/main/java/com/google/devtools/build/lib/skyframe:skyframe_cluster",
768768
"//src/main/java/com/google/devtools/build/lib/skyframe/config",
769+
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization",
769770
"//src/main/java/com/google/devtools/build/lib/skyframe/toolchains:toolchain_context_key",
770771
"//src/main/java/com/google/devtools/build/lib/skyframe/toolchains:unloaded_toolchain_context",
771772
"//src/main/java/com/google/devtools/build/lib/skyframe/toolchains:unloaded_toolchain_context_impl",
@@ -777,6 +778,7 @@ java_test(
777778
"//third_party:jsr305",
778779
"//third_party:junit4",
779780
"//third_party:truth",
781+
"//third_party/protobuf:protobuf_java",
780782
],
781783
)
782784

src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsTest.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@
4545
import com.google.devtools.build.lib.packages.Attribute;
4646
import com.google.devtools.build.lib.packages.Target;
4747
import com.google.devtools.build.lib.skyframe.config.BuildConfigurationKey;
48+
import com.google.devtools.build.lib.skyframe.serialization.AsyncDeserializationContext;
49+
import com.google.devtools.build.lib.skyframe.serialization.DeferredObjectCodec;
50+
import com.google.devtools.build.lib.skyframe.serialization.DeferredObjectCodec.DeferredValue;
51+
import com.google.devtools.build.lib.skyframe.serialization.SerializationContext;
52+
import com.google.devtools.build.lib.skyframe.serialization.SerializationException;
4853
import com.google.devtools.build.lib.skyframe.toolchains.ToolchainContextKey;
4954
import com.google.devtools.build.lib.skyframe.toolchains.UnloadedToolchainContext;
5055
import com.google.devtools.build.lib.skyframe.toolchains.UnloadedToolchainContextImpl;
@@ -57,6 +62,10 @@
5762
import com.google.devtools.build.skyframe.SkyFunctionName;
5863
import com.google.devtools.build.skyframe.SkyKey;
5964
import com.google.devtools.build.skyframe.SkyValue;
65+
import com.google.errorprone.annotations.Keep;
66+
import com.google.protobuf.CodedInputStream;
67+
import com.google.protobuf.CodedOutputStream;
68+
import java.io.IOException;
6069
import java.util.List;
6170
import java.util.Optional;
6271
import javax.annotation.Nullable;
@@ -136,6 +145,34 @@ public Label getLabel() {
136145
// Technically unused, but needed to mark this key as an ActionLookupKey.
137146
return arg.getLabel();
138147
}
148+
149+
/**
150+
* A serialization-only codec to support test infrastructure.
151+
*
152+
* <p>Certain tests require the byte representation of keys without requiring those bytes to
153+
* be deserialized.
154+
*/
155+
@Keep
156+
private static final class Codec extends DeferredObjectCodec<Key> {
157+
158+
@Override
159+
public Class<Key> getEncodedClass() {
160+
return Key.class;
161+
}
162+
163+
@Override
164+
public void serialize(SerializationContext context, Key key, CodedOutputStream codedOut)
165+
throws SerializationException, IOException {
166+
context.serialize(key.getLabel(), codedOut);
167+
context.serialize(key.getConfigurationKey(), codedOut);
168+
}
169+
170+
@Override
171+
public DeferredValue<Key> deserializeDeferred(
172+
AsyncDeserializationContext context, CodedInputStream codedIn) {
173+
throw new IllegalStateException("not expected to be called");
174+
}
175+
}
139176
}
140177

141178
/** Returns an {@link OrderedSetMultimap} representing the deps of given target. */

0 commit comments

Comments
 (0)