diff --git a/build.gradle b/build.gradle index 8f3ce3294..2277e5212 100644 --- a/build.gradle +++ b/build.gradle @@ -16,7 +16,7 @@ plugins { id 'maven-publish' id 'signing' id 'de.marcphilipp.nexus-publish' version '0.4.0' - id 'name.remal.check-updates' version '1.0.203' + id 'name.remal.check-updates' version '1.0.209' } repositories { @@ -98,15 +98,15 @@ dependencies { api group: 'com.uber.m3', name: 'tally-core', version: '0.6.1' api group: 'io.micrometer', name: 'micrometer-core', version: '1.5.2' api group: 'org.slf4j', name: 'slf4j-api', version: '1.7.30' - api 'io.grpc:grpc-protobuf:1.30.2' - api 'io.grpc:grpc-stub:1.30.2' + api 'io.grpc:grpc-protobuf:1.31.1' + api 'io.grpc:grpc-stub:1.31.1' implementation group: 'com.google.guava', name: 'guava', version: '29.0-jre' - implementation group: 'com.cronutils', name: 'cron-utils', version: '9.1.0' - implementation 'io.grpc:grpc-netty-shaded:1.30.2' - implementation group: 'com.google.protobuf', name: 'protobuf-java-util', version: '3.12.2' - implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.11.1' - implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.11.1' + implementation group: 'com.cronutils', name: 'cron-utils', version: '9.1.1' + implementation 'io.grpc:grpc-netty-shaded:1.31.1' + implementation group: 'com.google.protobuf', name: 'protobuf-java-util', version: '3.12.4' + implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.11.2' + implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.11.2' testImplementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3' testImplementation group: 'com.googlecode.junit-toolbox', name: 'junit-toolbox', version: '2.4' @@ -120,7 +120,7 @@ configurations.all { license { header rootProject.file('license-header.txt') - exclude 'io/temporal/proto/**.java' // generated code + exclude '**/*.puml' } task initSubmodules(type: Exec) { @@ -143,11 +143,11 @@ jar { protobuf { protoc { - artifact = 'com.google.protobuf:protoc:3.12.3' + artifact = 'com.google.protobuf:protoc:3.12.4' } plugins { grpc { - artifact = 'io.grpc:protoc-gen-grpc-java:1.30.2' + artifact = 'io.grpc:protoc-gen-grpc-java:1.31.1' } } generateProtoTasks { @@ -170,8 +170,8 @@ protobuf { idea { module { - sourceDirs += file("$buildDir/generated/main/java"); - sourceDirs += file("$buildDir/generated/main/grpc"); + sourceDirs += file("$buildDir/generated/main/java") + sourceDirs += file("$buildDir/generated/main/grpc") } } @@ -327,7 +327,7 @@ allprojects { // add a testlistener to all tasks of type Test tasks.withType(Test) { afterTest { TestDescriptor descriptor, TestResult result -> - if(result.resultType == org.gradle.api.tasks.testing.TestResult.ResultType.FAILURE){ + if (result.resultType == org.gradle.api.tasks.testing.TestResult.ResultType.FAILURE) { failedTests << ["${descriptor.className}::${descriptor.name}"] } } @@ -335,7 +335,7 @@ allprojects { // print out tracked failed tests when the build has finished gradle.buildFinished { - if(!failedTests.empty){ + if (!failedTests.empty) { println "Failed tests for ${project.name}:" failedTests.each { failedTest -> println failedTest diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 490fda857..62d4c0535 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index bb8b2fc26..6c9a22477 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.5.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.6-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 2fe81a7d9..fbd7c5158 100755 --- a/gradlew +++ b/gradlew @@ -82,6 +82,7 @@ esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then @@ -129,6 +130,7 @@ fi if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath diff --git a/gradlew.bat b/gradlew.bat index 9109989e3..a9f778a7a 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -84,6 +84,7 @@ set CMD_LINE_ARGS=%* set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% diff --git a/src/main/java/io/temporal/activity/ActivityCancellationType.java b/src/main/java/io/temporal/activity/ActivityCancellationType.java index 0fbb828c9..5b77833a9 100644 --- a/src/main/java/io/temporal/activity/ActivityCancellationType.java +++ b/src/main/java/io/temporal/activity/ActivityCancellationType.java @@ -24,7 +24,7 @@ /** * Defines behaviour of the parent workflow when {@link CancellationScope} that wraps child workflow - * execution request is cancelled. The result of the cancellation independently of the type is a + * execution request is canceled. The result of the cancellation independently of the type is a * {@link CanceledFailure} thrown from the child workflow method. */ public enum ActivityCancellationType { diff --git a/src/main/java/io/temporal/activity/ActivityOptions.java b/src/main/java/io/temporal/activity/ActivityOptions.java index ade3162b9..9cbc260af 100644 --- a/src/main/java/io/temporal/activity/ActivityOptions.java +++ b/src/main/java/io/temporal/activity/ActivityOptions.java @@ -185,7 +185,7 @@ public ActivityOptions validateAndBuildWithDefaults() { taskQueue, retryOptions, contextPropagators, - cancellationType); + cancellationType == null ? ActivityCancellationType.TRY_CANCEL : cancellationType); } } diff --git a/src/main/java/io/temporal/activity/LocalActivityOptions.java b/src/main/java/io/temporal/activity/LocalActivityOptions.java index 3c14af6f1..e239568a1 100644 --- a/src/main/java/io/temporal/activity/LocalActivityOptions.java +++ b/src/main/java/io/temporal/activity/LocalActivityOptions.java @@ -48,6 +48,7 @@ public static LocalActivityOptions getDefaultInstance() { public static final class Builder { private Duration scheduleToCloseTimeout; + private Duration localRetryThreshold; private Duration startToCloseTimeout; private RetryOptions retryOptions; @@ -57,6 +58,7 @@ private Builder(LocalActivityOptions options) { return; } this.scheduleToCloseTimeout = options.getScheduleToCloseTimeout(); + this.localRetryThreshold = options.getLocalRetryThreshold(); this.startToCloseTimeout = options.getStartToCloseTimeout(); this.retryOptions = options.retryOptions; } @@ -67,6 +69,15 @@ public Builder setScheduleToCloseTimeout(Duration scheduleToCloseTimeout) { return this; } + /** + * Maximum time to retry locally keeping workflow task open through heartbeat. Default is 6 + * workflow task timeout. + */ + public Builder setLocalRetryThreshold(Duration localRetryThreshold) { + this.localRetryThreshold = localRetryThreshold; + return this; + } + public Builder setStartToCloseTimeout(Duration startToCloseTimeout) { this.startToCloseTimeout = startToCloseTimeout; return this; @@ -93,7 +104,8 @@ public Builder setMethodRetry(MethodRetry r) { } public LocalActivityOptions build() { - return new LocalActivityOptions(scheduleToCloseTimeout, startToCloseTimeout, retryOptions); + return new LocalActivityOptions( + startToCloseTimeout, localRetryThreshold, scheduleToCloseTimeout, retryOptions); } public LocalActivityOptions validateAndBuildWithDefaults() { @@ -101,16 +113,22 @@ public LocalActivityOptions validateAndBuildWithDefaults() { if (retryOptions != null) { ro = RetryOptions.newBuilder(retryOptions).validateBuildWithDefaults(); } - return new LocalActivityOptions(scheduleToCloseTimeout, startToCloseTimeout, ro); + return new LocalActivityOptions( + startToCloseTimeout, localRetryThreshold, scheduleToCloseTimeout, ro); } } private final Duration scheduleToCloseTimeout; + private final Duration localRetryThreshold; private final Duration startToCloseTimeout; private final RetryOptions retryOptions; private LocalActivityOptions( - Duration scheduleToCloseTimeout, Duration startToCloseTimeout, RetryOptions retryOptions) { + Duration startToCloseTimeout, + Duration localRetryThreshold, + Duration scheduleToCloseTimeout, + RetryOptions retryOptions) { + this.localRetryThreshold = localRetryThreshold; this.scheduleToCloseTimeout = scheduleToCloseTimeout; this.startToCloseTimeout = startToCloseTimeout; this.retryOptions = retryOptions; @@ -120,6 +138,10 @@ public Duration getScheduleToCloseTimeout() { return scheduleToCloseTimeout; } + public Duration getLocalRetryThreshold() { + return localRetryThreshold; + } + public Duration getStartToCloseTimeout() { return startToCloseTimeout; } diff --git a/src/main/java/io/temporal/client/ActivityCancelledException.java b/src/main/java/io/temporal/client/ActivityCanceledException.java similarity index 84% rename from src/main/java/io/temporal/client/ActivityCancelledException.java rename to src/main/java/io/temporal/client/ActivityCanceledException.java index 848440c3b..0acab620c 100644 --- a/src/main/java/io/temporal/client/ActivityCancelledException.java +++ b/src/main/java/io/temporal/client/ActivityCanceledException.java @@ -25,13 +25,13 @@ * Usually indicates that activity was already completed (duplicated request to complete) or timed * out or workflow is closed. */ -public final class ActivityCancelledException extends ActivityCompletionException { +public final class ActivityCanceledException extends ActivityCompletionException { - public ActivityCancelledException(ActivityInfo info) { + public ActivityCanceledException(ActivityInfo info) { super(info); } - public ActivityCancelledException() { + public ActivityCanceledException() { super(); } } diff --git a/src/main/java/io/temporal/client/WorkflowOptions.java b/src/main/java/io/temporal/client/WorkflowOptions.java index 02a7aebbc..8fda2f69e 100644 --- a/src/main/java/io/temporal/client/WorkflowOptions.java +++ b/src/main/java/io/temporal/client/WorkflowOptions.java @@ -132,7 +132,7 @@ public Builder setWorkflowId(String workflowId) { * * * *