SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode - #4768

Open
serhiy-bzhezytskyy wants to merge 9 commits into
apache:mainfrom
serhiy-bzhezytskyy:SOLR-18381-un-deprecate-createfromcollectionmap
Open

SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode#4768
serhiy-bzhezytskyy wants to merge 9 commits into
apache:mainfrom
serhiy-bzhezytskyy:SOLR-18381-un-deprecate-createfromcollectionmap

Conversation

@serhiy-bzhezytskyy

@serhiy-bzhezytskyyserhiy-bzhezytskyy commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

https://issues.apache.org/jira/browse/SOLR-18381

Removes ClusterState.getReplicaNamesPerCollectionOnNode (0 callers left after migrating ZkController/ZkControllerTest to collectionStream() + getReplicasOnNode), and un-deprecates createFromCollectionMap instead of removing it as the title suggests -- it's still called from createFromJson (deprecated, tracked separately in the still-open SOLR-18149) plus two production call sites.

14 tests, 0 failures.

SOLR-18370 (local, not yet a PR) also touches ZkController.java, different region -- re-check once it opens a PR.

AI-assisted (Claude Sonnet 5)

…n-deprecate createFromCollectionMap
getReplicaNamesPerCollectionOnNode had 0 remaining callers after migrating
ZkController/ZkControllerTest to collectionStream() + getReplicasOnNode.
createFromCollectionMap is un-deprecated instead of removed, contrary to the
ticket's title: it's still called from createFromJson (deprecated, tracked
separately in the still-open SOLR-18149) plus two production call sites.
AI-assisted (Claude Sonnet 5)
Same shape as apache#4763/apache#4761 -- a narrow, single-purpose ClusterState
helper, no observable behavior change.
@epugh

Copy link
Copy Markdown
Contributor

I wonder if we wait till the fix for SOLR-18149 lands before merging this?

@epugh

Copy link
Copy Markdown
Contributor

also, for purely internal type changes with no change log, you can just add the label no-changelog ;-)

createFromJson's own deprecation is being resolved separately
(SOLR-18149) -- this comment shouldn't assume its status either way.
@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

I don't have permissions to add labels as an outside contributor -- could you add no-changelog if that's the route you'd prefer? Same applies to #4761.

@epugh

Copy link
Copy Markdown
Contributor

I don't have permissions to add labels as an outside contributor -- could you add no-changelog if that's the route you'd prefer? Same applies to #4761.

argh, that's annonying. also, feel free to just slap in a comment to that effect and I can do the bookeeping.

@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

Opened #4777 -- un-deprecates createFromJson instead of waiting on a removal, so no ordering dependency between the two anymore.

}

@Deprecated
/** Still used by {@link #createFromJson}. */

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

createFromJson has been removed. We can remove this one. Ideally should have folded both together into the same change to tackle ClusterState API IMO.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checked — it has its own independent callers (BackupManager, DistributedClusterStateUpdater, ZkStateReader in production, plus 4 test files), unrelated to createFromJson. Can't remove it; createFromJson was just a thin wrapper over it.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looking at this, it's apparent the logic should be simplified to only get the list of replicas on this node for the collection the test cares about. No need for a Map; only a List. Could build in a single Stream.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Already resolved -- main picked this up via #4760 (unrelated SOLR-18382 cleanup), and I just merged main into this branch. Current code is exactly what you described: no Map, just clusterState.getCollection(collectionName).getReplicasOnNode(nodeName).

…te-createfromcollectionmap
Resolves a conflict from SOLR-18149's createFromJson removal (main) colliding
with this branch's un-deprecation of createFromCollectionMap: drops the now-dead
createFromJson method/comment, keeps createFromCollectionMap un-deprecated.
Also addresses dsmiley's review: simplifies ZkControllerTest's replicasOnNode
lookup from a Map built over every collection to a direct getCollection() call
for the one collection the test actually checks.
@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

Both addressed. Rebased on main (createFromJson is gone there per SOLR-18149/#4777, so dropped the now-dead method + the stale "Still used by createFromJson" comment). ZkControllerTest now does clusterState.getCollection(collectionName).getReplicasOnNode(nodeName) directly instead of building a Map over every collection -- ran testPublishAndWaitForDownStates locally, still passes.

@dsmileydsmiley left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@dsmileydsmiley changed the title SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode, un-deprecate createFromCollectionMapSOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNodeAug 25, 2026
epughand others added 4 commits August 25, 2026 16:54
…omcollectionmap' into SOLR-18381-un-deprecate-createfromcollectionmap
…te-createfromcollectionmap
# Conflicts:
#	solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
@epughepugh added this to the 10.x milestone Aug 31, 2026
@epughepugh self-assigned this Aug 31, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@serhiy-bzhezytskyy@epugh@dsmiley
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode - #4768

Open
serhiy-bzhezytskyy wants to merge 9 commits into
apache:mainfrom
serhiy-bzhezytskyy:SOLR-18381-un-deprecate-createfromcollectionmap
Open

SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode#4768
serhiy-bzhezytskyy wants to merge 9 commits into
apache:mainfrom
serhiy-bzhezytskyy:SOLR-18381-un-deprecate-createfromcollectionmap

Conversation

@serhiy-bzhezytskyy

@serhiy-bzhezytskyyserhiy-bzhezytskyy commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

https://issues.apache.org/jira/browse/SOLR-18381

Removes ClusterState.getReplicaNamesPerCollectionOnNode (0 callers left after migrating ZkController/ZkControllerTest to collectionStream() + getReplicasOnNode), and un-deprecates createFromCollectionMap instead of removing it as the title suggests -- it's still called from createFromJson (deprecated, tracked separately in the still-open SOLR-18149) plus two production call sites.

14 tests, 0 failures.

SOLR-18370 (local, not yet a PR) also touches ZkController.java, different region -- re-check once it opens a PR.

AI-assisted (Claude Sonnet 5)

…n-deprecate createFromCollectionMap
getReplicaNamesPerCollectionOnNode had 0 remaining callers after migrating
ZkController/ZkControllerTest to collectionStream() + getReplicasOnNode.
createFromCollectionMap is un-deprecated instead of removed, contrary to the
ticket's title: it's still called from createFromJson (deprecated, tracked
separately in the still-open SOLR-18149) plus two production call sites.
AI-assisted (Claude Sonnet 5)
Same shape as apache#4763/apache#4761 -- a narrow, single-purpose ClusterState
helper, no observable behavior change.
@epugh

Copy link
Copy Markdown
Contributor

I wonder if we wait till the fix for SOLR-18149 lands before merging this?

@epugh

Copy link
Copy Markdown
Contributor

also, for purely internal type changes with no change log, you can just add the label no-changelog ;-)

createFromJson's own deprecation is being resolved separately
(SOLR-18149) -- this comment shouldn't assume its status either way.
@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

I don't have permissions to add labels as an outside contributor -- could you add no-changelog if that's the route you'd prefer? Same applies to #4761.

@epugh

Copy link
Copy Markdown
Contributor

I don't have permissions to add labels as an outside contributor -- could you add no-changelog if that's the route you'd prefer? Same applies to #4761.

argh, that's annonying. also, feel free to just slap in a comment to that effect and I can do the bookeeping.

@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

Opened #4777 -- un-deprecates createFromJson instead of waiting on a removal, so no ordering dependency between the two anymore.

}

@Deprecated
/** Still used by {@link #createFromJson}. */

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

createFromJson has been removed. We can remove this one. Ideally should have folded both together into the same change to tackle ClusterState API IMO.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checked — it has its own independent callers (BackupManager, DistributedClusterStateUpdater, ZkStateReader in production, plus 4 test files), unrelated to createFromJson. Can't remove it; createFromJson was just a thin wrapper over it.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looking at this, it's apparent the logic should be simplified to only get the list of replicas on this node for the collection the test cares about. No need for a Map; only a List. Could build in a single Stream.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Already resolved -- main picked this up via #4760 (unrelated SOLR-18382 cleanup), and I just merged main into this branch. Current code is exactly what you described: no Map, just clusterState.getCollection(collectionName).getReplicasOnNode(nodeName).

…te-createfromcollectionmap
Resolves a conflict from SOLR-18149's createFromJson removal (main) colliding
with this branch's un-deprecation of createFromCollectionMap: drops the now-dead
createFromJson method/comment, keeps createFromCollectionMap un-deprecated.
Also addresses dsmiley's review: simplifies ZkControllerTest's replicasOnNode
lookup from a Map built over every collection to a direct getCollection() call
for the one collection the test actually checks.
@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

Both addressed. Rebased on main (createFromJson is gone there per SOLR-18149/#4777, so dropped the now-dead method + the stale "Still used by createFromJson" comment). ZkControllerTest now does clusterState.getCollection(collectionName).getReplicasOnNode(nodeName) directly instead of building a Map over every collection -- ran testPublishAndWaitForDownStates locally, still passes.

@dsmileydsmiley left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@dsmileydsmiley changed the title SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode, un-deprecate createFromCollectionMapSOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNodeAug 25, 2026
epughand others added 4 commits August 25, 2026 16:54
…omcollectionmap' into SOLR-18381-un-deprecate-createfromcollectionmap
…te-createfromcollectionmap
# Conflicts:
#	solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
@epughepugh added this to the 10.x milestone Aug 31, 2026
@epughepugh self-assigned this Aug 31, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@serhiy-bzhezytskyy@epugh@dsmiley
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode - #4768

Open
serhiy-bzhezytskyy wants to merge 9 commits into
apache:mainfrom
serhiy-bzhezytskyy:SOLR-18381-un-deprecate-createfromcollectionmap
Open

SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode#4768
serhiy-bzhezytskyy wants to merge 9 commits into
apache:mainfrom
serhiy-bzhezytskyy:SOLR-18381-un-deprecate-createfromcollectionmap

Conversation

@serhiy-bzhezytskyy

@serhiy-bzhezytskyyserhiy-bzhezytskyy commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

https://issues.apache.org/jira/browse/SOLR-18381

Removes ClusterState.getReplicaNamesPerCollectionOnNode (0 callers left after migrating ZkController/ZkControllerTest to collectionStream() + getReplicasOnNode), and un-deprecates createFromCollectionMap instead of removing it as the title suggests -- it's still called from createFromJson (deprecated, tracked separately in the still-open SOLR-18149) plus two production call sites.

14 tests, 0 failures.

SOLR-18370 (local, not yet a PR) also touches ZkController.java, different region -- re-check once it opens a PR.

AI-assisted (Claude Sonnet 5)

…n-deprecate createFromCollectionMap
getReplicaNamesPerCollectionOnNode had 0 remaining callers after migrating
ZkController/ZkControllerTest to collectionStream() + getReplicasOnNode.
createFromCollectionMap is un-deprecated instead of removed, contrary to the
ticket's title: it's still called from createFromJson (deprecated, tracked
separately in the still-open SOLR-18149) plus two production call sites.
AI-assisted (Claude Sonnet 5)
Same shape as apache#4763/apache#4761 -- a narrow, single-purpose ClusterState
helper, no observable behavior change.
@epugh

Copy link
Copy Markdown
Contributor

I wonder if we wait till the fix for SOLR-18149 lands before merging this?

@epugh

Copy link
Copy Markdown
Contributor

also, for purely internal type changes with no change log, you can just add the label no-changelog ;-)

createFromJson's own deprecation is being resolved separately
(SOLR-18149) -- this comment shouldn't assume its status either way.
@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

I don't have permissions to add labels as an outside contributor -- could you add no-changelog if that's the route you'd prefer? Same applies to #4761.

@epugh

Copy link
Copy Markdown
Contributor

I don't have permissions to add labels as an outside contributor -- could you add no-changelog if that's the route you'd prefer? Same applies to #4761.

argh, that's annonying. also, feel free to just slap in a comment to that effect and I can do the bookeeping.

@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

Opened #4777 -- un-deprecates createFromJson instead of waiting on a removal, so no ordering dependency between the two anymore.

}

@Deprecated
/** Still used by {@link #createFromJson}. */

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

createFromJson has been removed. We can remove this one. Ideally should have folded both together into the same change to tackle ClusterState API IMO.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checked — it has its own independent callers (BackupManager, DistributedClusterStateUpdater, ZkStateReader in production, plus 4 test files), unrelated to createFromJson. Can't remove it; createFromJson was just a thin wrapper over it.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looking at this, it's apparent the logic should be simplified to only get the list of replicas on this node for the collection the test cares about. No need for a Map; only a List. Could build in a single Stream.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Already resolved -- main picked this up via #4760 (unrelated SOLR-18382 cleanup), and I just merged main into this branch. Current code is exactly what you described: no Map, just clusterState.getCollection(collectionName).getReplicasOnNode(nodeName).

…te-createfromcollectionmap
Resolves a conflict from SOLR-18149's createFromJson removal (main) colliding
with this branch's un-deprecation of createFromCollectionMap: drops the now-dead
createFromJson method/comment, keeps createFromCollectionMap un-deprecated.
Also addresses dsmiley's review: simplifies ZkControllerTest's replicasOnNode
lookup from a Map built over every collection to a direct getCollection() call
for the one collection the test actually checks.
@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

Both addressed. Rebased on main (createFromJson is gone there per SOLR-18149/#4777, so dropped the now-dead method + the stale "Still used by createFromJson" comment). ZkControllerTest now does clusterState.getCollection(collectionName).getReplicasOnNode(nodeName) directly instead of building a Map over every collection -- ran testPublishAndWaitForDownStates locally, still passes.

@dsmileydsmiley left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@dsmileydsmiley changed the title SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode, un-deprecate createFromCollectionMapSOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNodeAug 25, 2026
epughand others added 4 commits August 25, 2026 16:54
…omcollectionmap' into SOLR-18381-un-deprecate-createfromcollectionmap
…te-createfromcollectionmap
# Conflicts:
#	solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
@epughepugh added this to the 10.x milestone Aug 31, 2026
@epughepugh self-assigned this Aug 31, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@serhiy-bzhezytskyy@epugh@dsmiley
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode - #4768

Open
serhiy-bzhezytskyy wants to merge 9 commits into
apache:mainfrom
serhiy-bzhezytskyy:SOLR-18381-un-deprecate-createfromcollectionmap
Open

SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode#4768
serhiy-bzhezytskyy wants to merge 9 commits into
apache:mainfrom
serhiy-bzhezytskyy:SOLR-18381-un-deprecate-createfromcollectionmap

Conversation

@serhiy-bzhezytskyy

@serhiy-bzhezytskyyserhiy-bzhezytskyy commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

https://issues.apache.org/jira/browse/SOLR-18381

Removes ClusterState.getReplicaNamesPerCollectionOnNode (0 callers left after migrating ZkController/ZkControllerTest to collectionStream() + getReplicasOnNode), and un-deprecates createFromCollectionMap instead of removing it as the title suggests -- it's still called from createFromJson (deprecated, tracked separately in the still-open SOLR-18149) plus two production call sites.

14 tests, 0 failures.

SOLR-18370 (local, not yet a PR) also touches ZkController.java, different region -- re-check once it opens a PR.

AI-assisted (Claude Sonnet 5)

…n-deprecate createFromCollectionMap
getReplicaNamesPerCollectionOnNode had 0 remaining callers after migrating
ZkController/ZkControllerTest to collectionStream() + getReplicasOnNode.
createFromCollectionMap is un-deprecated instead of removed, contrary to the
ticket's title: it's still called from createFromJson (deprecated, tracked
separately in the still-open SOLR-18149) plus two production call sites.
AI-assisted (Claude Sonnet 5)
Same shape as apache#4763/apache#4761 -- a narrow, single-purpose ClusterState
helper, no observable behavior change.
@epugh

Copy link
Copy Markdown
Contributor

I wonder if we wait till the fix for SOLR-18149 lands before merging this?

@epugh

Copy link
Copy Markdown
Contributor

also, for purely internal type changes with no change log, you can just add the label no-changelog ;-)

createFromJson's own deprecation is being resolved separately
(SOLR-18149) -- this comment shouldn't assume its status either way.
@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

I don't have permissions to add labels as an outside contributor -- could you add no-changelog if that's the route you'd prefer? Same applies to #4761.

@epugh

Copy link
Copy Markdown
Contributor

I don't have permissions to add labels as an outside contributor -- could you add no-changelog if that's the route you'd prefer? Same applies to #4761.

argh, that's annonying. also, feel free to just slap in a comment to that effect and I can do the bookeeping.

@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

Opened #4777 -- un-deprecates createFromJson instead of waiting on a removal, so no ordering dependency between the two anymore.

}

@Deprecated
/** Still used by {@link #createFromJson}. */

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

createFromJson has been removed. We can remove this one. Ideally should have folded both together into the same change to tackle ClusterState API IMO.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checked — it has its own independent callers (BackupManager, DistributedClusterStateUpdater, ZkStateReader in production, plus 4 test files), unrelated to createFromJson. Can't remove it; createFromJson was just a thin wrapper over it.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looking at this, it's apparent the logic should be simplified to only get the list of replicas on this node for the collection the test cares about. No need for a Map; only a List. Could build in a single Stream.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Already resolved -- main picked this up via #4760 (unrelated SOLR-18382 cleanup), and I just merged main into this branch. Current code is exactly what you described: no Map, just clusterState.getCollection(collectionName).getReplicasOnNode(nodeName).

…te-createfromcollectionmap
Resolves a conflict from SOLR-18149's createFromJson removal (main) colliding
with this branch's un-deprecation of createFromCollectionMap: drops the now-dead
createFromJson method/comment, keeps createFromCollectionMap un-deprecated.
Also addresses dsmiley's review: simplifies ZkControllerTest's replicasOnNode
lookup from a Map built over every collection to a direct getCollection() call
for the one collection the test actually checks.
@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

Both addressed. Rebased on main (createFromJson is gone there per SOLR-18149/#4777, so dropped the now-dead method + the stale "Still used by createFromJson" comment). ZkControllerTest now does clusterState.getCollection(collectionName).getReplicasOnNode(nodeName) directly instead of building a Map over every collection -- ran testPublishAndWaitForDownStates locally, still passes.

@dsmileydsmiley left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@dsmileydsmiley changed the title SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode, un-deprecate createFromCollectionMapSOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNodeAug 25, 2026
epughand others added 4 commits August 25, 2026 16:54
…omcollectionmap' into SOLR-18381-un-deprecate-createfromcollectionmap
…te-createfromcollectionmap
# Conflicts:
#	solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
@epughepugh added this to the 10.x milestone Aug 31, 2026
@epughepugh self-assigned this Aug 31, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@serhiy-bzhezytskyy@epugh@dsmiley
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode - #4768

Open
serhiy-bzhezytskyy wants to merge 9 commits into
apache:mainfrom
serhiy-bzhezytskyy:SOLR-18381-un-deprecate-createfromcollectionmap
Open

SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode#4768
serhiy-bzhezytskyy wants to merge 9 commits into
apache:mainfrom
serhiy-bzhezytskyy:SOLR-18381-un-deprecate-createfromcollectionmap

Conversation

@serhiy-bzhezytskyy

@serhiy-bzhezytskyyserhiy-bzhezytskyy commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

https://issues.apache.org/jira/browse/SOLR-18381

Removes ClusterState.getReplicaNamesPerCollectionOnNode (0 callers left after migrating ZkController/ZkControllerTest to collectionStream() + getReplicasOnNode), and un-deprecates createFromCollectionMap instead of removing it as the title suggests -- it's still called from createFromJson (deprecated, tracked separately in the still-open SOLR-18149) plus two production call sites.

14 tests, 0 failures.

SOLR-18370 (local, not yet a PR) also touches ZkController.java, different region -- re-check once it opens a PR.

AI-assisted (Claude Sonnet 5)

…n-deprecate createFromCollectionMap
getReplicaNamesPerCollectionOnNode had 0 remaining callers after migrating
ZkController/ZkControllerTest to collectionStream() + getReplicasOnNode.
createFromCollectionMap is un-deprecated instead of removed, contrary to the
ticket's title: it's still called from createFromJson (deprecated, tracked
separately in the still-open SOLR-18149) plus two production call sites.
AI-assisted (Claude Sonnet 5)
Same shape as apache#4763/apache#4761 -- a narrow, single-purpose ClusterState
helper, no observable behavior change.
@epugh

Copy link
Copy Markdown
Contributor

I wonder if we wait till the fix for SOLR-18149 lands before merging this?

@epugh

Copy link
Copy Markdown
Contributor

also, for purely internal type changes with no change log, you can just add the label no-changelog ;-)

createFromJson's own deprecation is being resolved separately
(SOLR-18149) -- this comment shouldn't assume its status either way.
@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

I don't have permissions to add labels as an outside contributor -- could you add no-changelog if that's the route you'd prefer? Same applies to #4761.

@epugh

Copy link
Copy Markdown
Contributor

I don't have permissions to add labels as an outside contributor -- could you add no-changelog if that's the route you'd prefer? Same applies to #4761.

argh, that's annonying. also, feel free to just slap in a comment to that effect and I can do the bookeeping.

@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

Opened #4777 -- un-deprecates createFromJson instead of waiting on a removal, so no ordering dependency between the two anymore.

}

@Deprecated
/** Still used by {@link #createFromJson}. */

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

createFromJson has been removed. We can remove this one. Ideally should have folded both together into the same change to tackle ClusterState API IMO.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checked — it has its own independent callers (BackupManager, DistributedClusterStateUpdater, ZkStateReader in production, plus 4 test files), unrelated to createFromJson. Can't remove it; createFromJson was just a thin wrapper over it.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looking at this, it's apparent the logic should be simplified to only get the list of replicas on this node for the collection the test cares about. No need for a Map; only a List. Could build in a single Stream.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Already resolved -- main picked this up via #4760 (unrelated SOLR-18382 cleanup), and I just merged main into this branch. Current code is exactly what you described: no Map, just clusterState.getCollection(collectionName).getReplicasOnNode(nodeName).

…te-createfromcollectionmap
Resolves a conflict from SOLR-18149's createFromJson removal (main) colliding
with this branch's un-deprecation of createFromCollectionMap: drops the now-dead
createFromJson method/comment, keeps createFromCollectionMap un-deprecated.
Also addresses dsmiley's review: simplifies ZkControllerTest's replicasOnNode
lookup from a Map built over every collection to a direct getCollection() call
for the one collection the test actually checks.
@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

Both addressed. Rebased on main (createFromJson is gone there per SOLR-18149/#4777, so dropped the now-dead method + the stale "Still used by createFromJson" comment). ZkControllerTest now does clusterState.getCollection(collectionName).getReplicasOnNode(nodeName) directly instead of building a Map over every collection -- ran testPublishAndWaitForDownStates locally, still passes.

@dsmileydsmiley left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@dsmileydsmiley changed the title SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode, un-deprecate createFromCollectionMapSOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNodeAug 25, 2026
epughand others added 4 commits August 25, 2026 16:54
…omcollectionmap' into SOLR-18381-un-deprecate-createfromcollectionmap
…te-createfromcollectionmap
# Conflicts:
#	solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
@epughepugh added this to the 10.x milestone Aug 31, 2026
@epughepugh self-assigned this Aug 31, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@serhiy-bzhezytskyy@epugh@dsmiley
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode - #4768

Open
serhiy-bzhezytskyy wants to merge 9 commits into
apache:mainfrom
serhiy-bzhezytskyy:SOLR-18381-un-deprecate-createfromcollectionmap
Open

SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode#4768
serhiy-bzhezytskyy wants to merge 9 commits into
apache:mainfrom
serhiy-bzhezytskyy:SOLR-18381-un-deprecate-createfromcollectionmap

Conversation

@serhiy-bzhezytskyy

@serhiy-bzhezytskyyserhiy-bzhezytskyy commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

https://issues.apache.org/jira/browse/SOLR-18381

Removes ClusterState.getReplicaNamesPerCollectionOnNode (0 callers left after migrating ZkController/ZkControllerTest to collectionStream() + getReplicasOnNode), and un-deprecates createFromCollectionMap instead of removing it as the title suggests -- it's still called from createFromJson (deprecated, tracked separately in the still-open SOLR-18149) plus two production call sites.

14 tests, 0 failures.

SOLR-18370 (local, not yet a PR) also touches ZkController.java, different region -- re-check once it opens a PR.

AI-assisted (Claude Sonnet 5)

…n-deprecate createFromCollectionMap
getReplicaNamesPerCollectionOnNode had 0 remaining callers after migrating
ZkController/ZkControllerTest to collectionStream() + getReplicasOnNode.
createFromCollectionMap is un-deprecated instead of removed, contrary to the
ticket's title: it's still called from createFromJson (deprecated, tracked
separately in the still-open SOLR-18149) plus two production call sites.
AI-assisted (Claude Sonnet 5)
Same shape as apache#4763/apache#4761 -- a narrow, single-purpose ClusterState
helper, no observable behavior change.
@epugh

Copy link
Copy Markdown
Contributor

I wonder if we wait till the fix for SOLR-18149 lands before merging this?

@epugh

Copy link
Copy Markdown
Contributor

also, for purely internal type changes with no change log, you can just add the label no-changelog ;-)

createFromJson's own deprecation is being resolved separately
(SOLR-18149) -- this comment shouldn't assume its status either way.
@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

I don't have permissions to add labels as an outside contributor -- could you add no-changelog if that's the route you'd prefer? Same applies to #4761.

@epugh

Copy link
Copy Markdown
Contributor

I don't have permissions to add labels as an outside contributor -- could you add no-changelog if that's the route you'd prefer? Same applies to #4761.

argh, that's annonying. also, feel free to just slap in a comment to that effect and I can do the bookeeping.

@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

Opened #4777 -- un-deprecates createFromJson instead of waiting on a removal, so no ordering dependency between the two anymore.

}

@Deprecated
/** Still used by {@link #createFromJson}. */

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

createFromJson has been removed. We can remove this one. Ideally should have folded both together into the same change to tackle ClusterState API IMO.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checked — it has its own independent callers (BackupManager, DistributedClusterStateUpdater, ZkStateReader in production, plus 4 test files), unrelated to createFromJson. Can't remove it; createFromJson was just a thin wrapper over it.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looking at this, it's apparent the logic should be simplified to only get the list of replicas on this node for the collection the test cares about. No need for a Map; only a List. Could build in a single Stream.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Already resolved -- main picked this up via #4760 (unrelated SOLR-18382 cleanup), and I just merged main into this branch. Current code is exactly what you described: no Map, just clusterState.getCollection(collectionName).getReplicasOnNode(nodeName).

…te-createfromcollectionmap
Resolves a conflict from SOLR-18149's createFromJson removal (main) colliding
with this branch's un-deprecation of createFromCollectionMap: drops the now-dead
createFromJson method/comment, keeps createFromCollectionMap un-deprecated.
Also addresses dsmiley's review: simplifies ZkControllerTest's replicasOnNode
lookup from a Map built over every collection to a direct getCollection() call
for the one collection the test actually checks.
@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

Both addressed. Rebased on main (createFromJson is gone there per SOLR-18149/#4777, so dropped the now-dead method + the stale "Still used by createFromJson" comment). ZkControllerTest now does clusterState.getCollection(collectionName).getReplicasOnNode(nodeName) directly instead of building a Map over every collection -- ran testPublishAndWaitForDownStates locally, still passes.

@dsmileydsmiley left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@dsmileydsmiley changed the title SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode, un-deprecate createFromCollectionMapSOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNodeAug 25, 2026
epughand others added 4 commits August 25, 2026 16:54
…omcollectionmap' into SOLR-18381-un-deprecate-createfromcollectionmap
…te-createfromcollectionmap
# Conflicts:
#	solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
@epughepugh added this to the 10.x milestone Aug 31, 2026
@epughepugh self-assigned this Aug 31, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@serhiy-bzhezytskyy@epugh@dsmiley
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode - #4768

Open
serhiy-bzhezytskyy wants to merge 9 commits into
apache:mainfrom
serhiy-bzhezytskyy:SOLR-18381-un-deprecate-createfromcollectionmap
Open

SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode#4768
serhiy-bzhezytskyy wants to merge 9 commits into
apache:mainfrom
serhiy-bzhezytskyy:SOLR-18381-un-deprecate-createfromcollectionmap

Conversation

@serhiy-bzhezytskyy

@serhiy-bzhezytskyyserhiy-bzhezytskyy commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

https://issues.apache.org/jira/browse/SOLR-18381

Removes ClusterState.getReplicaNamesPerCollectionOnNode (0 callers left after migrating ZkController/ZkControllerTest to collectionStream() + getReplicasOnNode), and un-deprecates createFromCollectionMap instead of removing it as the title suggests -- it's still called from createFromJson (deprecated, tracked separately in the still-open SOLR-18149) plus two production call sites.

14 tests, 0 failures.

SOLR-18370 (local, not yet a PR) also touches ZkController.java, different region -- re-check once it opens a PR.

AI-assisted (Claude Sonnet 5)

…n-deprecate createFromCollectionMap
getReplicaNamesPerCollectionOnNode had 0 remaining callers after migrating
ZkController/ZkControllerTest to collectionStream() + getReplicasOnNode.
createFromCollectionMap is un-deprecated instead of removed, contrary to the
ticket's title: it's still called from createFromJson (deprecated, tracked
separately in the still-open SOLR-18149) plus two production call sites.
AI-assisted (Claude Sonnet 5)
Same shape as apache#4763/apache#4761 -- a narrow, single-purpose ClusterState
helper, no observable behavior change.
@epugh

Copy link
Copy Markdown
Contributor

I wonder if we wait till the fix for SOLR-18149 lands before merging this?

@epugh

Copy link
Copy Markdown
Contributor

also, for purely internal type changes with no change log, you can just add the label no-changelog ;-)

createFromJson's own deprecation is being resolved separately
(SOLR-18149) -- this comment shouldn't assume its status either way.
@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

I don't have permissions to add labels as an outside contributor -- could you add no-changelog if that's the route you'd prefer? Same applies to #4761.

@epugh

Copy link
Copy Markdown
Contributor

I don't have permissions to add labels as an outside contributor -- could you add no-changelog if that's the route you'd prefer? Same applies to #4761.

argh, that's annonying. also, feel free to just slap in a comment to that effect and I can do the bookeeping.

@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

Opened #4777 -- un-deprecates createFromJson instead of waiting on a removal, so no ordering dependency between the two anymore.

}

@Deprecated
/** Still used by {@link #createFromJson}. */

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

createFromJson has been removed. We can remove this one. Ideally should have folded both together into the same change to tackle ClusterState API IMO.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checked — it has its own independent callers (BackupManager, DistributedClusterStateUpdater, ZkStateReader in production, plus 4 test files), unrelated to createFromJson. Can't remove it; createFromJson was just a thin wrapper over it.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looking at this, it's apparent the logic should be simplified to only get the list of replicas on this node for the collection the test cares about. No need for a Map; only a List. Could build in a single Stream.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Already resolved -- main picked this up via #4760 (unrelated SOLR-18382 cleanup), and I just merged main into this branch. Current code is exactly what you described: no Map, just clusterState.getCollection(collectionName).getReplicasOnNode(nodeName).

…te-createfromcollectionmap
Resolves a conflict from SOLR-18149's createFromJson removal (main) colliding
with this branch's un-deprecation of createFromCollectionMap: drops the now-dead
createFromJson method/comment, keeps createFromCollectionMap un-deprecated.
Also addresses dsmiley's review: simplifies ZkControllerTest's replicasOnNode
lookup from a Map built over every collection to a direct getCollection() call
for the one collection the test actually checks.
@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

Both addressed. Rebased on main (createFromJson is gone there per SOLR-18149/#4777, so dropped the now-dead method + the stale "Still used by createFromJson" comment). ZkControllerTest now does clusterState.getCollection(collectionName).getReplicasOnNode(nodeName) directly instead of building a Map over every collection -- ran testPublishAndWaitForDownStates locally, still passes.

@dsmileydsmiley left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@dsmileydsmiley changed the title SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode, un-deprecate createFromCollectionMapSOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNodeAug 25, 2026
epughand others added 4 commits August 25, 2026 16:54
…omcollectionmap' into SOLR-18381-un-deprecate-createfromcollectionmap
…te-createfromcollectionmap
# Conflicts:
#	solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
@epughepugh added this to the 10.x milestone Aug 31, 2026
@epughepugh self-assigned this Aug 31, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@serhiy-bzhezytskyy@epugh@dsmiley
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode - #4768

Open
serhiy-bzhezytskyy wants to merge 9 commits into
apache:mainfrom
serhiy-bzhezytskyy:SOLR-18381-un-deprecate-createfromcollectionmap
Open

SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode#4768
serhiy-bzhezytskyy wants to merge 9 commits into
apache:mainfrom
serhiy-bzhezytskyy:SOLR-18381-un-deprecate-createfromcollectionmap

Conversation

@serhiy-bzhezytskyy

@serhiy-bzhezytskyyserhiy-bzhezytskyy commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

https://issues.apache.org/jira/browse/SOLR-18381

Removes ClusterState.getReplicaNamesPerCollectionOnNode (0 callers left after migrating ZkController/ZkControllerTest to collectionStream() + getReplicasOnNode), and un-deprecates createFromCollectionMap instead of removing it as the title suggests -- it's still called from createFromJson (deprecated, tracked separately in the still-open SOLR-18149) plus two production call sites.

14 tests, 0 failures.

SOLR-18370 (local, not yet a PR) also touches ZkController.java, different region -- re-check once it opens a PR.

AI-assisted (Claude Sonnet 5)

…n-deprecate createFromCollectionMap
getReplicaNamesPerCollectionOnNode had 0 remaining callers after migrating
ZkController/ZkControllerTest to collectionStream() + getReplicasOnNode.
createFromCollectionMap is un-deprecated instead of removed, contrary to the
ticket's title: it's still called from createFromJson (deprecated, tracked
separately in the still-open SOLR-18149) plus two production call sites.
AI-assisted (Claude Sonnet 5)
Same shape as apache#4763/apache#4761 -- a narrow, single-purpose ClusterState
helper, no observable behavior change.
@epugh

Copy link
Copy Markdown
Contributor

I wonder if we wait till the fix for SOLR-18149 lands before merging this?

@epugh

Copy link
Copy Markdown
Contributor

also, for purely internal type changes with no change log, you can just add the label no-changelog ;-)

createFromJson's own deprecation is being resolved separately
(SOLR-18149) -- this comment shouldn't assume its status either way.
@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

I don't have permissions to add labels as an outside contributor -- could you add no-changelog if that's the route you'd prefer? Same applies to #4761.

@epugh

Copy link
Copy Markdown
Contributor

I don't have permissions to add labels as an outside contributor -- could you add no-changelog if that's the route you'd prefer? Same applies to #4761.

argh, that's annonying. also, feel free to just slap in a comment to that effect and I can do the bookeeping.

@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

Opened #4777 -- un-deprecates createFromJson instead of waiting on a removal, so no ordering dependency between the two anymore.

}

@Deprecated
/** Still used by {@link #createFromJson}. */

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

createFromJson has been removed. We can remove this one. Ideally should have folded both together into the same change to tackle ClusterState API IMO.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checked — it has its own independent callers (BackupManager, DistributedClusterStateUpdater, ZkStateReader in production, plus 4 test files), unrelated to createFromJson. Can't remove it; createFromJson was just a thin wrapper over it.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looking at this, it's apparent the logic should be simplified to only get the list of replicas on this node for the collection the test cares about. No need for a Map; only a List. Could build in a single Stream.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Already resolved -- main picked this up via #4760 (unrelated SOLR-18382 cleanup), and I just merged main into this branch. Current code is exactly what you described: no Map, just clusterState.getCollection(collectionName).getReplicasOnNode(nodeName).

…te-createfromcollectionmap
Resolves a conflict from SOLR-18149's createFromJson removal (main) colliding
with this branch's un-deprecation of createFromCollectionMap: drops the now-dead
createFromJson method/comment, keeps createFromCollectionMap un-deprecated.
Also addresses dsmiley's review: simplifies ZkControllerTest's replicasOnNode
lookup from a Map built over every collection to a direct getCollection() call
for the one collection the test actually checks.
@serhiy-bzhezytskyy

Copy link
Copy Markdown
ContributorAuthor

Both addressed. Rebased on main (createFromJson is gone there per SOLR-18149/#4777, so dropped the now-dead method + the stale "Still used by createFromJson" comment). ZkControllerTest now does clusterState.getCollection(collectionName).getReplicasOnNode(nodeName) directly instead of building a Map over every collection -- ran testPublishAndWaitForDownStates locally, still passes.

@dsmileydsmiley left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@dsmileydsmiley changed the title SOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNode, un-deprecate createFromCollectionMapSOLR-18381: remove ClusterState.getReplicaNamesPerCollectionOnNodeAug 25, 2026
epughand others added 4 commits August 25, 2026 16:54
…omcollectionmap' into SOLR-18381-un-deprecate-createfromcollectionmap
…te-createfromcollectionmap
# Conflicts:
#	solr/solrj/src/java/org/apache/solr/common/cloud/ClusterState.java
@epughepugh added this to the 10.x milestone Aug 31, 2026
@epughepugh self-assigned this Aug 31, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@serhiy-bzhezytskyy@epugh@dsmiley