Skip to content

Commit 85f6937

Browse files
Removed ton of code, we're not there yet though
1 parent a468292 commit 85f6937

132 files changed

Lines changed: 99 additions & 12861 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

gradle/libs.versions.toml

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -117,18 +117,6 @@
117117
[libraries.opentelemetry-kotlin.version]
118118
ref = 'opentelemetry'
119119

120-
[libraries.protobuf-java]
121-
module = 'com.google.protobuf:protobuf-java'
122-
123-
[libraries.protobuf-java.version]
124-
ref = 'protobuf'
125-
126-
[libraries.protobuf-kotlin]
127-
module = 'com.google.protobuf:protobuf-kotlin'
128-
129-
[libraries.protobuf-kotlin.version]
130-
ref = 'protobuf'
131-
132120
[libraries.schema-kenerator-core]
133121
module = 'io.github.smiley4:schema-kenerator-core'
134122

@@ -246,7 +234,6 @@
246234
jsonschema2pojo = 'org.jsonschema2pojo:1.2.2'
247235
nexus-publish = 'io.github.gradle-nexus.publish-plugin:1.3.0'
248236
openapi-generator = 'org.openapi.generator:7.17.0'
249-
protobuf = 'com.google.protobuf:0.9.4'
250237
shadow = 'com.gradleup.shadow:9.0.0-beta8'
251238
spotless = 'com.diffplug.spotless:7.2.1'
252239
spring-dependency-management = 'io.spring.dependency-management:1.1.6'
@@ -266,7 +253,6 @@
266253
ksp = '2.2.10-2.0.2'
267254
log4j = '2.24.3'
268255
opentelemetry = '1.58.0'
269-
protobuf = '4.29.3'
270256
restate = '2.8.0-SNAPSHOT'
271257
schema-kenerator = '2.1.2'
272258
spring-boot = '3.4.13'

sdk-core/build.gradle.kts

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -150,12 +150,12 @@ dependencies {
150150
testImplementation(project(":sdk-api"))
151151
testImplementation(project(":sdk-api-kotlin"))
152152
testImplementation(project(":sdk-http-vertx"))
153+
testImplementation(project(":sdk-lambda"))
153154
testImplementation(libs.jackson.annotations)
154155
testImplementation(libs.jackson.databind)
155156
testImplementation(libs.jackson.cbor)
156157
testImplementation(libs.opentelemetry.api)
157158
testImplementation(libs.chicory.runtime)
158-
testImplementation(libs.protobuf.java)
159159
testImplementation(libs.mutiny)
160160
testImplementation(libs.junit.jupiter)
161161
testImplementation(libs.assertj)
@@ -177,7 +177,6 @@ sourceSets {
177177
main {
178178
java.srcDir(generatedJ2SPDir)
179179
java.srcDir(generatedWasmMarkerDir)
180-
proto { srcDirs("src/main/service-protocol") } // TODO(Phase3): remove
181180
resources.srcDir(wasmResourceDir)
182181
}
183182
}
@@ -202,21 +201,13 @@ jsonSchema2Pojo {
202201

203202
tasks {
204203
withType<JavaCompile> {
205-
dependsOn(generateJsonSchema2Pojo, generateProto, generateWasmMarker, "precompileWasm2Class")
204+
dependsOn(generateJsonSchema2Pojo, generateWasmMarker, "precompileWasm2Class")
206205

207206
val disabledClassesCodegen =
208207
listOf(
209-
"dev.restate.sdk.core.javaapi.reflections.CheckedException",
210-
"dev.restate.sdk.core.javaapi.reflections.CustomSerde",
211-
"dev.restate.sdk.core.javaapi.reflections.Empty",
212-
"dev.restate.sdk.core.javaapi.reflections.GreeterInterface",
213208
"dev.restate.sdk.core.javaapi.reflections.MyWorkflow",
214-
"dev.restate.sdk.core.javaapi.reflections.ObjectGreeter",
215-
"dev.restate.sdk.core.javaapi.reflections.ObjectGreeterImplementedFromInterface",
216-
"dev.restate.sdk.core.javaapi.reflections.PrimitiveTypes",
217209
"dev.restate.sdk.core.javaapi.reflections.RawInputOutput",
218210
"dev.restate.sdk.core.javaapi.reflections.RawService",
219-
"dev.restate.sdk.core.javaapi.reflections.ServiceGreeter",
220211
)
221212

222213
options.compilerArgs.addAll(
@@ -226,29 +217,22 @@ tasks {
226217
)
227218
)
228219
}
229-
withType<KotlinCompile>().configureEach { dependsOn(generateJsonSchema2Pojo, generateProto) }
220+
withType<KotlinCompile>().configureEach { dependsOn(generateJsonSchema2Pojo) }
230221
withType<org.gradle.jvm.tasks.Jar>().configureEach {
231-
dependsOn(generateJsonSchema2Pojo, generateProto, generateWasmMarker)
222+
dependsOn(generateJsonSchema2Pojo, generateWasmMarker)
232223
}
233-
withType<AbstractDokkaTask>().configureEach { dependsOn(generateJsonSchema2Pojo, generateProto) }
224+
withType<AbstractDokkaTask>().configureEach { dependsOn(generateJsonSchema2Pojo) }
234225
}
235226

236227
ksp {
237228
val disabledClassesCodegen =
238229
listOf(
239-
"dev.restate.sdk.core.kotlinapi.reflections.CheckedException",
240-
"dev.restate.sdk.core.kotlinapi.reflections.CustomSerdeService",
241230
"dev.restate.sdk.core.kotlinapi.reflections.Empty",
242-
"dev.restate.sdk.core.kotlinapi.reflections.GreeterInterface",
243-
"dev.restate.sdk.core.kotlinapi.reflections.NestedDataClass",
244-
"dev.restate.sdk.core.kotlinapi.reflections.CornerCases",
245-
"dev.restate.sdk.core.kotlinapi.reflections.GreeterWithExplicitName",
246-
"dev.restate.sdk.core.kotlinapi.reflections.MyWorkflow",
247-
"dev.restate.sdk.core.kotlinapi.reflections.ObjectGreeter",
248-
"dev.restate.sdk.core.kotlinapi.reflections.ObjectGreeterImplementedFromInterface",
249231
"dev.restate.sdk.core.kotlinapi.reflections.PrimitiveTypes",
232+
"dev.restate.sdk.core.kotlinapi.reflections.CornerCases",
250233
"dev.restate.sdk.core.kotlinapi.reflections.RawInputOutput",
251-
"dev.restate.sdk.core.kotlinapi.reflections.ServiceGreeter",
234+
"dev.restate.sdk.core.kotlinapi.reflections.MyWorkflow",
235+
"dev.restate.sdk.core.kotlinapi.reflections.GreeterWithExplicitName",
252236
)
253237
arg("dev.restate.codegen.disabledClasses", disabledClassesCodegen.joinToString(","))
254238
}

sdk-core/src/main/java/dev/restate/sdk/core/AsyncResults.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@
1111
import dev.restate.common.function.ThrowingFunction;
1212
import dev.restate.sdk.common.AbortedExecutionException;
1313
import dev.restate.sdk.common.TerminalException;
14-
import dev.restate.sdk.core.statemachine.NotificationValue;
15-
import dev.restate.sdk.core.statemachine.StateMachine;
1614
import dev.restate.sdk.endpoint.definition.AsyncResult;
1715
import java.util.*;
1816
import java.util.concurrent.CompletableFuture;

sdk-core/src/main/java/dev/restate/sdk/core/DiscoveryProtocol.java

Lines changed: 52 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import com.fasterxml.jackson.databind.ObjectMapper;
1414
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
1515
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
16-
import dev.restate.sdk.core.generated.discovery.Discovery;
1716
import dev.restate.sdk.core.generated.manifest.EndpointManifestSchema;
1817
import dev.restate.sdk.core.generated.manifest.Handler;
1918
import dev.restate.sdk.core.generated.manifest.Service;
@@ -23,18 +22,41 @@
2322
import java.util.stream.Collectors;
2423
import java.util.stream.Stream;
2524

26-
class DiscoveryProtocol {
27-
static final Discovery.ServiceDiscoveryProtocolVersion MIN_SERVICE_DISCOVERY_PROTOCOL_VERSION =
28-
Discovery.ServiceDiscoveryProtocolVersion.V1;
29-
static final Discovery.ServiceDiscoveryProtocolVersion MAX_SERVICE_DISCOVERY_PROTOCOL_VERSION =
30-
Discovery.ServiceDiscoveryProtocolVersion.V4;
31-
32-
static boolean isSupported(
33-
Discovery.ServiceDiscoveryProtocolVersion serviceDiscoveryProtocolVersion) {
34-
return MIN_SERVICE_DISCOVERY_PROTOCOL_VERSION.getNumber()
35-
<= serviceDiscoveryProtocolVersion.getNumber()
36-
&& serviceDiscoveryProtocolVersion.getNumber()
37-
<= MAX_SERVICE_DISCOVERY_PROTOCOL_VERSION.getNumber();
25+
public class DiscoveryProtocol {
26+
public enum Version {
27+
V1("application/vnd.restate.endpointmanifest.v1+json"),
28+
V2("application/vnd.restate.endpointmanifest.v2+json"),
29+
V3("application/vnd.restate.endpointmanifest.v3+json"),
30+
V4("application/vnd.restate.endpointmanifest.v4+json");
31+
32+
private final String header;
33+
34+
Version(String header) {
35+
this.header = header;
36+
}
37+
38+
public String getHeader() {
39+
return header;
40+
}
41+
42+
public int getNumber() {
43+
return ordinal() + 1;
44+
}
45+
46+
public boolean isSupported() {
47+
// We support all versions so far
48+
return true;
49+
}
50+
51+
public static final Version MIN = Version.V1;
52+
public static final Version MAX = Version.V4;
53+
54+
public static Optional<Version> fromHeader(String headerValue) {
55+
String trimmed = headerValue.trim();
56+
return Stream.of(values())
57+
.filter(version -> version.header.equalsIgnoreCase(trimmed))
58+
.findFirst();
59+
}
3860
}
3961

4062
/**
@@ -44,69 +66,36 @@ static boolean isSupported(
4466
* @return The highest supported service protocol version, otherwise
4567
* Protocol.ServiceProtocolVersion.SERVICE_PROTOCOL_VERSION_UNSPECIFIED
4668
*/
47-
static Discovery.ServiceDiscoveryProtocolVersion selectSupportedServiceDiscoveryProtocolVersion(
48-
String acceptedVersionsString) {
69+
static Version selectSupportedServiceDiscoveryProtocolVersion(String acceptedVersionsString) {
4970
// assume V1 in case nothing was set
5071
if (acceptedVersionsString == null || acceptedVersionsString.isEmpty()) {
51-
return Discovery.ServiceDiscoveryProtocolVersion.V1;
72+
return Version.V1;
5273
}
5374

5475
final String[] supportedVersions = acceptedVersionsString.split(",");
5576

56-
Discovery.ServiceDiscoveryProtocolVersion maxVersion =
57-
Discovery.ServiceDiscoveryProtocolVersion.SERVICE_DISCOVERY_PROTOCOL_VERSION_UNSPECIFIED;
77+
Version maxVersion = null;
5878

5979
for (String versionString : supportedVersions) {
60-
final Optional<Discovery.ServiceDiscoveryProtocolVersion> optionalVersion =
61-
parseServiceDiscoveryProtocolVersion(versionString);
80+
final Optional<Version> optionalVersion = Version.fromHeader(versionString);
6281

6382
if (optionalVersion.isPresent()) {
64-
final Discovery.ServiceDiscoveryProtocolVersion version = optionalVersion.get();
65-
if (isSupported(version) && version.getNumber() > maxVersion.getNumber()) {
83+
final Version version = optionalVersion.get();
84+
if (version.isSupported()
85+
&& (maxVersion == null || version.getNumber() > maxVersion.getNumber())) {
6686
maxVersion = version;
6787
}
6888
}
6989
}
7090

71-
return maxVersion;
72-
}
73-
74-
static Optional<Discovery.ServiceDiscoveryProtocolVersion> parseServiceDiscoveryProtocolVersion(
75-
String versionString) {
76-
versionString = versionString.trim();
77-
78-
if (versionString.equals("application/vnd.restate.endpointmanifest.v1+json")) {
79-
return Optional.of(Discovery.ServiceDiscoveryProtocolVersion.V1);
80-
}
81-
if (versionString.equals("application/vnd.restate.endpointmanifest.v2+json")) {
82-
return Optional.of(Discovery.ServiceDiscoveryProtocolVersion.V2);
83-
}
84-
if (versionString.equals("application/vnd.restate.endpointmanifest.v3+json")) {
85-
return Optional.of(Discovery.ServiceDiscoveryProtocolVersion.V3);
86-
}
87-
if (versionString.equals("application/vnd.restate.endpointmanifest.v4+json")) {
88-
return Optional.of(Discovery.ServiceDiscoveryProtocolVersion.V4);
91+
if (Objects.isNull(maxVersion)) {
92+
throw new ProtocolException(
93+
String.format(
94+
"Unsupported Discovery version in the Accept header '%s'", acceptedVersionsString),
95+
ProtocolException.UNSUPPORTED_MEDIA_TYPE_CODE);
8996
}
90-
return Optional.empty();
91-
}
9297

93-
static String serviceDiscoveryProtocolVersionToHeaderValue(
94-
Discovery.ServiceDiscoveryProtocolVersion version) {
95-
if (Objects.requireNonNull(version) == Discovery.ServiceDiscoveryProtocolVersion.V1) {
96-
return "application/vnd.restate.endpointmanifest.v1+json";
97-
}
98-
if (Objects.requireNonNull(version) == Discovery.ServiceDiscoveryProtocolVersion.V2) {
99-
return "application/vnd.restate.endpointmanifest.v2+json";
100-
}
101-
if (Objects.requireNonNull(version) == Discovery.ServiceDiscoveryProtocolVersion.V3) {
102-
return "application/vnd.restate.endpointmanifest.v3+json";
103-
}
104-
if (Objects.requireNonNull(version) == Discovery.ServiceDiscoveryProtocolVersion.V4) {
105-
return "application/vnd.restate.endpointmanifest.v4+json";
106-
}
107-
throw new IllegalArgumentException(
108-
String.format(
109-
"Service discovery protocol version '%s' has no header value", version.getNumber()));
98+
return maxVersion;
11099
}
111100

112101
static final ObjectMapper MANIFEST_OBJECT_MAPPER = new ObjectMapper();
@@ -139,12 +128,11 @@ interface FieldsMixin {}
139128
}
140129

141130
static byte[] serializeManifest(
142-
Discovery.ServiceDiscoveryProtocolVersion serviceDiscoveryProtocolVersion,
143-
EndpointManifestSchema response)
131+
Version serviceDiscoveryProtocolVersion, EndpointManifestSchema response)
144132
throws ProtocolException {
145133
try {
146134
SimpleBeanPropertyFilter filter;
147-
if (serviceDiscoveryProtocolVersion == Discovery.ServiceDiscoveryProtocolVersion.V1) {
135+
if (serviceDiscoveryProtocolVersion == Version.V1) {
148136
filter =
149137
SimpleBeanPropertyFilter.serializeAllExcept(
150138
Stream.concat(
@@ -153,14 +141,14 @@ static byte[] serializeManifest(
153141
DISCOVERY_FIELDS_ADDED_IN_V3.stream()),
154142
DISCOVERY_FIELDS_ADDED_IN_V4.stream())
155143
.collect(Collectors.toSet()));
156-
} else if (serviceDiscoveryProtocolVersion == Discovery.ServiceDiscoveryProtocolVersion.V2) {
144+
} else if (serviceDiscoveryProtocolVersion == Version.V2) {
157145
filter =
158146
SimpleBeanPropertyFilter.serializeAllExcept(
159147
Stream.concat(
160148
DISCOVERY_FIELDS_ADDED_IN_V3.stream(),
161149
DISCOVERY_FIELDS_ADDED_IN_V4.stream())
162150
.collect(Collectors.toSet()));
163-
} else if (serviceDiscoveryProtocolVersion == Discovery.ServiceDiscoveryProtocolVersion.V3) {
151+
} else if (serviceDiscoveryProtocolVersion == Version.V3) {
164152
filter = SimpleBeanPropertyFilter.serializeAllExcept(DISCOVERY_FIELDS_ADDED_IN_V4);
165153
} else {
166154
filter = SimpleBeanPropertyFilter.serializeAll();

sdk-core/src/main/java/dev/restate/sdk/core/EndpointManifest.java

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,8 @@
99
package dev.restate.sdk.core;
1010

1111
import static dev.restate.sdk.core.DiscoveryProtocol.MANIFEST_OBJECT_MAPPER;
12-
import static dev.restate.sdk.core.statemachine.ServiceProtocol.MAX_SERVICE_PROTOCOL_VERSION;
13-
import static dev.restate.sdk.core.statemachine.ServiceProtocol.MIN_SERVICE_PROTOCOL_VERSION;
1412

1513
import com.fasterxml.jackson.core.JsonProcessingException;
16-
import dev.restate.sdk.core.generated.discovery.Discovery;
1714
import dev.restate.sdk.core.generated.manifest.*;
1815
import dev.restate.sdk.endpoint.definition.*;
1916
import dev.restate.serde.Serde;
@@ -36,31 +33,30 @@ final class EndpointManifest {
3633
}
3734

3835
EndpointManifestSchema manifest(
39-
Discovery.ServiceDiscoveryProtocolVersion version,
40-
EndpointManifestSchema.ProtocolMode protocolMode) {
36+
DiscoveryProtocol.Version version, EndpointManifestSchema.ProtocolMode protocolMode) {
4137
EndpointManifestSchema manifest =
4238
new EndpointManifestSchema()
4339
.withProtocolMode(protocolMode)
44-
.withMinProtocolVersion((long) MIN_SERVICE_PROTOCOL_VERSION.getNumber())
45-
.withMaxProtocolVersion((long) MAX_SERVICE_PROTOCOL_VERSION.getNumber())
40+
.withMinProtocolVersion(5L)
41+
.withMaxProtocolVersion(7L)
4642
.withServices(this.services);
4743
// Verify that the user didn't set fields that we don't support in the discovery version we set
4844
for (var service : manifest.getServices()) {
49-
if (version.getNumber() < Discovery.ServiceDiscoveryProtocolVersion.V2.getNumber()) {
45+
if (version.getNumber() < DiscoveryProtocol.Version.V2.getNumber()) {
5046
verifyFieldNotSet(
5147
"metadata",
5248
service,
5349
s -> s.getMetadata() != null && !s.getMetadata().getAdditionalProperties().isEmpty());
5450
}
55-
if (version.getNumber() < Discovery.ServiceDiscoveryProtocolVersion.V3.getNumber()) {
51+
if (version.getNumber() < DiscoveryProtocol.Version.V3.getNumber()) {
5652
verifyFieldNull("idempotency retention", service.getIdempotencyRetention());
5753
verifyFieldNull("journal retention", service.getJournalRetention());
5854
verifyFieldNull("inactivity timeout", service.getInactivityTimeout());
5955
verifyFieldNull("abort timeout", service.getAbortTimeout());
6056
verifyFieldNull("enable lazy state", service.getEnableLazyState());
6157
verifyFieldNull("ingress private", service.getIngressPrivate());
6258
}
63-
if (version.getNumber() < Discovery.ServiceDiscoveryProtocolVersion.V4.getNumber()) {
59+
if (version.getNumber() < DiscoveryProtocol.Version.V4.getNumber()) {
6460
verifyFieldNull("retry policy initial interval", service.getRetryPolicyInitialInterval());
6561
verifyFieldNull("retry policy max interval", service.getRetryPolicyMaxInterval());
6662
verifyFieldNull("retry policy max attempts", service.getRetryPolicyMaxAttempts());
@@ -69,21 +65,21 @@ EndpointManifestSchema manifest(
6965
"retry policy exponentiation factor", service.getRetryPolicyExponentiationFactor());
7066
}
7167
for (var handler : service.getHandlers()) {
72-
if (version.getNumber() < Discovery.ServiceDiscoveryProtocolVersion.V2.getNumber()) {
68+
if (version.getNumber() < DiscoveryProtocol.Version.V2.getNumber()) {
7369
verifyFieldNotSet(
7470
"metadata",
7571
handler,
7672
h -> h.getMetadata() != null && !h.getMetadata().getAdditionalProperties().isEmpty());
7773
}
78-
if (version.getNumber() < Discovery.ServiceDiscoveryProtocolVersion.V3.getNumber()) {
74+
if (version.getNumber() < DiscoveryProtocol.Version.V3.getNumber()) {
7975
verifyFieldNull("idempotency retention", handler.getIdempotencyRetention());
8076
verifyFieldNull("journal retention", handler.getJournalRetention());
8177
verifyFieldNull("inactivity timeout", handler.getInactivityTimeout());
8278
verifyFieldNull("abort timeout", handler.getAbortTimeout());
8379
verifyFieldNull("enable lazy state", handler.getEnableLazyState());
8480
verifyFieldNull("ingress private", handler.getIngressPrivate());
8581
}
86-
if (version.getNumber() < Discovery.ServiceDiscoveryProtocolVersion.V4.getNumber()) {
82+
if (version.getNumber() < DiscoveryProtocol.Version.V4.getNumber()) {
8783
verifyFieldNull("retry policy initial interval", handler.getRetryPolicyInitialInterval());
8884
verifyFieldNull("retry policy max interval", handler.getRetryPolicyMaxInterval());
8985
verifyFieldNull("retry policy max attempts", handler.getRetryPolicyMaxAttempts());

0 commit comments

Comments
 (0)