Skip to content

Commit 8d40827

Browse files
author
Kunal Kak
committed
rough update
1 parent 09f09e9 commit 8d40827

File tree

5 files changed

+24
-43
lines changed

5 files changed

+24
-43
lines changed

dialogue-clients/src/main/java/com/palantir/dialogue/clients/ChannelCache.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import com.google.common.annotations.VisibleForTesting;
2222
import com.palantir.conjure.java.api.config.service.ServiceConfiguration;
2323
import com.palantir.conjure.java.client.config.ClientConfiguration;
24-
import com.palantir.deadlines.Deadlines.Enforcement;
2524
import com.palantir.dialogue.core.DialogueChannel;
2625
import com.palantir.dialogue.core.DialogueDnsResolver;
2726
import com.palantir.dialogue.core.TargetUri;
@@ -138,7 +137,6 @@ DialogueChannel getNonReloadingChannel(
138137
.dnsResolver(reloadingParams.dnsResolver())
139138
.dnsRefreshInterval(reloadingParams.dnsRefreshInterval())
140139
.dnsNodeDiscovery(overrideHostIndex.isEmpty() && reloadingParams.dnsNodeDiscovery())
141-
.deadlineEnforcement(reloadingParams.deadlineEnforcement())
142140
.build());
143141
}
144142

@@ -185,7 +183,6 @@ private DialogueChannel createNonLiveReloadingChannel(ChannelCacheKey channelCac
185183
.overrideHostIndex(channelCacheRequest.overrideHostIndex().stream()
186184
.mapToInt(OverrideHostIndex::index)
187185
.findAny())
188-
.deadlineEnforcement(channelCacheRequest.deadlineEnforcement())
189186
.build();
190187
}
191188

@@ -277,8 +274,6 @@ interface ChannelCacheKey extends AugmentClientConfig {
277274
Duration dnsRefreshInterval();
278275

279276
boolean dnsNodeDiscovery();
280-
281-
Enforcement deadlineEnforcement();
282277
}
283278

284279
@Unsafe

dialogue-clients/src/main/java/com/palantir/dialogue/clients/ReloadingClientFactory.java

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@
3030
import com.palantir.conjure.java.client.config.HostEventsSink;
3131
import com.palantir.conjure.java.client.config.NodeSelectionStrategy;
3232
import com.palantir.conjure.java.dialogue.serde.DefaultConjureRuntime;
33-
import com.palantir.deadlines.Deadlines.Enforcement;
3433
import com.palantir.dialogue.Channel;
3534
import com.palantir.dialogue.Clients;
3635
import com.palantir.dialogue.ConjureRuntime;
3736
import com.palantir.dialogue.Endpoint;
3837
import com.palantir.dialogue.EndpointChannel;
3938
import com.palantir.dialogue.EndpointChannelFactory;
4039
import com.palantir.dialogue.Request;
40+
import com.palantir.dialogue.RequestAttachmentKey;
4141
import com.palantir.dialogue.Response;
4242
import com.palantir.dialogue.clients.ChannelCache.OverrideHostIndex;
4343
import com.palantir.dialogue.clients.DialogueClients.DeadlineEnforcementFactory;
@@ -136,11 +136,6 @@ default boolean dnsNodeDiscovery() {
136136
return true;
137137
}
138138

139-
@Value.Default
140-
default Enforcement deadlineEnforcement() {
141-
return Enforcement.DEFER;
142-
}
143-
144139
Optional<ExecutorService> blockingExecutor();
145140
}
146141

@@ -616,16 +611,17 @@ public <T> T get(Class<T> serviceClass, String serviceName) {
616611
}
617612

618613
private Channel getDeadlineEnforcedChannel(String serviceName) {
619-
Enforcement enforcement = enforce ? Enforcement.ENFORCE : Enforcement.DISABLE;
614+
Channel internalDialogueChannel =
615+
delegate.getInternalDialogueChannel(serviceName).get();
620616

621-
ReloadingClientFactory factory = new ReloadingClientFactory(
622-
ImmutableReloadingParams.builder()
623-
.from(delegate.params)
624-
.deadlineEnforcement(enforcement)
625-
.build(),
626-
delegate.cache);
617+
Channel deadlineEnforcingChannel = (endpoint, request) -> {
618+
request.attachments().put(RequestAttachmentKey.create(Boolean.class), enforce);
619+
return internalDialogueChannel.execute(endpoint, request);
620+
};
627621

628-
return factory.getChannel(serviceName);
622+
return new LiveReloadingChannel(
623+
Refreshable.only(deadlineEnforcingChannel),
624+
delegate.params.runtime().clients());
629625
}
630626
}
631627
}

dialogue-core/src/main/java/com/palantir/dialogue/core/Config.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import com.github.benmanes.caffeine.cache.Ticker;
2020
import com.palantir.conjure.java.client.config.ClientConfiguration;
2121
import com.palantir.conjure.java.client.config.ClientConfiguration.ClientQoS;
22-
import com.palantir.deadlines.Deadlines.Enforcement;
2322
import com.palantir.logsafe.DoNotLog;
2423
import com.palantir.logsafe.Preconditions;
2524
import com.palantir.logsafe.SafeArg;
@@ -80,11 +79,6 @@ default int maxQueueSize() {
8079

8180
OptionalInt overrideSingleHostIndex();
8281

83-
@Value.Default
84-
default Enforcement clientDeadlineEnforcement() {
85-
return Enforcement.DEFER;
86-
}
87-
8882
@Value.Check
8983
default void check() {
9084
Preconditions.checkArgument(maxQueueSize() > 0, "maxQueueSize must be positive");

dialogue-core/src/main/java/com/palantir/dialogue/core/DeadlineAdvertisementChannel.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,37 +24,33 @@
2424
import com.palantir.dialogue.Channel;
2525
import com.palantir.dialogue.Endpoint;
2626
import com.palantir.dialogue.Request;
27+
import com.palantir.dialogue.RequestAttachmentKey;
2728
import com.palantir.dialogue.Response;
2829
import java.time.Duration;
2930

3031
final class DeadlineAdvertisementChannel implements Channel {
3132

3233
private final Channel delegate;
3334
private final Duration readTimeout;
34-
private final Enforcement enforcement;
3535

3636
static DeadlineAdvertisementChannel create(Channel delegate, Duration readTimeout) {
37-
return new DeadlineAdvertisementChannel(delegate, readTimeout, Deadlines.Enforcement.DEFER);
37+
return new DeadlineAdvertisementChannel(delegate, readTimeout);
3838
}
3939

40-
static DeadlineAdvertisementChannel create(Channel delegate, Duration readTimeout, Enforcement enforcement) {
41-
return new DeadlineAdvertisementChannel(delegate, readTimeout, enforcement);
42-
}
43-
44-
DeadlineAdvertisementChannel(Channel delegate, Duration readTimeout, Enforcement enforcement) {
40+
DeadlineAdvertisementChannel(Channel delegate, Duration readTimeout) {
4541
this.delegate = delegate;
4642
// a readTimeout of zero effectively means "no timeout", but we don't want to put 0 on the wire,
4743
// so set a very large value instead
4844
// this matches the behavior in ApacheHttpClientChannels
4945
// see:
5046
// https://github.com/palantir/dialogue/blob/develop/dialogue-apache-hc5-client/src/main/java/com/palantir/dialogue/hc5/ApacheHttpClientChannels.java#L641-L648
5147
this.readTimeout = readTimeout.isNegative() || readTimeout.isZero() ? Duration.ofDays(1) : readTimeout;
52-
this.enforcement = enforcement;
5348
}
5449

5550
@Override
5651
public ListenableFuture<Response> execute(Endpoint endpoint, Request request) {
5752
Request.Builder requestBuilder = Request.builder().from(request);
53+
Enforcement enforcement = getEnforcementFromAttachments(request);
5854
try {
5955
Deadlines.encodeToRequest(readTimeout, requestBuilder, RequestBuilderEncodingAdapter.INSTANCE, enforcement);
6056
} catch (DeadlineExpiredException e) {
@@ -63,6 +59,15 @@ public ListenableFuture<Response> execute(Endpoint endpoint, Request request) {
6359
return delegate.execute(endpoint, requestBuilder.build());
6460
}
6561

62+
private Enforcement getEnforcementFromAttachments(Request request) {
63+
Boolean clientEnforcement =
64+
request.attachments().getOrDefault(RequestAttachmentKey.create(Boolean.class), null);
65+
if (clientEnforcement == null) {
66+
return Enforcement.DEFER;
67+
}
68+
return clientEnforcement ? Enforcement.ENFORCE : Enforcement.DISABLE;
69+
}
70+
6671
private enum RequestBuilderEncodingAdapter implements Deadlines.RequestEncodingAdapter<Request.Builder> {
6772
INSTANCE;
6873

dialogue-core/src/main/java/com/palantir/dialogue/core/DialogueChannel.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import com.google.common.util.concurrent.ListenableFuture;
2626
import com.google.errorprone.annotations.CheckReturnValue;
2727
import com.palantir.conjure.java.client.config.ClientConfiguration;
28-
import com.palantir.deadlines.Deadlines.Enforcement;
2928
import com.palantir.dialogue.Channel;
3029
import com.palantir.dialogue.Endpoint;
3130
import com.palantir.dialogue.EndpointChannel;
@@ -142,14 +141,6 @@ public Builder overrideHostIndex(OptionalInt maybeUriIndex) {
142141
return this;
143142
}
144143

145-
/**
146-
* Sets client-side deadline enforcement state.
147-
*/
148-
public Builder deadlineEnforcement(Enforcement value) {
149-
builder.clientDeadlineEnforcement(value);
150-
return this;
151-
}
152-
153144
@VisibleForTesting
154145
Builder random(Random value) {
155146
builder.random(value);
@@ -252,7 +243,7 @@ private static ImmutableList<LimitedChannel> createHostChannels(
252243
channel =
253244
new TraceEnrichingChannel(channel, DialogueTracing.tracingTags(cf, uriIndexForInstrumentation));
254245
channel = DeadlineAdvertisementChannel.create(
255-
channel, cf.clientConf().readTimeout(), cf.clientDeadlineEnforcement());
246+
channel, cf.clientConf().readTimeout());
256247

257248
ChannelState channelState = state.get(targetUri);
258249
Preconditions.checkNotNull(channelState, "no ChannelState exists for this TargetUri");

0 commit comments

Comments
 (0)