@@ -280,7 +280,7 @@ XdsResourceType<?> fromTypeUrl(String typeUrl) {
280
280
private class AdsStream implements EventHandler <DiscoveryResponse > {
281
281
private boolean responseReceived ;
282
282
private boolean closed ;
283
- // Response nonce for the most recently received discovery responses of each resource type.
283
+ // Response nonce for the most recently received discovery responses of each resource type URL .
284
284
// Client initiated requests start response nonce with empty string.
285
285
// Nonce in each response is echoed back in the following ACK/NACK request. It is
286
286
// used for management server to identify which response the client is ACKing/NACking.
@@ -289,7 +289,7 @@ private class AdsStream implements EventHandler<DiscoveryResponse> {
289
289
// map; nonces are only discarded once the stream closes because xds_protocol says "the
290
290
// management server should not send a DiscoveryResponse for any DiscoveryRequest that has a
291
291
// stale nonce."
292
- private final Map <XdsResourceType <?> , String > respNonces = new HashMap <>();
292
+ private final Map <String , String > respNonces = new HashMap <>();
293
293
private final StreamingCall <DiscoveryRequest , DiscoveryResponse > call ;
294
294
private final MethodDescriptor <DiscoveryRequest , DiscoveryResponse > methodDescriptor =
295
295
AggregatedDiscoveryServiceGrpc .getStreamAggregatedResourcesMethod ();
@@ -337,7 +337,7 @@ void sendDiscoveryRequest(XdsResourceType<?> type, String versionInfo,
337
337
final void sendDiscoveryRequest (XdsResourceType <?> type , Collection <String > resources ) {
338
338
logger .log (XdsLogLevel .INFO , "Sending {0} request for resources: {1}" , type , resources );
339
339
sendDiscoveryRequest (type , versions .getOrDefault (type , "" ), resources ,
340
- respNonces .getOrDefault (type , "" ), null );
340
+ respNonces .getOrDefault (type . typeUrl () , "" ), null );
341
341
}
342
342
343
343
@ Override
@@ -352,6 +352,7 @@ public void onRecvMessage(DiscoveryResponse response) {
352
352
public void run () {
353
353
// Reset flag as message has been received on a stream
354
354
streamClosedNoResponse = false ;
355
+ respNonces .put (response .getTypeUrl (), response .getNonce ());
355
356
XdsResourceType <?> type = fromTypeUrl (response .getTypeUrl ());
356
357
if (logger .isLoggable (XdsLogLevel .DEBUG )) {
357
358
logger .log (
@@ -387,7 +388,6 @@ final void handleRpcResponse(XdsResourceType<?> type, String versionInfo, List<A
387
388
return ;
388
389
}
389
390
responseReceived = true ;
390
- respNonces .put (type , nonce );
391
391
ProcessingTracker processingTracker = new ProcessingTracker (
392
392
() -> call .startRecvMessage (), syncContext );
393
393
xdsResponseHandler .handleResourceResponse (type , serverInfo , versionInfo , resources , nonce ,
0 commit comments