Ivan Saric created SOLR-18612:
---------------------------------

             Summary: Instantiate SimpleOrderedMap instead of NamedList where 
keys do not repeat (SIP-22 step 5)
                 Key: SOLR-18612
                 URL: https://issues.apache.org/jira/browse/SOLR-18612
             Project: Solr
          Issue Type: Improvement
          Components: search, SolrJ
            Reporter: Ivan Saric


This is step 5 of [SIP-22: NamedList 
Reduction|https://cwiki.apache.org/confluence/spaces/SOLR/pages/340036504/SIP-22+NamedList+Reduction]:

{quote}Change NamedList instantiations to SimpleOrderedMap as appropriate; 
probably many places. This is Solr 10 only; it can affect backwards 
compatibility. One Jira & PR(s); don't combine with anything else.{quote}

Step 4 (SOLR-18603) seals the hierarchy. As agreed on the dev list ([Follow-up 
work after 
SOLR-17600|https://lists.apache.org/thread/2o09q8yjmsx4l9b58mqqk5mgdbv7qf36]), 
"Solr 10" now means Solr 11 ({{main}}).

h3. Scope

* Instantiation sites only: {{new NamedList(...)}} becomes {{new 
SimpleOrderedMap(...)}} where the keys provably never repeat. On {{main}} today 
there are 217 such sites in main sources (75 files in {{solr/core}}, 13 in 
{{solr/solrj}}, 7 across {{solrj-streaming}}, {{test-framework}}, {{benchmark}} 
and {{solr/modules/*}}).
* No public method signature changes (NamedList stays in signatures; that is 
SIP-22 step 7).
* Tests are out of scope for the first pass (268 further sites in test sources).
* Sites that rely on repeated keys stay {{NamedList}}: e.g. {{json.nl}} 
handling, facet structures, {{lst}} config parsing. Where that is not obvious 
from the code, the PR says why.
* Excluded: {{SolrQueryResponse}} and the response header, which SOLR-18398 
migrates to {{LinkedHashMap}} closer to the 11.0 release.

h3. Compatibility

* JSON: {{JSONWriter}} writes a {{SimpleOrderedMap}} as a JSON object 
regardless of {{json.nl}}, while a {{NamedList}} follows {{json.nl}} (default 
{{flat}}). So changing a NamedList that reaches a response changes that part of 
the JSON output for clients not using {{json.nl=map}}. Such sites are handled 
deliberately and listed in the upgrade notes; this is the compatibility impact 
the SIP anticipates for this step.
* javabin: a {{SimpleOrderedMap}} is written with its own tag and decoded by 
SolrJ as a {{SimpleOrderedMap}}, which is still a {{NamedList}}, so existing 
SolrJ casts keep working. Note that {{solr.solrj.javabin.readMapAsNamedList}} 
(SOLR-17635) still defaults to {{false}} on {{main}}.
* Java serialization: SOLR-18196 reported {{ObjectOutputStream}} problems once 
{{SimpleOrderedMap}} implemented {{Map}}; tests were added in 10.1, the ticket 
is still open. More SimpleOrderedMap instances widen what that affects.

h3. Deliverable

One Jira, several PRs split by module so each is independently reviewable, as 
with SOLR-17600: {{solr/solrj}} first (smallest, most visible to clients), then 
{{solr/core}} (possibly split by package), then the remaining modules. Each PR 
carries its own changelog entry under this key, and the upgrade note is 
extended as JSON-visible sites are changed.




--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to