cpoerschke commented on code in PR #2159:
URL: https://github.com/apache/lucene-solr/pull/2159#discussion_r951673228
##########
solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java:
##########
@@ -355,8 +370,9 @@ void processGetInputDocument(ResponseBuilder rb) throws
IOException {
String idStr = params.get("getInputDocument", null);
if (idStr == null) return;
+ BytesRef idBytes = req.getSchema().indexableUniqueKey(idStr);
AtomicLong version = new AtomicLong();
- SolrInputDocument doc = getInputDocument(req.getCore(), new
BytesRef(idStr), version, null, Resolution.DOC);
+ SolrInputDocument doc = getInputDocument(req.getCore(), idBytes, idBytes,
version, null, Resolution.ROOT_WITH_CHILDREN);
Review Comment:
Wondering about `req.getSchema()` vs. `req.getCore().getLatestSchema()` here
- https://github.com/apache/solr/pull/980 opened to explore further.
##########
solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java:
##########
@@ -257,30 +264,37 @@ public void process(ResponseBuilder rb) throws IOException
if (mustUseRealtimeSearcher) {
// close handles to current searchers & result context
- searcherInfo.clear();
- resultContext = null;
- ulog.openRealtimeSearcher(); // force open a new realtime
searcher
+ if (!opennedRealtimeSearcher) {
+ searcherInfo.clear();
+ resultContext = null;
+ ulog.openRealtimeSearcher(); // force open a new realtime
searcher
+ opennedRealtimeSearcher = true;
+ }
o = null; // pretend we never found this record and fall
through to use the searcher
break;
}
SolrDocument doc;
if (oper == UpdateLog.ADD) {
doc = toSolrDoc((SolrInputDocument)entry.get(entry.size()-1),
core.getLatestSchema());
+ // toSolrDoc filtered copy-field targets already
+ if (transformer!=null) {
+ transformer.transform(doc, -1); // unknown docID
+ }
} else if (oper == UpdateLog.UPDATE_INPLACE) {
assert entry.size() == 5;
// For in-place update case, we have obtained the partial
document till now. We need to
// resolve it to a full document to be returned to the user.
- doc = resolveFullDocument(core, idBytes.get(),
rsp.getReturnFields(), (SolrInputDocument)entry.get(entry.size()-1), entry,
null);
+ // resolveFullDocument applies the transformer, if present.
+ doc = resolveFullDocument(core, idBytes.get(),
rsp.getReturnFields(), (SolrInputDocument)entry.get(entry.size()-1), entry);
if (doc == null) {
break; // document has been deleted as the resolve was
going on
}
+ doc.visitSelfAndNestedDocs((label, d) ->
removeCopyFieldTargets(d, req.getSchema()));
Review Comment:
Wondering about `req.getSchema()` vs. `core.getLatestSchema()` here -
https://github.com/apache/solr/pull/980 opened to explore further.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]