diff --git a/src/main/java/com/yelp/nrtsearch/server/grpc/LuceneServer.java b/src/main/java/com/yelp/nrtsearch/server/grpc/LuceneServer.java index dfb2068c6..698124e5f 100644 --- a/src/main/java/com/yelp/nrtsearch/server/grpc/LuceneServer.java +++ b/src/main/java/com/yelp/nrtsearch/server/grpc/LuceneServer.java @@ -51,6 +51,7 @@ import com.yelp.nrtsearch.server.luceneserver.handler.GlobalStateHandler; import com.yelp.nrtsearch.server.luceneserver.handler.IndicesHandler; import com.yelp.nrtsearch.server.luceneserver.handler.LiveSettingsHandler; +import com.yelp.nrtsearch.server.luceneserver.handler.LiveSettingsV2Handler; import com.yelp.nrtsearch.server.luceneserver.handler.MetricsHandler; import com.yelp.nrtsearch.server.luceneserver.handler.NewNRTPointHandler; import com.yelp.nrtsearch.server.luceneserver.handler.ReadyHandler; @@ -66,6 +67,7 @@ import com.yelp.nrtsearch.server.luceneserver.handler.SearchV2Handler; import com.yelp.nrtsearch.server.luceneserver.handler.SendRawFileHandler; import com.yelp.nrtsearch.server.luceneserver.handler.SettingsHandler; +import com.yelp.nrtsearch.server.luceneserver.handler.SettingsV2Handler; import com.yelp.nrtsearch.server.luceneserver.handler.StartIndexHandler; import com.yelp.nrtsearch.server.luceneserver.handler.StartIndexV2Handler; import com.yelp.nrtsearch.server.luceneserver.handler.StatsHandler; @@ -74,8 +76,6 @@ import com.yelp.nrtsearch.server.luceneserver.handler.UpdateFieldsHandler; import com.yelp.nrtsearch.server.luceneserver.handler.WriteNRTPointHandler; import com.yelp.nrtsearch.server.luceneserver.highlights.HighlighterService; -import com.yelp.nrtsearch.server.luceneserver.index.handlers.LiveSettingsV2Handler; -import com.yelp.nrtsearch.server.luceneserver.index.handlers.SettingsV2Handler; import com.yelp.nrtsearch.server.luceneserver.logging.HitsLoggerCreator; import com.yelp.nrtsearch.server.luceneserver.rescore.RescorerCreator; import com.yelp.nrtsearch.server.luceneserver.script.ScriptService; diff --git a/src/main/java/com/yelp/nrtsearch/server/luceneserver/index/handlers/LiveSettingsV2Handler.java b/src/main/java/com/yelp/nrtsearch/server/luceneserver/handler/LiveSettingsV2Handler.java similarity index 96% rename from src/main/java/com/yelp/nrtsearch/server/luceneserver/index/handlers/LiveSettingsV2Handler.java rename to src/main/java/com/yelp/nrtsearch/server/luceneserver/handler/LiveSettingsV2Handler.java index b72f36d9b..5030b49bf 100644 --- a/src/main/java/com/yelp/nrtsearch/server/luceneserver/index/handlers/LiveSettingsV2Handler.java +++ b/src/main/java/com/yelp/nrtsearch/server/luceneserver/handler/LiveSettingsV2Handler.java @@ -13,13 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.yelp.nrtsearch.server.luceneserver.index.handlers; +package com.yelp.nrtsearch.server.luceneserver.handler; import com.google.protobuf.util.JsonFormat; import com.yelp.nrtsearch.server.grpc.IndexLiveSettings; import com.yelp.nrtsearch.server.grpc.LiveSettingsV2Request; import com.yelp.nrtsearch.server.grpc.LiveSettingsV2Response; -import com.yelp.nrtsearch.server.luceneserver.handler.Handler; import com.yelp.nrtsearch.server.luceneserver.index.IndexStateManager; import com.yelp.nrtsearch.server.luceneserver.state.GlobalState; import io.grpc.Status; diff --git a/src/main/java/com/yelp/nrtsearch/server/luceneserver/handler/RegisterFieldsHandler.java b/src/main/java/com/yelp/nrtsearch/server/luceneserver/handler/RegisterFieldsHandler.java index 1413560b7..97964201b 100644 --- a/src/main/java/com/yelp/nrtsearch/server/luceneserver/handler/RegisterFieldsHandler.java +++ b/src/main/java/com/yelp/nrtsearch/server/luceneserver/handler/RegisterFieldsHandler.java @@ -18,7 +18,6 @@ import com.yelp.nrtsearch.server.grpc.FieldDefRequest; import com.yelp.nrtsearch.server.grpc.FieldDefResponse; import com.yelp.nrtsearch.server.luceneserver.index.IndexStateManager; -import com.yelp.nrtsearch.server.luceneserver.index.handlers.FieldUpdateHandler; import com.yelp.nrtsearch.server.luceneserver.state.GlobalState; import io.grpc.Status; import io.grpc.stub.StreamObserver; @@ -40,7 +39,8 @@ public void handle( try { IndexStateManager indexStateManager = getGlobalState().getIndexStateManager(fieldDefRequest.getIndexName()); - FieldDefResponse reply = FieldUpdateHandler.handle(indexStateManager, fieldDefRequest); + String updatedFields = indexStateManager.updateFields(fieldDefRequest.getFieldList()); + FieldDefResponse reply = FieldDefResponse.newBuilder().setResponse(updatedFields).build(); logger.info("RegisterFieldsHandler registered fields " + reply); responseObserver.onNext(reply); responseObserver.onCompleted(); diff --git a/src/main/java/com/yelp/nrtsearch/server/luceneserver/index/handlers/SettingsV2Handler.java b/src/main/java/com/yelp/nrtsearch/server/luceneserver/handler/SettingsV2Handler.java similarity index 96% rename from src/main/java/com/yelp/nrtsearch/server/luceneserver/index/handlers/SettingsV2Handler.java rename to src/main/java/com/yelp/nrtsearch/server/luceneserver/handler/SettingsV2Handler.java index ebae4250b..df39071c7 100644 --- a/src/main/java/com/yelp/nrtsearch/server/luceneserver/index/handlers/SettingsV2Handler.java +++ b/src/main/java/com/yelp/nrtsearch/server/luceneserver/handler/SettingsV2Handler.java @@ -13,13 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.yelp.nrtsearch.server.luceneserver.index.handlers; +package com.yelp.nrtsearch.server.luceneserver.handler; import com.google.protobuf.util.JsonFormat; import com.yelp.nrtsearch.server.grpc.IndexSettings; import com.yelp.nrtsearch.server.grpc.SettingsV2Request; import com.yelp.nrtsearch.server.grpc.SettingsV2Response; -import com.yelp.nrtsearch.server.luceneserver.handler.Handler; import com.yelp.nrtsearch.server.luceneserver.index.IndexStateManager; import com.yelp.nrtsearch.server.luceneserver.state.GlobalState; import io.grpc.Status; diff --git a/src/main/java/com/yelp/nrtsearch/server/luceneserver/handler/UpdateFieldsHandler.java b/src/main/java/com/yelp/nrtsearch/server/luceneserver/handler/UpdateFieldsHandler.java index c2f4b481b..29bdae84f 100644 --- a/src/main/java/com/yelp/nrtsearch/server/luceneserver/handler/UpdateFieldsHandler.java +++ b/src/main/java/com/yelp/nrtsearch/server/luceneserver/handler/UpdateFieldsHandler.java @@ -18,7 +18,6 @@ import com.yelp.nrtsearch.server.grpc.FieldDefRequest; import com.yelp.nrtsearch.server.grpc.FieldDefResponse; import com.yelp.nrtsearch.server.luceneserver.index.IndexStateManager; -import com.yelp.nrtsearch.server.luceneserver.index.handlers.FieldUpdateHandler; import com.yelp.nrtsearch.server.luceneserver.state.GlobalState; import io.grpc.Status; import io.grpc.stub.StreamObserver; @@ -40,7 +39,8 @@ public void handle( try { IndexStateManager indexStateManager = getGlobalState().getIndexStateManager(fieldDefRequest.getIndexName()); - FieldDefResponse reply = FieldUpdateHandler.handle(indexStateManager, fieldDefRequest); + String updatedFields = indexStateManager.updateFields(fieldDefRequest.getFieldList()); + FieldDefResponse reply = FieldDefResponse.newBuilder().setResponse(updatedFields).build(); logger.info("UpdateFieldsHandler registered fields " + reply); responseObserver.onNext(reply); responseObserver.onCompleted(); diff --git a/src/main/java/com/yelp/nrtsearch/server/luceneserver/index/BackendStateManager.java b/src/main/java/com/yelp/nrtsearch/server/luceneserver/index/BackendStateManager.java index bd517763c..c651bce5b 100644 --- a/src/main/java/com/yelp/nrtsearch/server/luceneserver/index/BackendStateManager.java +++ b/src/main/java/com/yelp/nrtsearch/server/luceneserver/index/BackendStateManager.java @@ -22,8 +22,7 @@ import com.yelp.nrtsearch.server.grpc.IndexStateInfo; import com.yelp.nrtsearch.server.grpc.Mode; import com.yelp.nrtsearch.server.grpc.ReplicationServerClient; -import com.yelp.nrtsearch.server.luceneserver.index.handlers.FieldUpdateHandler; -import com.yelp.nrtsearch.server.luceneserver.index.handlers.FieldUpdateHandler.UpdatedFieldInfo; +import com.yelp.nrtsearch.server.luceneserver.index.FieldUpdateUtils.UpdatedFieldInfo; import com.yelp.nrtsearch.server.luceneserver.nrt.NrtDataManager; import com.yelp.nrtsearch.server.luceneserver.state.BackendGlobalState; import com.yelp.nrtsearch.server.luceneserver.state.GlobalState; @@ -87,7 +86,7 @@ public synchronized void load() throws IOException { // name. Let's fix it here so that it updates on the next commit. stateInfo = fixIndexName(stateInfo, indexName); UpdatedFieldInfo updatedFieldInfo = - FieldUpdateHandler.updateFields( + FieldUpdateUtils.updateFields( new FieldAndFacetState(), Collections.emptyMap(), stateInfo.getFieldsMap().values()); currentState = createIndexState(stateInfo, updatedFieldInfo.fieldAndFacetState, liveSettingsOverrides); @@ -201,7 +200,7 @@ public synchronized String updateFields(List fields) throws IOException { throw new IllegalStateException("No state for index: " + indexName); } UpdatedFieldInfo updatedFieldInfo = - FieldUpdateHandler.updateFields( + FieldUpdateUtils.updateFields( currentState.getFieldAndFacetState(), currentState.getCurrentStateInfo().getFieldsMap(), fields); diff --git a/src/main/java/com/yelp/nrtsearch/server/luceneserver/index/handlers/FieldUpdateHandler.java b/src/main/java/com/yelp/nrtsearch/server/luceneserver/index/FieldUpdateUtils.java similarity index 86% rename from src/main/java/com/yelp/nrtsearch/server/luceneserver/index/handlers/FieldUpdateHandler.java rename to src/main/java/com/yelp/nrtsearch/server/luceneserver/index/FieldUpdateUtils.java index 96d4bb9c8..7c5e75fec 100644 --- a/src/main/java/com/yelp/nrtsearch/server/luceneserver/index/handlers/FieldUpdateHandler.java +++ b/src/main/java/com/yelp/nrtsearch/server/luceneserver/index/FieldUpdateUtils.java @@ -13,24 +13,18 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.yelp.nrtsearch.server.luceneserver.index.handlers; +package com.yelp.nrtsearch.server.luceneserver.index; import com.yelp.nrtsearch.server.grpc.Field; -import com.yelp.nrtsearch.server.grpc.FieldDefRequest; -import com.yelp.nrtsearch.server.grpc.FieldDefResponse; import com.yelp.nrtsearch.server.grpc.FieldType; import com.yelp.nrtsearch.server.luceneserver.doc.DocLookup; import com.yelp.nrtsearch.server.luceneserver.field.FieldDef; import com.yelp.nrtsearch.server.luceneserver.field.FieldDefCreator; import com.yelp.nrtsearch.server.luceneserver.field.IndexableFieldDef; import com.yelp.nrtsearch.server.luceneserver.field.VirtualFieldDef; -import com.yelp.nrtsearch.server.luceneserver.index.FieldAndFacetState; -import com.yelp.nrtsearch.server.luceneserver.index.IndexState; -import com.yelp.nrtsearch.server.luceneserver.index.IndexStateManager; import com.yelp.nrtsearch.server.luceneserver.script.ScoreScript; import com.yelp.nrtsearch.server.luceneserver.script.ScriptService; import com.yelp.nrtsearch.server.utils.ScriptParamsUtils; -import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -40,24 +34,10 @@ import org.slf4j.LoggerFactory; /** Static helper class to handle a request to add/update fields. */ -public class FieldUpdateHandler { - private static final Logger logger = LoggerFactory.getLogger(FieldUpdateHandler.class); +public class FieldUpdateUtils { + private static final Logger logger = LoggerFactory.getLogger(FieldUpdateUtils.class); - private FieldUpdateHandler() {} - - /** - * Handle a FieldDefRequest. - * - * @param indexStateManager state manager for index - * @param request request message - * @return response message - * @throws IOException on error committing state - */ - public static FieldDefResponse handle( - IndexStateManager indexStateManager, FieldDefRequest request) throws IOException { - String updatedFields = indexStateManager.updateFields(request.getFieldList()); - return FieldDefResponse.newBuilder().setResponse(updatedFields).build(); - } + private FieldUpdateUtils() {} /** * Container class to hold the {@link Field} definitions used in state, and the corresponding diff --git a/src/test/java/com/yelp/nrtsearch/server/luceneserver/index/handlers/FieldUpdateHandlerTest.java b/src/test/java/com/yelp/nrtsearch/server/luceneserver/index/FieldUpdateUtilsTest.java similarity index 96% rename from src/test/java/com/yelp/nrtsearch/server/luceneserver/index/handlers/FieldUpdateHandlerTest.java rename to src/test/java/com/yelp/nrtsearch/server/luceneserver/index/FieldUpdateUtilsTest.java index aa4fdfe24..e48520605 100644 --- a/src/test/java/com/yelp/nrtsearch/server/luceneserver/index/handlers/FieldUpdateHandlerTest.java +++ b/src/test/java/com/yelp/nrtsearch/server/luceneserver/index/FieldUpdateUtilsTest.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.yelp.nrtsearch.server.luceneserver.index.handlers; +package com.yelp.nrtsearch.server.luceneserver.index; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -43,9 +43,7 @@ import com.yelp.nrtsearch.server.luceneserver.field.ObjectFieldDef; import com.yelp.nrtsearch.server.luceneserver.field.TextFieldDef; import com.yelp.nrtsearch.server.luceneserver.field.VirtualFieldDef; -import com.yelp.nrtsearch.server.luceneserver.index.FieldAndFacetState; -import com.yelp.nrtsearch.server.luceneserver.index.IndexStateManager; -import com.yelp.nrtsearch.server.luceneserver.index.handlers.FieldUpdateHandler.UpdatedFieldInfo; +import com.yelp.nrtsearch.server.luceneserver.index.FieldUpdateUtils.UpdatedFieldInfo; import com.yelp.nrtsearch.server.luceneserver.script.ScriptService; import com.yelp.nrtsearch.server.luceneserver.script.js.JsScriptEngine; import com.yelp.nrtsearch.server.luceneserver.similarity.SimilarityCreator; @@ -62,7 +60,7 @@ import org.junit.BeforeClass; import org.junit.Test; -public class FieldUpdateHandlerTest { +public class FieldUpdateUtilsTest { private static final List simpleUpdates = new ArrayList<>(); @@ -101,7 +99,7 @@ private UpdatedFieldInfo initializeAndCheckSimple() { Map initialFields = Collections.emptyMap(); UpdatedFieldInfo updatedFieldInfo = - FieldUpdateHandler.updateFields(initialState, initialFields, simpleUpdates); + FieldUpdateUtils.updateFields(initialState, initialFields, simpleUpdates); Map fields = updatedFieldInfo.fields; assertEquals(2, fields.size()); assertEquals(simpleUpdates.get(0), fields.get("field1")); @@ -147,7 +145,7 @@ public void testRegisterAdditionalFields() { .build()); UpdatedFieldInfo updatedFieldInfo = - FieldUpdateHandler.updateFields( + FieldUpdateUtils.updateFields( initialInfo.fieldAndFacetState, initialInfo.fields, fieldUpdates); Map fields = updatedFieldInfo.fields; assertEquals(4, fields.size()); @@ -191,7 +189,7 @@ public void testRegisterIdField() { .build()); UpdatedFieldInfo updatedFieldInfo = - FieldUpdateHandler.updateFields( + FieldUpdateUtils.updateFields( initialInfo.fieldAndFacetState, initialInfo.fields, fieldUpdates); Map fields = updatedFieldInfo.fields; assertEquals(4, fields.size()); @@ -237,11 +235,11 @@ public void testRegisterSecondIdField() { .build()); UpdatedFieldInfo updatedFieldInfo = - FieldUpdateHandler.updateFields( + FieldUpdateUtils.updateFields( initialInfo.fieldAndFacetState, initialInfo.fields, fieldUpdates); try { - FieldUpdateHandler.updateFields( + FieldUpdateUtils.updateFields( updatedFieldInfo.fieldAndFacetState, updatedFieldInfo.fields, Collections.singleton( @@ -279,7 +277,7 @@ public void testRegisterAnalyzedFields() { .build()); UpdatedFieldInfo updatedFieldInfo = - FieldUpdateHandler.updateFields( + FieldUpdateUtils.updateFields( initialInfo.fieldAndFacetState, initialInfo.fields, fieldUpdates); Map fields = updatedFieldInfo.fields; assertEquals(4, fields.size()); @@ -317,7 +315,7 @@ public void testRegisterVirtualField() { .build()); UpdatedFieldInfo updatedFieldInfo = - FieldUpdateHandler.updateFields( + FieldUpdateUtils.updateFields( initialInfo.fieldAndFacetState, initialInfo.fields, fieldUpdates); Map fields = updatedFieldInfo.fields; assertEquals(3, fields.size()); @@ -360,7 +358,7 @@ public void testRegisterVirtualFieldRefRequest() { .build()); UpdatedFieldInfo updatedFieldInfo = - FieldUpdateHandler.updateFields( + FieldUpdateUtils.updateFields( initialInfo.fieldAndFacetState, initialInfo.fields, fieldUpdates); Map fields = updatedFieldInfo.fields; assertEquals(4, fields.size()); @@ -424,7 +422,7 @@ public void testRegisterFieldWithChildren() { .build()); UpdatedFieldInfo updatedFieldInfo = - FieldUpdateHandler.updateFields( + FieldUpdateUtils.updateFields( initialInfo.fieldAndFacetState, initialInfo.fields, fieldUpdates); Map fields = updatedFieldInfo.fields; assertEquals(3, fields.size()); @@ -494,7 +492,7 @@ public void testRegisterFieldWithNestedChildren() { .build()); UpdatedFieldInfo updatedFieldInfo = - FieldUpdateHandler.updateFields( + FieldUpdateUtils.updateFields( initialInfo.fieldAndFacetState, initialInfo.fields, fieldUpdates); Map fields = updatedFieldInfo.fields; assertEquals(3, fields.size()); @@ -549,7 +547,7 @@ public void testRegisterFieldsWithFacets() { .build()); UpdatedFieldInfo updatedFieldInfo = - FieldUpdateHandler.updateFields( + FieldUpdateUtils.updateFields( initialInfo.fieldAndFacetState, initialInfo.fields, fieldUpdates); Map fields = updatedFieldInfo.fields; assertEquals(4, fields.size()); @@ -587,7 +585,7 @@ public void testRegisterFieldsWithFacets() { .build()); updatedFieldInfo = - FieldUpdateHandler.updateFields( + FieldUpdateUtils.updateFields( updatedFieldInfo.fieldAndFacetState, updatedFieldInfo.fields, fieldUpdates2); fields = updatedFieldInfo.fields; assertEquals(5, fields.size()); @@ -635,7 +633,7 @@ public void testRegisterFieldNameConflict() { .build()); try { - FieldUpdateHandler.updateFields( + FieldUpdateUtils.updateFields( initialInfo.fieldAndFacetState, initialInfo.fields, fieldUpdates); fail(); } catch (IllegalArgumentException e) { @@ -669,7 +667,8 @@ public void testUpdateRequestHandle() throws IOException { FieldDefRequest request = FieldDefRequest.newBuilder().setIndexName("test_index").addAllField(fieldUpdates).build(); - FieldDefResponse response = FieldUpdateHandler.handle(mockManager, request); + String updatedFields = mockManager.updateFields(request.getFieldList()); + FieldDefResponse response = FieldDefResponse.newBuilder().setResponse(updatedFields).build(); assertEquals("result_string", response.getResponse()); verify(mockManager, times(1)).updateFields(fieldUpdates); diff --git a/src/test/java/com/yelp/nrtsearch/server/luceneserver/index/ImmutableIndexStateTest.java b/src/test/java/com/yelp/nrtsearch/server/luceneserver/index/ImmutableIndexStateTest.java index a3ec94efc..3220d4125 100644 --- a/src/test/java/com/yelp/nrtsearch/server/luceneserver/index/ImmutableIndexStateTest.java +++ b/src/test/java/com/yelp/nrtsearch/server/luceneserver/index/ImmutableIndexStateTest.java @@ -52,8 +52,7 @@ import com.yelp.nrtsearch.server.luceneserver.field.FieldDefCreator; import com.yelp.nrtsearch.server.luceneserver.field.IdFieldDef; import com.yelp.nrtsearch.server.luceneserver.field.IntFieldDef; -import com.yelp.nrtsearch.server.luceneserver.index.handlers.FieldUpdateHandler; -import com.yelp.nrtsearch.server.luceneserver.index.handlers.FieldUpdateHandler.UpdatedFieldInfo; +import com.yelp.nrtsearch.server.luceneserver.index.FieldUpdateUtils.UpdatedFieldInfo; import com.yelp.nrtsearch.server.luceneserver.nrt.NrtDataManager; import com.yelp.nrtsearch.server.luceneserver.similarity.SimilarityCreator; import com.yelp.nrtsearch.server.luceneserver.state.BackendGlobalState; @@ -382,7 +381,7 @@ public void testIndexSort_set() throws IOException { .setSearch(true) .build(); UpdatedFieldInfo fieldInfo = - FieldUpdateHandler.updateFields( + FieldUpdateUtils.updateFields( new FieldAndFacetState(), Collections.emptyMap(), Collections.singleton(sortField)); ImmutableIndexState indexState = getIndexState( @@ -1022,7 +1021,7 @@ public void testGetField() throws IOException { .setSearch(true) .build(); UpdatedFieldInfo fieldInfo = - FieldUpdateHandler.updateFields( + FieldUpdateUtils.updateFields( new FieldAndFacetState(), Collections.emptyMap(), Collections.singleton(field)); IndexStateInfo indexStateInfo = getEmptyState().toBuilder().putAllFields(fieldInfo.fields).build(); @@ -1060,7 +1059,7 @@ public void testGetAllFields() throws IOException { .setSearch(true) .build(); UpdatedFieldInfo fieldInfo = - FieldUpdateHandler.updateFields( + FieldUpdateUtils.updateFields( new FieldAndFacetState(), Collections.emptyMap(), Collections.singleton(field)); IndexStateInfo indexStateInfo = getEmptyState().toBuilder().putAllFields(fieldInfo.fields).build(); @@ -1078,7 +1077,7 @@ public void testGetAllFieldsJSON() throws IOException { .setSearch(true) .build(); UpdatedFieldInfo fieldInfo = - FieldUpdateHandler.updateFields( + FieldUpdateUtils.updateFields( new FieldAndFacetState(), Collections.emptyMap(), Collections.singleton(field)); IndexStateInfo indexStateInfo = getEmptyState().toBuilder().putAllFields(fieldInfo.fields).build();