mirror of https://github.com/grpc/grpc-java.git
all: log picker when updating balancing state
Let `ManagedChannelImpl` log picker update when updating balancing state.
This commit is contained in:
parent
14e63fea61
commit
1ed538f253
|
|
@ -432,6 +432,11 @@ public final class AutoConfiguredLoadBalancerFactory {
|
|||
public PickResult pickSubchannel(PickSubchannelArgs args) {
|
||||
return PickResult.withNoResult();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return MoreObjects.toStringHelper(EmptyPicker.class).toString();
|
||||
}
|
||||
}
|
||||
|
||||
private static final class FailingPicker extends SubchannelPicker {
|
||||
|
|
|
|||
|
|
@ -812,6 +812,13 @@ final class ManagedChannelImpl extends ManagedChannel implements
|
|||
public PickResult pickSubchannel(PickSubchannelArgs args) {
|
||||
return panicPickResult;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return MoreObjects.toStringHelper(PanicSubchannelPicker.class)
|
||||
.add("panicPickResult", panicPickResult)
|
||||
.toString();
|
||||
}
|
||||
}
|
||||
|
||||
updateSubchannelPicker(new PanicSubchannelPicker());
|
||||
|
|
@ -1146,7 +1153,8 @@ final class ManagedChannelImpl extends ManagedChannel implements
|
|||
// It's not appropriate to report SHUTDOWN state from lb.
|
||||
// Ignore the case of newState == SHUTDOWN for now.
|
||||
if (newState != SHUTDOWN) {
|
||||
channelLogger.log(ChannelLogLevel.INFO, "Entering {0} state", newState);
|
||||
channelLogger.log(
|
||||
ChannelLogLevel.INFO, "Entering {0} state with picker: {1}", newState, newPicker);
|
||||
channelStateManager.gotoState(newState);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -173,14 +173,23 @@ final class OobChannel extends ManagedChannel implements InternalInstrumented<Ch
|
|||
}
|
||||
};
|
||||
|
||||
subchannelPicker = new SubchannelPicker() {
|
||||
final class OobSubchannelPicker extends SubchannelPicker {
|
||||
final PickResult result = PickResult.withSubchannel(subchannelImpl);
|
||||
|
||||
@Override
|
||||
public PickResult pickSubchannel(PickSubchannelArgs args) {
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return MoreObjects.toStringHelper(OobSubchannelPicker.class)
|
||||
.add("result", result)
|
||||
.toString();
|
||||
}
|
||||
}
|
||||
|
||||
subchannelPicker = new OobSubchannelPicker();
|
||||
delayedTransport.reprocess(subchannelPicker);
|
||||
}
|
||||
|
||||
|
|
@ -253,14 +262,23 @@ final class OobChannel extends ManagedChannel implements InternalInstrumented<Ch
|
|||
delayedTransport.reprocess(subchannelPicker);
|
||||
break;
|
||||
case TRANSIENT_FAILURE:
|
||||
delayedTransport.reprocess(new SubchannelPicker() {
|
||||
final class OobErrorPicker extends SubchannelPicker {
|
||||
final PickResult errorResult = PickResult.withError(newState.getStatus());
|
||||
|
||||
@Override
|
||||
public PickResult pickSubchannel(PickSubchannelArgs args) {
|
||||
return errorResult;
|
||||
}
|
||||
});
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return MoreObjects.toStringHelper(OobErrorPicker.class)
|
||||
.add("errorResult", errorResult)
|
||||
.toString();
|
||||
}
|
||||
}
|
||||
|
||||
delayedTransport.reprocess(new OobErrorPicker());
|
||||
break;
|
||||
default:
|
||||
// Do nothing
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import static io.grpc.ConnectivityState.CONNECTING;
|
|||
import static io.grpc.ConnectivityState.SHUTDOWN;
|
||||
import static io.grpc.ConnectivityState.TRANSIENT_FAILURE;
|
||||
|
||||
import com.google.common.base.MoreObjects;
|
||||
import io.grpc.ConnectivityState;
|
||||
import io.grpc.ConnectivityStateInfo;
|
||||
import io.grpc.EquivalentAddressGroup;
|
||||
|
|
@ -135,6 +136,11 @@ final class PickFirstLoadBalancer extends LoadBalancer {
|
|||
public PickResult pickSubchannel(PickSubchannelArgs args) {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return MoreObjects.toStringHelper(Picker.class).add("result", result).toString();
|
||||
}
|
||||
}
|
||||
|
||||
/** Picker that requests connection during the first pick, and returns noResult. */
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
|
|||
import static com.google.common.base.Preconditions.checkState;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.base.MoreObjects;
|
||||
import io.grpc.ConnectivityState;
|
||||
import io.grpc.ConnectivityStateInfo;
|
||||
import io.grpc.ExperimentalApi;
|
||||
|
|
@ -56,14 +57,21 @@ public final class GracefulSwitchLoadBalancer extends ForwardingLoadBalancer {
|
|||
|
||||
@Override
|
||||
public void handleNameResolutionError(final Status error) {
|
||||
helper.updateBalancingState(
|
||||
ConnectivityState.TRANSIENT_FAILURE,
|
||||
new SubchannelPicker() {
|
||||
class ErrorPicker extends SubchannelPicker {
|
||||
@Override
|
||||
public PickResult pickSubchannel(PickSubchannelArgs args) {
|
||||
return PickResult.withError(error);
|
||||
}
|
||||
});
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return MoreObjects.toStringHelper(ErrorPicker.class).add("error", error).toString();
|
||||
}
|
||||
}
|
||||
|
||||
helper.updateBalancingState(
|
||||
ConnectivityState.TRANSIENT_FAILURE,
|
||||
new ErrorPicker());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ import static io.grpc.ConnectivityState.SHUTDOWN;
|
|||
import static io.grpc.ConnectivityState.TRANSIENT_FAILURE;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.base.MoreObjects;
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.common.base.Preconditions;
|
||||
|
||||
|
|
@ -428,6 +429,11 @@ final class RoundRobinLoadBalancer extends LoadBalancer {
|
|||
return PickResult.withSubchannel(subchannel != null ? subchannel : nextSubchannel());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return MoreObjects.toStringHelper(ReadyPicker.class).add("list", list).toString();
|
||||
}
|
||||
|
||||
private Subchannel nextSubchannel() {
|
||||
int size = list.size();
|
||||
int i = indexUpdater.incrementAndGet(this);
|
||||
|
|
@ -476,6 +482,11 @@ final class RoundRobinLoadBalancer extends LoadBalancer {
|
|||
return picker instanceof EmptyPicker && (Objects.equal(status, ((EmptyPicker) picker).status)
|
||||
|| (status.isOk() && ((EmptyPicker) picker).status.isOk()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return MoreObjects.toStringHelper(EmptyPicker.class).add("status", status).toString();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -2862,7 +2862,7 @@ public class ManagedChannelImplTest {
|
|||
timer.forwardNanos(1234);
|
||||
updateBalancingStateSafely(helper, CONNECTING, mockPicker);
|
||||
assertThat(getStats(channel).channelTrace.events).contains(new ChannelTrace.Event.Builder()
|
||||
.setDescription("Entering CONNECTING state")
|
||||
.setDescription("Entering CONNECTING state with picker: mockPicker")
|
||||
.setSeverity(ChannelTrace.Event.Severity.CT_INFO)
|
||||
.setTimestampNanos(timer.getTicker().read())
|
||||
.build());
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ import static io.grpc.ConnectivityState.SHUTDOWN;
|
|||
import static io.grpc.ConnectivityState.TRANSIENT_FAILURE;
|
||||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.base.MoreObjects;
|
||||
import com.google.common.base.Objects;
|
||||
import com.google.common.base.Stopwatch;
|
||||
import com.google.protobuf.util.Durations;
|
||||
|
|
@ -1051,5 +1052,12 @@ final class GrpclbState {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return MoreObjects.toStringHelper(RoundRobinPicker.class)
|
||||
.add("dropList", dropList)
|
||||
.add("pickList", pickList)
|
||||
.toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -413,6 +413,13 @@ final class ClientLoadCounter {
|
|||
ClientStreamTracer.Factory originFactory) {
|
||||
return new LoadRecordingStreamTracerFactory(counter, originFactory);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return MoreObjects.toStringHelper(LoadRecordingSubchannelPicker.class)
|
||||
.add("delegate", delegate)
|
||||
.toString();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -445,5 +452,12 @@ final class ClientLoadCounter {
|
|||
ClientStreamTracer.Factory originFactory) {
|
||||
return orcaPerRequestUtil.newOrcaClientStreamTracerFactory(originFactory, listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return MoreObjects.toStringHelper(MetricsObservingSubchannelPicker.class)
|
||||
.add("delegate", delegate)
|
||||
.toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue