From 0866c37eb9127457f15612a0099ac472a884ffbc Mon Sep 17 00:00:00 2001 From: Xiang Fu Date: Sun, 2 Aug 2026 14:44:44 -0700 Subject: [PATCH 1/3] Address review feedback from the deprecation-removal PRs Follow-ups to the review comments on #19139 and #19142. No API is removed here; this is cleanup of loose ends left by those PRs plus one bug fix. - Drop the now-redundant (List) null casts at FieldConfig call sites. Those casts existed only to disambiguate the singular-IndexType 5-arg constructor from the List one; #19139 removes the former, so bare null now resolves unambiguously. Also drops the java.util.List import in AvgAggregationFunctionTest, which is unused once the casts are gone. - GET /tables/livebrokers mapped every exception to 404 NOT_FOUND while declaring only 200 and 500. getTableToLiveBrokersMapping filters unknown tables rather than reporting them, so nothing it throws is a lookup miss: a missing broker ExternalView surfaces as IllegalStateException and was being reported to clients as "not found", and the documented 500 was unreachable. Map to INTERNAL_SERVER_ERROR and keep the cause. - MaterializedViewTaskExecutorFactory fell back to an empty PinotConfiguration when _minionConf was null. Once #19139 removes the deprecated 1-arg init, _minionConf is always set, so the branch is dead; if it were ever reached it would silently build a plaintext gRPC client with default limits instead of the configured TLS one. Replaced with a Preconditions check. --- .../api/resources/PinotTableInstances.java | 4 +++- .../function/AvgAggregationFunctionTest.java | 7 +++---- .../MaterializedViewTaskExecutorFactory.java | 13 +++++++------ .../local/utils/IndexCombinationValidationTest.java | 12 ++++++------ .../spi/config/table/OpenStructIndexConfigTest.java | 6 +++--- 5 files changed, 22 insertions(+), 20 deletions(-) diff --git a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTableInstances.java b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTableInstances.java index 1d2c9fb2aff3..0a7a34e2d15a 100644 --- a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTableInstances.java +++ b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTableInstances.java @@ -172,7 +172,9 @@ public Map> getLiveBrokers(@Context HttpHeaders heade try { return _pinotHelixResourceManager.getTableToLiveBrokersMapping(headers.getHeaderString(DATABASE), tables); } catch (Exception e) { - throw new ControllerApplicationException(LOGGER, e.getMessage(), Response.Status.NOT_FOUND); + // Unknown tables are filtered out rather than reported, so anything thrown here (e.g. a missing broker + // ExternalView) is a server-side failure, not a lookup miss. + throw new ControllerApplicationException(LOGGER, e.getMessage(), Response.Status.INTERNAL_SERVER_ERROR, e); } } diff --git a/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/AvgAggregationFunctionTest.java b/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/AvgAggregationFunctionTest.java index 3e3dbc4faf56..652c901dc050 100644 --- a/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/AvgAggregationFunctionTest.java +++ b/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/AvgAggregationFunctionTest.java @@ -18,7 +18,6 @@ */ package org.apache.pinot.core.query.aggregation.function; -import java.util.List; import org.apache.pinot.queries.FluentQueryTest; import org.apache.pinot.spi.config.table.FieldConfig; import org.apache.pinot.spi.config.table.TableType; @@ -197,7 +196,7 @@ void singleKeyAggregationWithSmallNumGroupsLimitDoesntThrowAIOOBE(FieldConfig.En new TableConfigBuilder(TableType.OFFLINE) .setTableName("testTable") .addFieldConfig( - new FieldConfig("key", encoding, (List) null, PASS_THROUGH, null)) + new FieldConfig("key", encoding, null, PASS_THROUGH, null)) .build()) .onFirstInstance(new Object[]{7, 1}, new Object[]{6, 2}, new Object[]{5, 3}, new Object[]{4, 4}) .andOnSecondInstance(new Object[]{7, 1}, new Object[]{6, 2}, new Object[]{5, 3}, new Object[]{4, 4}) @@ -229,9 +228,9 @@ void multiKeyAggregationWithSmallNumGroupsLimitDoesntThrowAIOOBE(FieldConfig.Enc new TableConfigBuilder(TableType.OFFLINE) .setTableName("testTable") .addFieldConfig( - new FieldConfig("key1", encoding, (List) null, PASS_THROUGH, null)) + new FieldConfig("key1", encoding, null, PASS_THROUGH, null)) .addFieldConfig( - new FieldConfig("key2", encoding, (List) null, PASS_THROUGH, null)) + new FieldConfig("key2", encoding, null, PASS_THROUGH, null)) .build()) .onFirstInstance(new Object[]{7, 1}, new Object[]{6, 2}, new Object[]{5, 3}, new Object[]{4, 4}) .andOnSecondInstance(new Object[]{7, 1}, new Object[]{6, 2}, new Object[]{5, 3}, new Object[]{4, 4}) diff --git a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/materializedview/MaterializedViewTaskExecutorFactory.java b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/materializedview/MaterializedViewTaskExecutorFactory.java index bf9a5a1a1e0a..ecf123f4972c 100644 --- a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/materializedview/MaterializedViewTaskExecutorFactory.java +++ b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/materializedview/MaterializedViewTaskExecutorFactory.java @@ -18,6 +18,7 @@ */ package org.apache.pinot.plugin.minion.tasks.materializedview; +import com.google.common.base.Preconditions; import org.apache.pinot.common.config.GrpcConfig; import org.apache.pinot.materializedview.executor.GrpcMaterializedViewQueryExecutor; import org.apache.pinot.materializedview.executor.MaterializedViewQueryExecutor; @@ -65,12 +66,12 @@ public PinotTaskExecutor create() { // Build the gRPC client config from the minion's own configuration, scoped to the // MaterializedViewTask.MINION_BROKER_GRPC_CONFIG_PREFIX prefix. This is how operators // enable TLS, raise the max inbound message size for large MV result sets, and tune - // keepalive. Falling back to an empty configuration (no TLS, defaults) when no - // MinionConf was provided — fine for local tests but production deployments should - // initialize the factory with a MinionConf. - PinotConfiguration grpcClientConfig = _minionConf != null - ? _minionConf.subset(MaterializedViewTask.MINION_BROKER_GRPC_CONFIG_PREFIX) - : new PinotConfiguration(); + // keepalive. Defaulting silently would build a plaintext client with default limits, + // so fail loudly instead. + Preconditions.checkState(_minionConf != null, + "MinionConf is not set; init(zkMetadataManager, minionConf) must be called before create()"); + PinotConfiguration grpcClientConfig = + _minionConf.subset(MaterializedViewTask.MINION_BROKER_GRPC_CONFIG_PREFIX); _queryExecutor = new GrpcMaterializedViewQueryExecutor( MinionContext.getInstance().getHelixManager(), new GrpcConfig(grpcClientConfig)); diff --git a/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/IndexCombinationValidationTest.java b/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/IndexCombinationValidationTest.java index 50f6aa7b7842..e7550d24eadd 100644 --- a/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/IndexCombinationValidationTest.java +++ b/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/IndexCombinationValidationTest.java @@ -458,7 +458,7 @@ public void testForwardIndexDisabledWithDictAndInvertedPasses() { @Test public void testRawWithLz4CodecPasses() { - FieldConfig fc = new FieldConfig(STR_COL, EncodingType.RAW, (List) null, CompressionCodec.LZ4, null); + FieldConfig fc = new FieldConfig(STR_COL, EncodingType.RAW, null, CompressionCodec.LZ4, null); TableConfig tc = new TableConfigBuilder(TableType.OFFLINE).setTableName(TABLE_NAME) .setNoDictionaryColumns(List.of(STR_COL)) .setFieldConfigList(List.of(fc)) @@ -468,7 +468,7 @@ public void testRawWithLz4CodecPasses() { @Test public void testRawWithSnappyCodecPasses() { - FieldConfig fc = new FieldConfig(STR_COL, EncodingType.RAW, (List) null, CompressionCodec.SNAPPY, null); + FieldConfig fc = new FieldConfig(STR_COL, EncodingType.RAW, null, CompressionCodec.SNAPPY, null); TableConfig tc = new TableConfigBuilder(TableType.OFFLINE).setTableName(TABLE_NAME) .setNoDictionaryColumns(List.of(STR_COL)) .setFieldConfigList(List.of(fc)) @@ -479,7 +479,7 @@ public void testRawWithSnappyCodecPasses() { @Test public void testRawWithZstdCodecPasses() { FieldConfig fc = - new FieldConfig(STR_COL, EncodingType.RAW, (List) null, CompressionCodec.ZSTANDARD, null); + new FieldConfig(STR_COL, EncodingType.RAW, null, CompressionCodec.ZSTANDARD, null); TableConfig tc = new TableConfigBuilder(TableType.OFFLINE).setTableName(TABLE_NAME) .setNoDictionaryColumns(List.of(STR_COL)) .setFieldConfigList(List.of(fc)) @@ -490,7 +490,7 @@ public void testRawWithZstdCodecPasses() { @Test public void testRawWithClpCodecStringColumnPasses() { // CLP codecs are valid for raw STRING columns - FieldConfig fc = new FieldConfig(STR_COL, EncodingType.RAW, (List) null, CompressionCodec.CLP, null); + FieldConfig fc = new FieldConfig(STR_COL, EncodingType.RAW, null, CompressionCodec.CLP, null); TableConfig tc = new TableConfigBuilder(TableType.OFFLINE).setTableName(TABLE_NAME) .setNoDictionaryColumns(List.of(STR_COL)) .setFieldConfigList(List.of(fc)) @@ -501,7 +501,7 @@ public void testRawWithClpCodecStringColumnPasses() { @Test public void testRawWithClpCodecNonStringColumnFails() { // CLP is only valid on STRING stored type - FieldConfig fc = new FieldConfig(INT_COL, EncodingType.RAW, (List) null, CompressionCodec.CLP, null); + FieldConfig fc = new FieldConfig(INT_COL, EncodingType.RAW, null, CompressionCodec.CLP, null); TableConfig tc = new TableConfigBuilder(TableType.OFFLINE).setTableName(TABLE_NAME) .setNoDictionaryColumns(List.of(INT_COL)) .setFieldConfigList(List.of(fc)) @@ -513,7 +513,7 @@ public void testRawWithClpCodecNonStringColumnFails() { public void testDeltaDeltaCodecNonNumericColumnFails() { // DELTADELTA only valid on INT/LONG columns FieldConfig fc = - new FieldConfig(STR_COL, EncodingType.RAW, (List) null, CompressionCodec.DELTADELTA, null); + new FieldConfig(STR_COL, EncodingType.RAW, null, CompressionCodec.DELTADELTA, null); TableConfig tc = new TableConfigBuilder(TableType.OFFLINE).setTableName(TABLE_NAME) .setNoDictionaryColumns(List.of(STR_COL)) .setFieldConfigList(List.of(fc)) diff --git a/pinot-spi/src/test/java/org/apache/pinot/spi/config/table/OpenStructIndexConfigTest.java b/pinot-spi/src/test/java/org/apache/pinot/spi/config/table/OpenStructIndexConfigTest.java index 43a71a4dc2b0..f1144955ebb7 100644 --- a/pinot-spi/src/test/java/org/apache/pinot/spi/config/table/OpenStructIndexConfigTest.java +++ b/pinot-spi/src/test/java/org/apache/pinot/spi/config/table/OpenStructIndexConfigTest.java @@ -55,7 +55,7 @@ public void testDisabledConfig() { @Test public void testNoDictionaryKeys() { FieldConfig rawKey = - new FieldConfig("raw_payload", FieldConfig.EncodingType.RAW, (List) null, null, null); + new FieldConfig("raw_payload", FieldConfig.EncodingType.RAW, null, null, null); OpenStructIndexConfig config = new OpenStructIndexConfig(false, null, 1000, null, 0.5, List.of(rawKey)); assertFalse(config.shouldUseDictionaryForKey("raw_payload")); // Unconfigured key falls back to built-in default (DICTIONARY). @@ -126,9 +126,9 @@ public void testDefaultValueFieldConfigRawEncoding() @Test public void testShouldUseDictionaryForKeyHardOverride() { FieldConfig blob = - new FieldConfig("blob", FieldConfig.EncodingType.RAW, (List) null, null, null); + new FieldConfig("blob", FieldConfig.EncodingType.RAW, null, null, null); FieldConfig rawPayload = - new FieldConfig("raw_payload", FieldConfig.EncodingType.RAW, (List) null, null, null); + new FieldConfig("raw_payload", FieldConfig.EncodingType.RAW, null, null, null); OpenStructIndexConfig config = new OpenStructIndexConfig(false, null, 1000, null, 0.5, List.of(blob, rawPayload)); assertFalse(config.shouldUseDictionaryForKey("blob")); assertFalse(config.shouldUseDictionaryForKey("raw_payload")); From fa287ecdc287b7ac577a14a4fa91d75b827dc76d Mon Sep 17 00:00:00 2001 From: Xiang Fu Date: Sun, 2 Aug 2026 15:39:00 -0700 Subject: [PATCH 2/3] Address review feedback: validate both init fields, use a stable 500 message - MaterializedViewTaskExecutorFactory: also validate _zkMetadataManager, which create() passes straight into MaterializedViewTaskExecutor and which is null if the factory is used before init(). Both checks moved to the top of create() so they run on every call; inside the lazy-init block they were skipped once _queryExecutor had been built. - PinotTableInstances: e.getMessage() is null for many exceptions, which would produce an empty message in both the log line and the 500 response body. Use a stable contextual message and let the attached cause carry the detail. --- .../api/resources/PinotTableInstances.java | 6 ++++-- .../MaterializedViewTaskExecutorFactory.java | 13 ++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTableInstances.java b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTableInstances.java index 0a7a34e2d15a..51b9dd2e61b7 100644 --- a/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTableInstances.java +++ b/pinot-controller/src/main/java/org/apache/pinot/controller/api/resources/PinotTableInstances.java @@ -173,8 +173,10 @@ public Map> getLiveBrokers(@Context HttpHeaders heade return _pinotHelixResourceManager.getTableToLiveBrokersMapping(headers.getHeaderString(DATABASE), tables); } catch (Exception e) { // Unknown tables are filtered out rather than reported, so anything thrown here (e.g. a missing broker - // ExternalView) is a server-side failure, not a lookup miss. - throw new ControllerApplicationException(LOGGER, e.getMessage(), Response.Status.INTERNAL_SERVER_ERROR, e); + // ExternalView) is a server-side failure, not a lookup miss. Use a stable message since the cause may + // carry none, and let the attached cause supply the detail in the logs. + throw new ControllerApplicationException(LOGGER, "Failed to get table to live brokers mapping", + Response.Status.INTERNAL_SERVER_ERROR, e); } } diff --git a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/materializedview/MaterializedViewTaskExecutorFactory.java b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/materializedview/MaterializedViewTaskExecutorFactory.java index ecf123f4972c..483d4546d303 100644 --- a/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/materializedview/MaterializedViewTaskExecutorFactory.java +++ b/pinot-plugins/pinot-minion-tasks/pinot-minion-builtin-tasks/src/main/java/org/apache/pinot/plugin/minion/tasks/materializedview/MaterializedViewTaskExecutorFactory.java @@ -60,16 +60,19 @@ public String getTaskType() { @Override public PinotTaskExecutor create() { + // Validated on every call rather than only on the first: without a MinionConf we would silently build a + // plaintext gRPC client with default limits instead of the configured one, and without a metadata manager + // we would hand a null straight to the executor. + Preconditions.checkState(_zkMetadataManager != null, + "MinionTaskZkMetadataManager is not set; init(zkMetadataManager, minionConf) must be called before create()"); + Preconditions.checkState(_minionConf != null, + "MinionConf is not set; init(zkMetadataManager, minionConf) must be called before create()"); if (_queryExecutor == null) { synchronized (this) { if (_queryExecutor == null) { // Build the gRPC client config from the minion's own configuration, scoped to the // MaterializedViewTask.MINION_BROKER_GRPC_CONFIG_PREFIX prefix. This is how operators - // enable TLS, raise the max inbound message size for large MV result sets, and tune - // keepalive. Defaulting silently would build a plaintext client with default limits, - // so fail loudly instead. - Preconditions.checkState(_minionConf != null, - "MinionConf is not set; init(zkMetadataManager, minionConf) must be called before create()"); + // enable TLS, raise the max inbound message size for large MV result sets, and tune keepalive. PinotConfiguration grpcClientConfig = _minionConf.subset(MaterializedViewTask.MINION_BROKER_GRPC_CONFIG_PREFIX); _queryExecutor = new GrpcMaterializedViewQueryExecutor( From 5f3ca4c22c6bc8fe9373a3b674323d0eb0456d8a Mon Sep 17 00:00:00 2001 From: Xiang Fu Date: Sun, 2 Aug 2026 17:09:48 -0700 Subject: [PATCH 3/3] Collapse FieldConfig call sites onto one line now that the casts are gone Removing the (List) null casts shortened these statements enough to fit within the 120-char limit, so the line wrapping they needed is now just noise. Applies to IndexCombinationValidationTest, OpenStructIndexConfigTest and AvgAggregationFunctionTest. --- .../aggregation/function/AvgAggregationFunctionTest.java | 9 +++------ .../local/utils/IndexCombinationValidationTest.java | 6 ++---- .../spi/config/table/OpenStructIndexConfigTest.java | 9 +++------ 3 files changed, 8 insertions(+), 16 deletions(-) diff --git a/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/AvgAggregationFunctionTest.java b/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/AvgAggregationFunctionTest.java index 652c901dc050..9302073597fc 100644 --- a/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/AvgAggregationFunctionTest.java +++ b/pinot-core/src/test/java/org/apache/pinot/core/query/aggregation/function/AvgAggregationFunctionTest.java @@ -195,8 +195,7 @@ void singleKeyAggregationWithSmallNumGroupsLimitDoesntThrowAIOOBE(FieldConfig.En .build(), new TableConfigBuilder(TableType.OFFLINE) .setTableName("testTable") - .addFieldConfig( - new FieldConfig("key", encoding, null, PASS_THROUGH, null)) + .addFieldConfig(new FieldConfig("key", encoding, null, PASS_THROUGH, null)) .build()) .onFirstInstance(new Object[]{7, 1}, new Object[]{6, 2}, new Object[]{5, 3}, new Object[]{4, 4}) .andOnSecondInstance(new Object[]{7, 1}, new Object[]{6, 2}, new Object[]{5, 3}, new Object[]{4, 4}) @@ -227,10 +226,8 @@ void multiKeyAggregationWithSmallNumGroupsLimitDoesntThrowAIOOBE(FieldConfig.Enc .build(), new TableConfigBuilder(TableType.OFFLINE) .setTableName("testTable") - .addFieldConfig( - new FieldConfig("key1", encoding, null, PASS_THROUGH, null)) - .addFieldConfig( - new FieldConfig("key2", encoding, null, PASS_THROUGH, null)) + .addFieldConfig(new FieldConfig("key1", encoding, null, PASS_THROUGH, null)) + .addFieldConfig(new FieldConfig("key2", encoding, null, PASS_THROUGH, null)) .build()) .onFirstInstance(new Object[]{7, 1}, new Object[]{6, 2}, new Object[]{5, 3}, new Object[]{4, 4}) .andOnSecondInstance(new Object[]{7, 1}, new Object[]{6, 2}, new Object[]{5, 3}, new Object[]{4, 4}) diff --git a/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/IndexCombinationValidationTest.java b/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/IndexCombinationValidationTest.java index e7550d24eadd..b2fb2c5b5cfc 100644 --- a/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/IndexCombinationValidationTest.java +++ b/pinot-segment-local/src/test/java/org/apache/pinot/segment/local/utils/IndexCombinationValidationTest.java @@ -478,8 +478,7 @@ public void testRawWithSnappyCodecPasses() { @Test public void testRawWithZstdCodecPasses() { - FieldConfig fc = - new FieldConfig(STR_COL, EncodingType.RAW, null, CompressionCodec.ZSTANDARD, null); + FieldConfig fc = new FieldConfig(STR_COL, EncodingType.RAW, null, CompressionCodec.ZSTANDARD, null); TableConfig tc = new TableConfigBuilder(TableType.OFFLINE).setTableName(TABLE_NAME) .setNoDictionaryColumns(List.of(STR_COL)) .setFieldConfigList(List.of(fc)) @@ -512,8 +511,7 @@ public void testRawWithClpCodecNonStringColumnFails() { @Test public void testDeltaDeltaCodecNonNumericColumnFails() { // DELTADELTA only valid on INT/LONG columns - FieldConfig fc = - new FieldConfig(STR_COL, EncodingType.RAW, null, CompressionCodec.DELTADELTA, null); + FieldConfig fc = new FieldConfig(STR_COL, EncodingType.RAW, null, CompressionCodec.DELTADELTA, null); TableConfig tc = new TableConfigBuilder(TableType.OFFLINE).setTableName(TABLE_NAME) .setNoDictionaryColumns(List.of(STR_COL)) .setFieldConfigList(List.of(fc)) diff --git a/pinot-spi/src/test/java/org/apache/pinot/spi/config/table/OpenStructIndexConfigTest.java b/pinot-spi/src/test/java/org/apache/pinot/spi/config/table/OpenStructIndexConfigTest.java index f1144955ebb7..908dc7257216 100644 --- a/pinot-spi/src/test/java/org/apache/pinot/spi/config/table/OpenStructIndexConfigTest.java +++ b/pinot-spi/src/test/java/org/apache/pinot/spi/config/table/OpenStructIndexConfigTest.java @@ -54,8 +54,7 @@ public void testDisabledConfig() { @Test public void testNoDictionaryKeys() { - FieldConfig rawKey = - new FieldConfig("raw_payload", FieldConfig.EncodingType.RAW, null, null, null); + FieldConfig rawKey = new FieldConfig("raw_payload", FieldConfig.EncodingType.RAW, null, null, null); OpenStructIndexConfig config = new OpenStructIndexConfig(false, null, 1000, null, 0.5, List.of(rawKey)); assertFalse(config.shouldUseDictionaryForKey("raw_payload")); // Unconfigured key falls back to built-in default (DICTIONARY). @@ -125,10 +124,8 @@ public void testDefaultValueFieldConfigRawEncoding() @Test public void testShouldUseDictionaryForKeyHardOverride() { - FieldConfig blob = - new FieldConfig("blob", FieldConfig.EncodingType.RAW, null, null, null); - FieldConfig rawPayload = - new FieldConfig("raw_payload", FieldConfig.EncodingType.RAW, null, null, null); + FieldConfig blob = new FieldConfig("blob", FieldConfig.EncodingType.RAW, null, null, null); + FieldConfig rawPayload = new FieldConfig("raw_payload", FieldConfig.EncodingType.RAW, null, null, null); OpenStructIndexConfig config = new OpenStructIndexConfig(false, null, 1000, null, 0.5, List.of(blob, rawPayload)); assertFalse(config.shouldUseDictionaryForKey("blob")); assertFalse(config.shouldUseDictionaryForKey("raw_payload"));