Skip to content

Commit 6ed1904

Browse files
fix: avoid cyclic dependency
1 parent 781381c commit 6ed1904

File tree

4 files changed

+49
-39
lines changed

4 files changed

+49
-39
lines changed

core/base/build.gradle.kts

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ dependencies {
3232
implementation(project(":core:policy:policy-engine"))
3333
implementation(project(":extensions:dataloading"))
3434

35-
implementation("com.squareup.okhttp3:okhttp:${okHttpVersion}")
36-
implementation("dev.failsafe:failsafe:${failsafeVersion}")
35+
api("com.squareup.okhttp3:okhttp:${okHttpVersion}")
36+
api("dev.failsafe:failsafe:${failsafeVersion}")
3737
implementation("org.bouncycastle:bcpkix-jdk15on:${bouncycastleVersion}")
3838

3939
testImplementation(project(":extensions:junit"))

core/base/src/main/java/org/eclipse/dataspaceconnector/core/CoreServicesExtension.java

-33
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,7 @@
1414

1515
package org.eclipse.dataspaceconnector.core;
1616

17-
import dev.failsafe.RetryPolicy;
18-
import okhttp3.EventListener;
19-
import okhttp3.OkHttpClient;
2017
import org.eclipse.dataspaceconnector.core.base.CommandHandlerRegistryImpl;
21-
import org.eclipse.dataspaceconnector.core.base.OkHttpClientFactory;
2218
import org.eclipse.dataspaceconnector.core.base.RemoteMessageDispatcherRegistryImpl;
2319
import org.eclipse.dataspaceconnector.core.base.agent.ParticipantAgentServiceImpl;
2420
import org.eclipse.dataspaceconnector.core.base.policy.PolicyEngineImpl;
@@ -59,7 +55,6 @@
5955
import java.security.PrivateKey;
6056
import java.time.Clock;
6157
import java.time.Duration;
62-
import java.time.temporal.ChronoUnit;
6358
import java.util.concurrent.ExecutorService;
6459
import java.util.concurrent.Executors;
6560

@@ -73,12 +68,6 @@
7368
})
7469
public class CoreServicesExtension implements ServiceExtension {
7570

76-
@EdcSetting
77-
public static final String MAX_RETRIES = "edc.core.retry.retries.max";
78-
@EdcSetting
79-
public static final String BACKOFF_MIN_MILLIS = "edc.core.retry.backoff.min";
80-
@EdcSetting
81-
public static final String BACKOFF_MAX_MILLIS = "edc.core.retry.backoff.max";
8271
@EdcSetting
8372
public static final String LIVENESS_PERIOD_SECONDS_SETTING = "edc.core.system.health.check.liveness-period";
8473
@EdcSetting
@@ -94,12 +83,6 @@ public class CoreServicesExtension implements ServiceExtension {
9483
private static final int DEFAULT_TP_SIZE = 3;
9584
private static final String DEFAULT_HOSTNAME = "localhost";
9685

97-
/**
98-
* An optional OkHttp {@link EventListener} that can be used to instrument OkHttp client for collecting metrics.
99-
* Used by the optional {@code micrometer} module.
100-
*/
101-
@Inject(required = false)
102-
private EventListener okHttpEventListener;
10386

10487
/**
10588
* An optional instrumentor for {@link ExecutorService}. Used by the optional {@code micrometer} module.
@@ -156,18 +139,6 @@ public ExecutorInstrumentation defaultInstrumentation() {
156139
return ExecutorInstrumentation.noop();
157140
}
158141

159-
@Provider
160-
public RetryPolicy<?> retryPolicy(ServiceExtensionContext context) {
161-
var maxRetries = context.getSetting(MAX_RETRIES, 5);
162-
var minBackoff = context.getSetting(BACKOFF_MIN_MILLIS, 500);
163-
var maxBackoff = context.getSetting(BACKOFF_MAX_MILLIS, 10_000);
164-
165-
return RetryPolicy.builder()
166-
.withMaxRetries(maxRetries)
167-
.withBackoff(minBackoff, maxBackoff, ChronoUnit.MILLIS)
168-
.build();
169-
}
170-
171142
@Provider
172143
public Hostname hostname(ServiceExtensionContext context) {
173144
var hostname = context.getSetting(HOSTNAME_SETTING, DEFAULT_HOSTNAME);
@@ -202,10 +173,6 @@ public PolicyEngine policyEngine() {
202173
return new PolicyEngineImpl(scopeFilter);
203174
}
204175

205-
@Provider
206-
public OkHttpClient okHttpClient(ServiceExtensionContext context) {
207-
return OkHttpClientFactory.create(context, okHttpEventListener);
208-
}
209176

210177
@Provider
211178
public EventRouter eventRouter(ServiceExtensionContext context) {

core/base/src/main/java/org/eclipse/dataspaceconnector/core/defaults/DefaultServicesExtension.java

+37
Original file line numberDiff line numberDiff line change
@@ -14,40 +14,71 @@
1414

1515
package org.eclipse.dataspaceconnector.core.defaults;
1616

17+
import dev.failsafe.RetryPolicy;
18+
import okhttp3.EventListener;
19+
import okhttp3.OkHttpClient;
1720
import org.eclipse.dataspaceconnector.common.concurrency.LockManager;
21+
import org.eclipse.dataspaceconnector.core.base.OkHttpClientFactory;
1822
import org.eclipse.dataspaceconnector.core.defaults.assetindex.InMemoryAssetIndex;
1923
import org.eclipse.dataspaceconnector.core.defaults.contractdefinition.InMemoryContractDefinitionStore;
2024
import org.eclipse.dataspaceconnector.core.defaults.negotiationstore.InMemoryContractNegotiationStore;
2125
import org.eclipse.dataspaceconnector.core.defaults.policystore.InMemoryPolicyDefinitionStore;
2226
import org.eclipse.dataspaceconnector.core.defaults.transferprocessstore.InMemoryTransferProcessStore;
2327
import org.eclipse.dataspaceconnector.dataloading.AssetLoader;
2428
import org.eclipse.dataspaceconnector.dataloading.ContractDefinitionLoader;
29+
import org.eclipse.dataspaceconnector.spi.EdcSetting;
2530
import org.eclipse.dataspaceconnector.spi.asset.AssetIndex;
2631
import org.eclipse.dataspaceconnector.spi.asset.DataAddressResolver;
2732
import org.eclipse.dataspaceconnector.spi.contract.negotiation.store.ContractNegotiationStore;
2833
import org.eclipse.dataspaceconnector.spi.contract.offer.store.ContractDefinitionStore;
2934
import org.eclipse.dataspaceconnector.spi.policy.store.PolicyDefinitionStore;
35+
import org.eclipse.dataspaceconnector.spi.system.Inject;
3036
import org.eclipse.dataspaceconnector.spi.system.Provider;
3137
import org.eclipse.dataspaceconnector.spi.system.ServiceExtension;
3238
import org.eclipse.dataspaceconnector.spi.system.ServiceExtensionContext;
3339
import org.eclipse.dataspaceconnector.spi.transaction.NoopTransactionContext;
3440
import org.eclipse.dataspaceconnector.spi.transaction.TransactionContext;
3541
import org.eclipse.dataspaceconnector.spi.transfer.store.TransferProcessStore;
3642

43+
import java.time.temporal.ChronoUnit;
3744
import java.util.concurrent.locks.ReentrantReadWriteLock;
3845

3946
/**
4047
* Provides (in-mem &amp; no-op) defaults for various stores, registries etc.
4148
* Provider methods are only invoked if no other implementation was found on the classpath.
4249
*/
4350
public class DefaultServicesExtension implements ServiceExtension {
51+
@EdcSetting(value = "Maximum retries for the retry policy before a failure is propagated")
52+
public static final String MAX_RETRIES = "edc.core.retry.retries.max";
53+
@EdcSetting(value = "Minimum number of milliseconds for exponential backoff")
54+
public static final String BACKOFF_MIN_MILLIS = "edc.core.retry.backoff.min";
55+
@EdcSetting(value = "Maximum number of milliseconds for exponential backoff. ")
56+
public static final String BACKOFF_MAX_MILLIS = "edc.core.retry.backoff.max";
4457

4558
private InMemoryAssetIndex assetIndex;
4659
private InMemoryContractDefinitionStore contractDefinitionStore;
60+
/**
61+
* An optional OkHttp {@link EventListener} that can be used to instrument OkHttp client for collecting metrics.
62+
* Used by the optional {@code micrometer} module.
63+
*/
64+
@Inject(required = false)
65+
private EventListener okHttpEventListener;
4766

4867
public DefaultServicesExtension() {
4968
}
5069

70+
@Provider(isDefault = true)
71+
public RetryPolicy<?> retryPolicy(ServiceExtensionContext context) {
72+
var maxRetries = context.getSetting(MAX_RETRIES, 5);
73+
var minBackoff = context.getSetting(BACKOFF_MIN_MILLIS, 500);
74+
var maxBackoff = context.getSetting(BACKOFF_MAX_MILLIS, 10_000);
75+
76+
return RetryPolicy.builder()
77+
.withMaxRetries(maxRetries)
78+
.withBackoff(minBackoff, maxBackoff, ChronoUnit.MILLIS)
79+
.build();
80+
}
81+
5182
@Provider(isDefault = true)
5283
public AssetIndex defaultAssetIndex() {
5384
return getAssetIndex();
@@ -94,6 +125,12 @@ public TransactionContext defaultTransactionContext(ServiceExtensionContext cont
94125
return new NoopTransactionContext();
95126
}
96127

128+
129+
@Provider(isDefault = true)
130+
public OkHttpClient okHttpClient(ServiceExtensionContext context) {
131+
return OkHttpClientFactory.create(context, okHttpEventListener);
132+
}
133+
97134
private ContractDefinitionStore getContractDefinitionStore() {
98135
if (contractDefinitionStore == null) {
99136
contractDefinitionStore = new InMemoryContractDefinitionStore();

extensions/azure/blobstorage/blob-provision/src/main/java/org/eclipse/dataspaceconnector/provision/azure/AzureProvisionExtension.java

+10-4
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,15 @@ public class AzureProvisionExtension implements ServiceExtension {
3939
@Inject
4040
private BlobStoreApi blobStoreApi;
4141

42+
@Inject
43+
private RetryPolicy<Object> retryPolicy;
44+
45+
@Inject
46+
private ResourceManifestGenerator manifestGenerator;
47+
48+
@Inject
49+
private StatusCheckerRegistry statusCheckerRegistry;
50+
4251
@Override
4352
public String name() {
4453
return "Azure Provision";
@@ -50,15 +59,12 @@ public void initialize(ServiceExtensionContext context) {
5059
var monitor = context.getMonitor();
5160
var provisionManager = context.getService(ProvisionManager.class);
5261

53-
var retryPolicy = (RetryPolicy<Object>) context.getService(RetryPolicy.class);
5462
provisionManager.register(new ObjectStorageProvisioner(retryPolicy, monitor, blobStoreApi));
5563

5664
// register the generator
57-
var manifestGenerator = context.getService(ResourceManifestGenerator.class);
5865
manifestGenerator.registerGenerator(new ObjectStorageConsumerResourceDefinitionGenerator());
5966

60-
var statusCheckerReg = context.getService(StatusCheckerRegistry.class);
61-
statusCheckerReg.register(AzureBlobStoreSchema.TYPE, new ObjectContainerStatusChecker(blobStoreApi, retryPolicy));
67+
statusCheckerRegistry.register(AzureBlobStoreSchema.TYPE, new ObjectContainerStatusChecker(blobStoreApi, retryPolicy));
6268

6369
registerTypes(context.getTypeManager());
6470
}

0 commit comments

Comments
 (0)