This is an automated email from the ASF dual-hosted git repository.
dsmiley pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/main by this push:
new 812408433c6 SOLR-18350: Live schema changes could disrupt requests in
progress (#4817)
812408433c6 is described below
commit 812408433c661cf61c9b6d2784787304e39907bf
Author: NextBrickINC.com <[email protected]>
AuthorDate: Thu Aug 27 21:41:36 2026 -0700
SOLR-18350: Live schema changes could disrupt requests in progress (#4817)
At least theoretically.
Co-authored-by: rayshrey <[email protected]>
---
changelog/unreleased/solr-18350-stable-schema.yml | 8 +++++
.../src/java/org/apache/solr/core/SolrCore.java | 9 +++++-
.../org/apache/solr/handler/SchemaHandler.java | 34 +++++++++-------------
.../handler/component/RealTimeGetComponent.java | 16 +++++-----
.../java/org/apache/solr/request/SimpleFacets.java | 2 +-
.../solr/search/PayloadCheckQParserPlugin.java | 2 +-
.../solr/search/PayloadScoreQParserPlugin.java | 4 +--
.../org/apache/solr/search/ValueSourceParser.java | 2 +-
.../org/apache/solr/search/vector/KnnQParser.java | 2 +-
.../search/vector/VectorSimilarityQParser.java | 2 +-
.../processor/ContentHashVersionProcessor.java | 2 +-
.../DocBasedVersionConstraintsProcessor.java | 6 ++--
.../update/processor/TolerantUpdateProcessor.java | 2 +-
.../processor/ContentHashVersionProcessorTest.java | 2 +-
.../search/TextToVectorQParserPlugin.java | 3 +-
.../DocumentEnrichmentUpdateProcessorFactory.java | 6 ++--
.../TextToVectorUpdateProcessorFactory.java | 6 ++--
17 files changed, 56 insertions(+), 52 deletions(-)
diff --git a/changelog/unreleased/solr-18350-stable-schema.yml
b/changelog/unreleased/solr-18350-stable-schema.yml
new file mode 100644
index 00000000000..c496b588399
--- /dev/null
+++ b/changelog/unreleased/solr-18350-stable-schema.yml
@@ -0,0 +1,8 @@
+title: Keep request processing and searches on a stable schema snapshot when
the schema changes concurrently
+type: fixed
+authors:
+ - name: Shrey Narayan
+ nick: NextbrickInc
+links:
+ - name: SOLR-18350
+ url: https://issues.apache.org/jira/browse/SOLR-18350
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCore.java
b/solr/core/src/java/org/apache/solr/core/SolrCore.java
index c9efc7c98a5..7a5b6995a26 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -335,7 +335,14 @@ public class SolrCore implements SolrInfoBean, Closeable {
}
/**
- * @return the latest snapshot of the schema used by this core instance.
+ * Returns the latest snapshot of the schema used by this core instance.
+ *
+ * <p>Request processing code should normally use {@link
SolrQueryRequest#getSchema()} so that the
+ * schema remains stable for the lifetime of the request. Code operating on
a {@link
+ * SolrIndexSearcher} should normally use {@link
SolrIndexSearcher#getSchema()} so that the schema
+ * matches the searcher.
+ *
+ * @return the latest schema snapshot
* @see #setLatestSchema
*/
public IndexSchema getLatestSchema() {
diff --git a/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
b/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
index bf2ef121c31..8bc108c59c6 100644
--- a/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
@@ -151,42 +151,38 @@ public class SchemaHandler extends RequestHandlerBase
case "/schema":
{
V2ApiUtils.squashIntoSolrResponseWithoutHeader(
- rsp, new GetSchema(req.getCore(),
req.getCore().getLatestSchema()).getSchemaInfo());
+ rsp, new GetSchema(req.getCore(),
req.getSchema()).getSchemaInfo());
break;
}
case "/schema/version":
{
V2ApiUtils.squashIntoSolrResponseWithoutHeader(
- rsp,
- new GetSchema(req.getCore(),
req.getCore().getLatestSchema()).getSchemaVersion());
+ rsp, new GetSchema(req.getCore(),
req.getSchema()).getSchemaVersion());
break;
}
case "/schema/uniquekey":
{
V2ApiUtils.squashIntoSolrResponseWithoutHeader(
- rsp,
- new GetSchema(req.getCore(),
req.getCore().getLatestSchema()).getSchemaUniqueKey());
+ rsp, new GetSchema(req.getCore(),
req.getSchema()).getSchemaUniqueKey());
break;
}
case "/schema/similarity":
{
V2ApiUtils.squashIntoSolrResponseWithoutHeader(
- rsp,
- new GetSchema(req.getCore(), req.getCore().getLatestSchema())
- .getSchemaSimilarity());
+ rsp, new GetSchema(req.getCore(),
req.getSchema()).getSchemaSimilarity());
break;
}
case "/schema/name":
{
V2ApiUtils.squashIntoSolrResponseWithoutHeader(
- rsp, new GetSchema(req.getCore(),
req.getCore().getLatestSchema()).getSchemaName());
+ rsp, new GetSchema(req.getCore(),
req.getSchema()).getSchemaName());
break;
}
case "/schema/zkversion":
{
V2ApiUtils.squashIntoSolrResponseWithoutHeader(
rsp,
- new GetSchema(req.getCore(), req.getCore().getLatestSchema())
+ new GetSchema(req.getCore(), req.getSchema())
.getSchemaZkVersion(req.getParams().getInt("refreshIfBelowVersion", -1)));
break;
}
@@ -208,22 +204,19 @@ public class SchemaHandler extends RequestHandlerBase
if (parts.size() > 2) {
V2ApiUtils.squashIntoSolrResponseWithoutHeader(
rsp,
- new GetSchemaField(req.getCore().getLatestSchema(),
req.getParams())
+ new GetSchemaField(req.getSchema(), req.getParams())
.getFieldInfo(parts.get(2)));
} else {
V2ApiUtils.squashIntoSolrResponseWithoutHeader(
rsp,
- new GetSchemaField(req.getCore().getLatestSchema(),
req.getParams())
- .listSchemaFields());
+ new GetSchemaField(req.getSchema(),
req.getParams()).listSchemaFields());
}
return;
}
case "copyfields":
{
V2ApiUtils.squashIntoSolrResponseWithoutHeader(
- rsp,
- new GetSchemaField(req.getCore().getLatestSchema(),
req.getParams())
- .listCopyFields());
+ rsp, new GetSchemaField(req.getSchema(),
req.getParams()).listCopyFields());
return;
}
case "dynamicfields":
@@ -231,13 +224,12 @@ public class SchemaHandler extends RequestHandlerBase
if (parts.size() > 2) {
V2ApiUtils.squashIntoSolrResponseWithoutHeader(
rsp,
- new GetSchemaField(req.getCore().getLatestSchema(),
req.getParams())
+ new GetSchemaField(req.getSchema(), req.getParams())
.getDynamicFieldInfo(parts.get(2)));
} else {
V2ApiUtils.squashIntoSolrResponseWithoutHeader(
rsp,
- new GetSchemaField(req.getCore().getLatestSchema(),
req.getParams())
- .listDynamicFields());
+ new GetSchemaField(req.getSchema(),
req.getParams()).listDynamicFields());
}
return;
}
@@ -246,12 +238,12 @@ public class SchemaHandler extends RequestHandlerBase
if (parts.size() > 2) {
V2ApiUtils.squashIntoSolrResponseWithoutHeader(
rsp,
- new GetSchemaField(req.getCore().getLatestSchema(),
req.getParams())
+ new GetSchemaField(req.getSchema(), req.getParams())
.getFieldTypeInfo(parts.get(2)));
} else {
V2ApiUtils.squashIntoSolrResponseWithoutHeader(
rsp,
- new GetSchemaField(req.getCore().getLatestSchema(),
req.getParams())
+ new GetSchemaField(req.getSchema(), req.getParams())
.listSchemaFieldTypes());
}
return;
diff --git
a/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
b/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
index e08fe5d3ee4..d251a7bfe4d 100644
---
a/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
+++
b/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
@@ -218,7 +218,7 @@ public class RealTimeGetComponent extends SearchComponent {
}
final SolrCore core = req.getCore();
- SchemaField idField = core.getLatestSchema().getUniqueKeyField();
+ SchemaField idField = req.getSchema().getUniqueKeyField();
FieldType fieldType = idField.getType();
SolrDocumentList docList = new SolrDocumentList();
@@ -275,9 +275,7 @@ public class RealTimeGetComponent extends SearchComponent {
SolrDocument doc;
if (oper == UpdateLog.ADD) {
- doc =
- toSolrDoc(
- (SolrInputDocument) entry.get(entry.size() - 1),
core.getLatestSchema());
+ doc = toSolrDoc((SolrInputDocument) entry.get(entry.size() -
1), req.getSchema());
// toSolrDoc filtered copy-field targets already
if (transformer != null) {
transformer.transform(doc, -1, DocIterationInfo.NONE); //
unknown docID
@@ -351,7 +349,7 @@ public class RealTimeGetComponent extends SearchComponent {
SolrDocumentFetcher docFetcher =
searcherInfo.getSearcher().getDocFetcher();
Document luceneDocument =
docFetcher.doc(docid, rsp.getReturnFields().getLuceneFieldNames());
- SolrDocument doc = toSolrDoc(luceneDocument, core.getLatestSchema());
+ SolrDocument doc = toSolrDoc(luceneDocument,
searcherInfo.getSearcher().getSchema());
if (reuseDvIters == null) {
reuseDvIters = new
DocValuesIteratorCache(searcherInfo.getSearcher());
}
@@ -562,7 +560,7 @@ public class RealTimeGetComponent extends SearchComponent {
try {
// now fetch last document from index, and merge partialDoc on top of it
SolrIndexSearcher searcher = searcherHolder.get();
- SchemaField idField = core.getLatestSchema().getUniqueKeyField();
+ SchemaField idField = searcher.getSchema().getUniqueKeyField();
Term idTerm = new Term(idField.getName(), idBytes);
int docid = searcher.getFirstMatch(idTerm);
@@ -784,12 +782,12 @@ public class RealTimeGetComponent extends SearchComponent
{
int docId =
searcher.getFirstMatch(
new Term(
- core.getLatestSchema().getUniqueKeyField().getName(),
+ searcher.getSchema().getUniqueKeyField().getName(),
resolveStrategy == Resolution.ROOT_WITH_CHILDREN ?
rootIdBytes : idBytes));
if (docId < 0) return null;
if (resolveStrategy == Resolution.ROOT_WITH_CHILDREN
- && core.getLatestSchema().isUsableForChildDocs()) {
+ && searcher.getSchema().isUsableForChildDocs()) {
// check that this doc is in fact a root document as a prevention
measure
if (!hasRootTerm(searcher, rootIdBytes)) {
throw new SolrException(
@@ -800,7 +798,7 @@ public class RealTimeGetComponent extends SearchComponent {
SolrDocument solrDoc =
fetchSolrDoc(searcher, docId, makeReturnFields(core,
onlyTheseFields, resolveStrategy));
- sid = toSolrInputDocument(solrDoc, core.getLatestSchema()); // filters
copy-field targets
+ sid = toSolrInputDocument(solrDoc, searcher.getSchema()); // filters
copy-field targets
// the assertions above furthermore guarantee the result corresponds
to idBytes
} finally {
searcherHolder.decref();
diff --git a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
index 92bb0dc2e60..284cfb45f2b 100644
--- a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
+++ b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
@@ -1318,7 +1318,7 @@ public class SimpleFacets {
final ParsedParams parsed = parseParams(FacetParams.FACET_INTERVAL,
field);
String[] intervalStrs =
parsed.required.getFieldParams(parsed.facetValue,
FacetParams.FACET_INTERVAL_SET);
- SchemaField schemaField =
searcher.getCore().getLatestSchema().getField(parsed.facetValue);
+ SchemaField schemaField =
searcher.getSchema().getField(parsed.facetValue);
if (parsed.params.getBool(GroupParams.GROUP_FACET, false)) {
throw new SolrException(
SolrException.ErrorCode.BAD_REQUEST,
diff --git
a/solr/core/src/java/org/apache/solr/search/PayloadCheckQParserPlugin.java
b/solr/core/src/java/org/apache/solr/search/PayloadCheckQParserPlugin.java
index fb802a52d56..e5c59090188 100644
--- a/solr/core/src/java/org/apache/solr/search/PayloadCheckQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/PayloadCheckQParserPlugin.java
@@ -77,7 +77,7 @@ public class PayloadCheckQParserPlugin extends QParserPlugin {
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
"'payloads' not specified");
}
- FieldType ft = req.getCore().getLatestSchema().getFieldType(field);
+ FieldType ft = req.getSchema().getFieldType(field);
Analyzer analyzer = ft.getQueryAnalyzer();
SpanQuery query = null;
try {
diff --git
a/solr/core/src/java/org/apache/solr/search/PayloadScoreQParserPlugin.java
b/solr/core/src/java/org/apache/solr/search/PayloadScoreQParserPlugin.java
index c26853933cb..89566fdc8f7 100644
--- a/solr/core/src/java/org/apache/solr/search/PayloadScoreQParserPlugin.java
+++ b/solr/core/src/java/org/apache/solr/search/PayloadScoreQParserPlugin.java
@@ -69,7 +69,7 @@ public class PayloadScoreQParserPlugin extends QParserPlugin {
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "query
string missing");
}
- FieldType ft = req.getCore().getLatestSchema().getFieldType(field);
+ FieldType ft = req.getSchema().getFieldType(field);
Analyzer analyzer = ft.getQueryAnalyzer();
SpanQuery query;
try {
@@ -87,7 +87,7 @@ public class PayloadScoreQParserPlugin extends QParserPlugin {
PayloadFunction payloadFunction =
PayloadUtils.getPayloadFunction(func);
if (payloadFunction == null) throw new SyntaxError("Unknown payload
function: " + func);
- PayloadDecoder payloadDecoder =
req.getCore().getLatestSchema().getPayloadDecoder(field);
+ PayloadDecoder payloadDecoder =
req.getSchema().getPayloadDecoder(field);
return new PayloadScoreQuery(query, payloadFunction, payloadDecoder,
includeSpanScore);
}
};
diff --git a/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java
b/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java
index ba71d147fc5..619bdc2b8ee 100644
--- a/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java
+++ b/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java
@@ -870,7 +870,7 @@ public abstract class ValueSourceParser implements
NamedListInitializedPlugin {
SolrException.ErrorCode.BAD_REQUEST, "Invalid payload
function: " + func);
}
- IndexSchema schema = fp.getReq().getCore().getLatestSchema();
+ IndexSchema schema = fp.getReq().getSchema();
PayloadDecoder decoder = schema.getPayloadDecoder(tinfo.field);
if (decoder == null) {
diff --git a/solr/core/src/java/org/apache/solr/search/vector/KnnQParser.java
b/solr/core/src/java/org/apache/solr/search/vector/KnnQParser.java
index d376bfa5a40..eb533582769 100644
--- a/solr/core/src/java/org/apache/solr/search/vector/KnnQParser.java
+++ b/solr/core/src/java/org/apache/solr/search/vector/KnnQParser.java
@@ -117,7 +117,7 @@ public class KnnQParser extends AbstractVectorQParserBase {
@Override
public Query parse() throws SyntaxError {
final String vectorField = getFieldName();
- final SchemaField schemaField =
req.getCore().getLatestSchema().getField(getFieldName());
+ final SchemaField schemaField = req.getSchema().getField(getFieldName());
final DenseVectorField denseVectorType = getCheckedFieldType(schemaField);
if
(DenseVectorField.FLAT_ALGORITHM.equals(denseVectorType.getKnnAlgorithm())) {
diff --git
a/solr/core/src/java/org/apache/solr/search/vector/VectorSimilarityQParser.java
b/solr/core/src/java/org/apache/solr/search/vector/VectorSimilarityQParser.java
index a88d1dfb306..17279d2d1a5 100644
---
a/solr/core/src/java/org/apache/solr/search/vector/VectorSimilarityQParser.java
+++
b/solr/core/src/java/org/apache/solr/search/vector/VectorSimilarityQParser.java
@@ -44,7 +44,7 @@ public class VectorSimilarityQParser extends
AbstractVectorQParserBase {
@Override
public Query parse() throws SyntaxError {
final String fieldName = getFieldName();
- final SchemaField schemaField =
req.getCore().getLatestSchema().getField(fieldName);
+ final SchemaField schemaField = req.getSchema().getField(fieldName);
final DenseVectorField denseVectorType = getCheckedFieldType(schemaField);
if
(DenseVectorField.FLAT_ALGORITHM.equals(denseVectorType.getKnnAlgorithm())) {
diff --git
a/solr/core/src/java/org/apache/solr/update/processor/ContentHashVersionProcessor.java
b/solr/core/src/java/org/apache/solr/update/processor/ContentHashVersionProcessor.java
index ec59596ab8a..8063b59a824 100644
---
a/solr/core/src/java/org/apache/solr/update/processor/ContentHashVersionProcessor.java
+++
b/solr/core/src/java/org/apache/solr/update/processor/ContentHashVersionProcessor.java
@@ -78,7 +78,7 @@ public class ContentHashVersionProcessor extends
UpdateRequestProcessor {
super(next);
this.core = req.getCore();
- IndexSchema schema = core.getLatestSchema();
+ IndexSchema schema = req.getSchema();
this.hashField = schema.getField(hashFieldName);
this.dropSameDocuments = dropSameDocuments;
this.rsp = rsp;
diff --git
a/solr/core/src/java/org/apache/solr/update/processor/DocBasedVersionConstraintsProcessor.java
b/solr/core/src/java/org/apache/solr/update/processor/DocBasedVersionConstraintsProcessor.java
index 48ecc0f7eed..cbec1472649 100644
---
a/solr/core/src/java/org/apache/solr/update/processor/DocBasedVersionConstraintsProcessor.java
+++
b/solr/core/src/java/org/apache/solr/update/processor/DocBasedVersionConstraintsProcessor.java
@@ -86,7 +86,7 @@ public class DocBasedVersionConstraintsProcessor extends
UpdateRequestProcessor
this.supportMissingVersionOnOldDocs = supportMissingVersionOnOldDocs;
this.core = req.getCore();
this.versionFieldNames = versionFields.toArray(EMPTY_STR_ARR);
- IndexSchema schema = core.getLatestSchema();
+ IndexSchema schema = req.getSchema();
userVersionFields = new SchemaField[versionFieldNames.length];
for (int i = 0; i < versionFieldNames.length; i++) {
userVersionFields[i] = schema.getField(versionFieldNames[i]);
@@ -469,7 +469,7 @@ public class DocBasedVersionConstraintsProcessor extends
UpdateRequestProcessor
SolrInputDocument newDoc =
createTombstoneDocument(
- core.getLatestSchema(),
+ cmd.getReq().getSchema(),
cmd.getId(),
versionFieldNames,
deleteParamValues,
@@ -500,7 +500,7 @@ public class DocBasedVersionConstraintsProcessor extends
UpdateRequestProcessor
SolrInputDocument newDoc =
createTombstoneDocument(
- core.getLatestSchema(),
+ cmd.getReq().getSchema(),
cmd.getId(),
versionFieldNames,
deleteParamValues,
diff --git
a/solr/core/src/java/org/apache/solr/update/processor/TolerantUpdateProcessor.java
b/solr/core/src/java/org/apache/solr/update/processor/TolerantUpdateProcessor.java
index 1ee9592bb5d..d79df5cc848 100644
---
a/solr/core/src/java/org/apache/solr/update/processor/TolerantUpdateProcessor.java
+++
b/solr/core/src/java/org/apache/solr/update/processor/TolerantUpdateProcessor.java
@@ -129,7 +129,7 @@ public class TolerantUpdateProcessor extends
UpdateRequestProcessor {
assert !DistribPhase.FROMLEADER.equals(distribPhase);
this.zkController = this.req.getCoreContainer().getZkController();
- this.uniqueKeyField =
this.req.getCore().getLatestSchema().getUniqueKeyField();
+ this.uniqueKeyField = this.req.getSchema().getUniqueKeyField();
assert null != uniqueKeyField : "Factory didn't enforce uniqueKey field?";
}
diff --git
a/solr/core/src/test/org/apache/solr/update/processor/ContentHashVersionProcessorTest.java
b/solr/core/src/test/org/apache/solr/update/processor/ContentHashVersionProcessorTest.java
index 4a3764ed6a7..65cf6287fc2 100644
---
a/solr/core/src/test/org/apache/solr/update/processor/ContentHashVersionProcessorTest.java
+++
b/solr/core/src/test/org/apache/solr/update/processor/ContentHashVersionProcessorTest.java
@@ -96,8 +96,8 @@ public class ContentHashVersionProcessorTest extends
UpdateProcessorTestBase {
final IndexSchema indexSchema = mock(IndexSchema.class);
when(indexSchema.getField("_hash_")).thenReturn(new SchemaField("_hash_",
new BinaryField()));
- when(solrCore.getLatestSchema()).thenReturn(indexSchema);
when(req.getCore()).thenReturn(solrCore);
+ when(req.getSchema()).thenReturn(indexSchema);
return new ContentHashVersionProcessor(
ContentHashVersionProcessorFactory.buildFieldMatcher(includedFields),
ContentHashVersionProcessorFactory.buildFieldMatcher(excludedFields),
diff --git
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/search/TextToVectorQParserPlugin.java
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/search/TextToVectorQParserPlugin.java
index 01d7b0c0554..1ca96d57e2c 100644
---
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/search/TextToVectorQParserPlugin.java
+++
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/search/TextToVectorQParserPlugin.java
@@ -78,8 +78,7 @@ public class TextToVectorQParserPlugin extends QParserPlugin
private void checkVectorEncoding() {
final VectorEncoding vectorEncoding =
-
getCheckedFieldType(req.getCore().getLatestSchema().getField(getFieldName()))
- .getVectorEncoding();
+
getCheckedFieldType(req.getSchema().getField(getFieldName())).getVectorEncoding();
if (vectorEncoding != VectorEncoding.FLOAT32) {
throw new SolrException(
diff --git
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/update/processor/factory/DocumentEnrichmentUpdateProcessorFactory.java
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/update/processor/factory/DocumentEnrichmentUpdateProcessorFactory.java
index c1c514b4de7..f1f554f2ab4 100644
---
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/update/processor/factory/DocumentEnrichmentUpdateProcessorFactory.java
+++
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/update/processor/factory/DocumentEnrichmentUpdateProcessorFactory.java
@@ -185,16 +185,16 @@ public class DocumentEnrichmentUpdateProcessorFactory
extends UpdateRequestProce
@Override
public UpdateRequestProcessor getInstance(
SolrQueryRequest req, SolrQueryResponse rsp, UpdateRequestProcessor
next) {
- IndexSchema latestSchema = req.getCore().getLatestSchema();
+ IndexSchema requestSchema = req.getSchema();
for (String fieldName : inputFields) {
- if (!latestSchema.isDynamicField(fieldName) &&
!latestSchema.hasExplicitField(fieldName)) {
+ if (!requestSchema.isDynamicField(fieldName) &&
!requestSchema.hasExplicitField(fieldName)) {
throw new SolrException(
SolrException.ErrorCode.SERVER_ERROR, "undefined field: \"" +
fieldName + "\"");
}
}
- final SchemaField outputFieldSchema = latestSchema.getField(outputField);
+ final SchemaField outputFieldSchema = requestSchema.getField(outputField);
ResponseFormat responseFormat = getJsonSchema(outputFieldSchema);
boolean multiValued = outputFieldSchema.multiValued();
diff --git
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/update/processor/factory/TextToVectorUpdateProcessorFactory.java
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/update/processor/factory/TextToVectorUpdateProcessorFactory.java
index 68f2e17e85a..dc03f677a13 100644
---
a/solr/modules/language-models/src/java/org/apache/solr/languagemodels/update/processor/factory/TextToVectorUpdateProcessorFactory.java
+++
b/solr/modules/language-models/src/java/org/apache/solr/languagemodels/update/processor/factory/TextToVectorUpdateProcessorFactory.java
@@ -94,14 +94,14 @@ public class TextToVectorUpdateProcessorFactory extends
UpdateRequestProcessorFa
@Override
public UpdateRequestProcessor getInstance(
SolrQueryRequest req, SolrQueryResponse rsp, UpdateRequestProcessor
next) {
- IndexSchema latestSchema = req.getCore().getLatestSchema();
+ IndexSchema requestSchema = req.getSchema();
- if (!latestSchema.isDynamicField(inputField) &&
!latestSchema.hasExplicitField(inputField)) {
+ if (!requestSchema.isDynamicField(inputField) &&
!requestSchema.hasExplicitField(inputField)) {
throw new SolrException(
SolrException.ErrorCode.SERVER_ERROR, "undefined field: \"" +
inputField + "\"");
}
- final SchemaField outputFieldSchema = latestSchema.getField(outputField);
+ final SchemaField outputFieldSchema = requestSchema.getField(outputField);
assertIsDenseVectorField(outputFieldSchema);
TextToVectorModelStore modelStore =
TextToVectorModelStore.getManagedModelStore(req.getCore());