@@ -260,7 +260,7 @@ private ClusterStateResponse buildResponse(final ClusterStateRequest request, fi
260260 mdBuilder = Metadata .builder (filteredState .metadata ());
261261 mdBuilder .removeCustomIf (notApi );
262262
263- if (request .multiproject () == false ) {
263+ if (projectResolver . supportsMultipleProjects () && request .multiproject () == false ) {
264264 ProjectStateRegistry projectStateRegistry = ProjectStateRegistry .get (filteredState );
265265 if (projectStateRegistry .size () > 1 ) {
266266 throw new Metadata .MultiProjectPendingException (
@@ -328,28 +328,31 @@ private ClusterStateResponse buildResponse(final ClusterStateRequest request, fi
328328 return new ClusterStateResponse (filteredState .getClusterName (), builder .build (), false );
329329 }
330330
331- private ReservedStateMetadata mergeReservedStateMetadata (ReservedStateMetadata metadata1 , ReservedStateMetadata metadata2 ) {
332- if (Objects .equals (metadata1 .version (), metadata2 .version ()) == false ) {
331+ private ReservedStateMetadata mergeReservedStateMetadata (ReservedStateMetadata clusterReservedMetadata ,
332+ ReservedStateMetadata projectReservedMetadata ) {
333+ if (Objects .equals (clusterReservedMetadata .version (), projectReservedMetadata .version ()) == false ) {
333334 logger .warn (
334335 "Reserved state metadata version is different for Metadata ({}) and the only project ({})" ,
335- metadata2 .version (),
336- metadata1 .version ()
336+ clusterReservedMetadata .version (),
337+ projectReservedMetadata .version ()
337338 );
338339 }
339- ReservedStateMetadata .Builder builder = ReservedStateMetadata .builder (metadata1 .namespace ())
340- .version (Math .max (metadata1 .version (), metadata2 .version ()));
340+ ReservedStateMetadata .Builder builder = ReservedStateMetadata .builder (clusterReservedMetadata .namespace ())
341+ .version (Math .max (clusterReservedMetadata .version (), projectReservedMetadata .version ()));
341342
342- for (ReservedStateHandlerMetadata handler : metadata1 .handlers ().values ()) {
343+ for (ReservedStateHandlerMetadata handler : clusterReservedMetadata .handlers ().values ()) {
343344 builder .putHandler (handler );
344345 }
345- for (ReservedStateHandlerMetadata handler : metadata2 .handlers ().values ()) {
346- builder .putHandler (handler );
346+ for (Map .Entry <String , ReservedStateHandlerMetadata > handlerEntry : projectReservedMetadata .handlers ().entrySet ()) {
347+ assert clusterReservedMetadata .handlers ().containsKey (handlerEntry .getKey ()) == false
348+ : "Duplicate of handler: " + handlerEntry .getKey ();
349+ builder .putHandler (handlerEntry .getValue ());
347350 }
348351
349- if (metadata2 .errorMetadata () != null ) {
350- builder .errorMetadata (metadata2 .errorMetadata ());
351- } else if (metadata1 .errorMetadata () != null ) {
352- builder .errorMetadata (metadata1 .errorMetadata ());
352+ if (projectReservedMetadata .errorMetadata () != null ) {
353+ builder .errorMetadata (projectReservedMetadata .errorMetadata ());
354+ } else if (clusterReservedMetadata .errorMetadata () != null ) {
355+ builder .errorMetadata (clusterReservedMetadata .errorMetadata ());
353356 }
354357
355358 return builder .build ();
0 commit comments