conductor - s50600822/Notes GitHub Wiki

  • do they scale differently
  • do they likely to evolve seperately or together
  • do you want to share the task impl with someone else, and confident your worker will fit other's needs, do you commit to support others with mantenance/feature of this worker. Think of a task like an API with input and output. Note that the mentioned condition is harder to meet if the worker purpose is to produce side effect. (1)
  • is the extra box worth the HTTP round trip, the extra objects and storages around this extra node in the graph everywhere the data is presented.
  • do the extra node in the workflow tell a more meaningful and relevant story to the person who inspect the workflow, for the majority of the time. Or would it rather confusing to them for exposing the implementation that has nothing to do.

Test and Debug Test

./gradlew :conductor-java-sdk:test --tests WorkflowCreationTests --debug-jvm

Issues:

  • Java 17 now, com.netflix.conductor.core.events.ScriptEvaluator should be broken since:
        // Unless plugging in a third party, Nashorn was removed since 15
        
        ScriptEngine engine = new ScriptEngineManager().getEngineByName("Nashorn");
        System.out.println(engine);// should be null 

        java.util.List<ScriptEngineFactory> eF = new ScriptEngineManager().getEngineFactories();
        System.out.println(eF.size());// should be empty 

Base

Springboot

classpath 'org.springframework.boot:spring-boot-gradle-plugin:2.7.3'

See dep

springboot doc

Test Config

Server

eg at test-server.properties, enabling http://localhost:8080/actuator:

management.endpoints.web.exposure.include=*
management.endpoints.env.exposure.include=*
management.endpoint.info.enabled=true
management.endpoint.env.enabled=true

quick start a server java -cp -Dserver.port=8080 -DCONDUCTOR_CONFIG_FILE=/Users/hoaphan/dev/code/s50600822/conductor/java-sdk/build/resources/main/test-server.properties -jar /var/folders/wn/x0vkfv490vzbrtczr894j8nm0000gn/T/conductor-server.jar

Note that you can't inject -cp because the Jar only loaded classed bundled and instructed by springboot packaging https://docs.spring.io/spring-boot/docs/current/reference/html/executable-jar.html - if you do java -verbose -cp ./nashorn-core-15.4.jar:./asm-9.1.jar -jar /var/folders/wn/x0vkfv490vzbrtczr894j8nm0000gn/T/conductor-server.jar the JVM will simply ignore the extra jars.

:)))

➜  gradle-netflixoss-project-plugin git:(0ec0942) gradle dependencies --configuration runtime


> Configure project :
Signing plugin detected. Will automatically sign the published artifacts.
Inferred project: gradle-netflixoss-project-plugin, version: 11.3.0-dev.0+0ec0942

FAILURE: Build failed with an exception.

* Where:
Build file '/Users/hoaphan/dev/code/gradle-netflixoss-project-plugin/build.gradle' line: 4

* What went wrong:
An exception occurred applying plugin request [id: 'com.netflix.nebula.plugin-plugin', version: '20.3.0']
> Failed to apply plugin 'com.netflix.nebula.source-jar'.
   > No signature of method: static org.gradle.api.plugins.internal.JvmPluginsHelper.configureDocumentationVariantWithArtifact() is applicable for argument types: (String, null, String, EmptyList, String, org.gradle.api.internal.file.DefaultSourceDirectorySet_Decorated...) values: [sourcesElements, null, sources, [], sourceJar, main source, ...]

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Get more help at https://help.gradle.org.

Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/8.3/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD FAILED in 1s

Publishing build scan...
https://gradle.com/s/f43grt6wuuiwy