@@ -56,7 +56,7 @@ public final class ServerWrapperForXds extends Server {
56
56
private XdsServerBuilder .XdsServingStatusListener xdsServingStatusListener ;
57
57
@ Nullable XdsClientWrapperForServerSds .ServerWatcher serverWatcher ;
58
58
private AtomicBoolean started = new AtomicBoolean ();
59
- private ServingState currentServingState ;
59
+ private volatile ServingState currentServingState ;
60
60
private final long delayForRetry ;
61
61
private final TimeUnit timeUnitForDelayForRetry ;
62
62
private StartRetryTask startRetryTask ;
@@ -239,11 +239,13 @@ public void run() {
239
239
rebuildAndRestartServer ();
240
240
}
241
241
242
- private synchronized void cleanUpStartRetryTask () {
243
- if (timerService != null ) {
244
- timerService = SharedResourceHolder .release (GrpcUtil .TIMER_SERVICE , timerService );
242
+ private void cleanUpStartRetryTask () {
243
+ synchronized (ServerWrapperForXds .this ) {
244
+ if (timerService != null ) {
245
+ timerService = SharedResourceHolder .release (GrpcUtil .TIMER_SERVICE , timerService );
246
+ }
247
+ startRetryTask = null ;
245
248
}
246
- startRetryTask = null ;
247
249
}
248
250
249
251
public void shutdownNow () {
@@ -290,7 +292,7 @@ private static boolean isPermanentErrorFromXds(Throwable throwable) {
290
292
291
293
private void cleanupStartRetryTaskAndShutdownDelegateAndXdsClient (boolean shutdownNow ) {
292
294
Server delegateCopy = null ;
293
- synchronized (this ) {
295
+ synchronized (ServerWrapperForXds . this ) {
294
296
if (startRetryTask != null ) {
295
297
startRetryTask .shutdownNow ();
296
298
}
0 commit comments