diff --git a/.github/actions/behavior_test_binding_java/action.yaml b/.github/actions/behavior_test_binding_java/action.yaml index 635b109df6b7..7c587404b238 100644 --- a/.github/actions/behavior_test_binding_java/action.yaml +++ b/.github/actions/behavior_test_binding_java/action.yaml @@ -41,7 +41,7 @@ runs: - name: Run Test Binding Java shell: bash working-directory: bindings/java - run: ./mvnw test -Dtest="behavior.*Test" -Dcargo-build.features=${{ inputs.feature }} + run: ./mvnw test -Dtest="behavior.*Test" -Dcargo-build.features=${{ inputs.feature }},test-retry env: OPENDAL_TEST: ${{ inputs.service }} EOF diff --git a/bindings/java/Cargo.toml b/bindings/java/Cargo.toml index 63c79d9aead2..9d50872f4098 100644 --- a/bindings/java/Cargo.toml +++ b/bindings/java/Cargo.toml @@ -128,7 +128,8 @@ services-vercel-artifacts = ["opendal/services-vercel-artifacts"] services-wasabi = ["opendal/services-wasabi"] services-mysql = ["opendal/services-mysql"] services-mongodb = ["opendal/services-mongodb"] -"services-libsql" = ["opendal/services-libsql"] +services-libsql = ["opendal/services-libsql"] +test-retry = [] [dependencies] anyhow = "1.0.71" diff --git a/bindings/java/src/operator.rs b/bindings/java/src/operator.rs index 9f5437e579d2..a67fdfe05c3d 100644 --- a/bindings/java/src/operator.rs +++ b/bindings/java/src/operator.rs @@ -56,11 +56,18 @@ pub extern "system" fn Java_org_apache_opendal_Operator_constructor( fn intern_constructor(env: &mut JNIEnv, scheme: JString, map: JObject) -> Result { let scheme = Scheme::from_str(jstring_to_string(env, &scheme)?.as_str())?; let map = jmap_to_hashmap(env, &map)?; + let mut op = Operator::via_map(scheme, map)?; if !op.info().full_capability().blocking { let _guard = unsafe { get_global_runtime() }.enter(); op = op.layer(BlockingLayer::create()?); } + #[cfg(feature = "test-retry")] + let op = { + use opendal::layers::RetryLayer; + op.layer(RetryLayer::new().with_max_times(4)) + }; + Ok(Box::into_raw(Box::new(op)) as jlong) }