Arkoprovo Sircar
09/26/2025, 11:22 AMcontroller-1
It seems some issue with controller trying to commit segments to our S3 deepstore?
And we had enabled table setting and server setting to commit directly from server.
Can somebody please help why this has happened?
We have tried restarting all controller and servers
these are the logs for Controller
2025/09/26 05:53:56.694 INFO [LLCSegmentCompletionHandlers] [grizzly-http-server-1] Processing segmentCommitEndWithMetadata:Offset: -1,Segment name: GatewayTest__9__2651__20250922T1206Z,Instance Id: Server_pinot-server-3.pinot-server-headless.pinot-prod.svc.cluster.local_8098,Reason: rowLimit,NumRows: 64257,BuildTimeMillis: 17312,WaitTimeMillis: 0,ExtraTimeSec: -1,SegmentLocation: <s3://zpinot-prod/GatewayTest/GatewayTest__9__2651__20250922T1206Z.tmp.016a1c02-a9e6-465d-aa20-01fe6c76fe0d,MemoryUsedBytes>: 0,SegmentSizeBytes: 305005624,StreamPartitionMsgOffset: 340975150
2025/09/26 05:53:56.699 INFO [SegmentCompletionFSM_GatewayTest__9__2651__20250922T1206Z] [grizzly-http-server-1] Processing segmentCommitEnd(Server_pinot-server-3.pinot-server-headless.pinot-prod.svc.cluster.local_8098, 340975150)
2025/09/26 05:53:56.699 INFO [SegmentCompletionFSM_GatewayTest__9__2651__20250922T1206Z] [grizzly-http-server-1] Committing segment GatewayTest__9__2651__20250922T1206Z at offset 340975150 winner Server_pinot-server-3.pinot-server-headless.pinot-prod.svc.cluster.local_8098
2025/09/26 05:53:56.699 INFO [PinotLLCRealtimeSegmentManager] [grizzly-http-server-1] Committing segment file for segment: GatewayTest__9__2651__20250922T1206Z
2025/09/26 05:53:56.700 INFO [LLCSegmentCompletionHandlers] [grizzly-http-server-0] Processing segmentConsumed:Offset: -1,Segment name: FintechOnboarding__24__437__20250922T1517Z,Instance Id: Server_pinot-server-7.pinot-server-headless.pinot-prod.svc.cluster.local_8098,Reason: timeLimit,NumRows: 39,BuildTimeMillis: -1,WaitTimeMillis: -1,ExtraTimeSec: -1,SegmentLocation: null,MemoryUsedBytes: 0,SegmentSizeBytes: -1,StreamPartitionMsgOffset: 1546
2025/09/26 05:53:56.700 ERROR [SegmentCompletionFSM_GatewayTest__9__2651__20250922T1206Z] [grizzly-http-server-1] Caught exception while committing segment file for segment: GatewayTest__9__2651__20250922T1206Z
java.lang.IllegalStateException: Connection pool shut down
at org.apache.pinot.shaded.org.apache.http.util.Asserts.check(Asserts.java:34) ~[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
at org.apache.pinot.shaded.org.apache.http.impl.conn.PoolingHttpClientConnectionManager.requestConnection(PoolingHttpClientConnectionManager.java:269) ~[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
at org.apache.pinot.shaded.software.amazon.awssdk.http.apache.internal.conn.ClientConnectionManagerFactory$DelegatingHttpClientConnectionManager.requestConnection(ClientConnectionManagerFactory.java:75) ~[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
at org.apache.pinot.shaded.software.amazon.awssdk.http.apache.internal.conn.ClientConnectionManagerFactory$InstrumentedHttpClientConnectionManager.requestConnection(ClientConnectionManagerFactory.java:57) ~[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
at org.apache.pinot.shaded.org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:176) ~[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
at org.apache.pinot.shaded.org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186) ~[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
at org.apache.pinot.shaded.org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) ~[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
at org.apache.pinot.shaded.org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) ~[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
at org.apache.pinot.shaded.org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56) ~[pinot-all-1.2.0-jar-with-dependencies.jar:1.2.0-cc33ac502a02e2fe830fe21e556234ee99351a7a]
at org.apache.pinot.shaded.software.amazon.awssdk.http.apache.internal.impl.ApacheSdkHttpClient.execute(ApacheSdkHttpClient.java:72) ~[pinot-all-Priyank Bagrecha
09/29/2025, 9:43 PMDistinctCount[Raw]ThetaSketch the only Apache DataSketch sketch algorithm that is supported out of the box in Pinot? Looking at code it seems DistinctCountHLL , DistinctCountHLLPlus are coming from stream-lib implementation.Mannoj
09/30/2025, 10:53 AMPriyank Bagrecha
10/02/2025, 7:23 PMPriyank Bagrecha
10/02/2025, 10:27 PM2025-10-02 12:09:58.319
25/10/02 19:09:58 [dag-scheduler-event-loop] INFO DAGScheduler: Got job 1 (foreach at SparkSegmentMetadataPushJobRunner.java:219) with 2 output partitions
2025-10-02 12:09:58.319
25/10/02 19:09:58 [main] INFO SparkContext: Starting job: foreach at SparkSegmentMetadataPushJobRunner.java:219
2025-10-02 12:09:58.301
25/10/02 19:09:58 [main] INFO ConsistentDataPushUtils: Consistent data push is: disabled
2025-10-02 12:09:58.273
25/10/02 19:09:58 [main] INFO GcsPinotFS: Listed 654 files from URI: <gs://segment-store/pinot/controller-data/lego_gc>, is recursive: true
which makes me believe that it is trying to push all segments and not just the most recent hour's segments to pinot.
this is what the batch ingestion spec yaml looks like
executionFrameworkSpec:
name: "spark"
segmentGenerationJobRunnerClassName: "org.apache.pinot.plugin.ingestion.batch.spark3.SparkSegmentGenerationJobRunner"
segmentTarPushJobRunnerClassName: "org.apache.pinot.plugin.ingestion.batch.spark3.SparkSegmentTarPushJobRunner"
segmentUriPushJobRunnerClassName: "org.apache.pinot.plugin.ingestion.batch.spark3.SparkSegmentUriPushJobRunner"
segmentMetadataPushJobRunnerClassName: "org.apache.pinot.plugin.ingestion.batch.spark3.SparkSegmentMetadataPushJobRunner"
jobType: "SegmentCreationAndMetadataPush"
inputDirURI: "<gs://input-store/lego_gc/date_key=2025-10-01/hour=00/>"
includeFileNamePattern: "glob:**/*.parquet"
outputDirURI: "<gs://segment-store/pinot/controller-data/lego_gc>"
overwriteOutput: true
pinotFSSpecs:
- scheme: "gs"
className: "org.apache.pinot.plugin.filesystem.GcsPinotFS"
pinotClusterSpecs:
- controllerURI: "pinot.something.com"
recordReaderSpec:
dataFormat: "PARQUET"
className: "org.apache.pinot.plugin.inputformat.parquet.ParquetRecordReader"
tableSpec:
tableName: "lego_gc"
schemaURI: "pinot.something.com/tables/lego_gc/schema"
tableConfigURI: "pinot.something.com/tables/lego_gc"
segmentNameGeneratorSpec:
type: "simple"
configs:
segment.name.prefix: "lego_gc_2025-10-01-00"
exclude.sequence.id: true
pushJobSpec:
pushParallelism: 2
pushAttempts: 2
pushRetryIntervalMillis: 1000
do i need to configure outputDirURI to be partitioned as well? like gs://segment-store/pinot/controller-data/lego_gc/date_key=2025-10-01/hour=00/? Please note that gs://segment-store/pinot/controller-data/ is the location of segment store as configured in servers.Milind Chaudhary
10/06/2025, 5:41 AMRicha Kumari
10/06/2025, 5:46 AMmadhulika
10/06/2025, 1:13 PMPriyank Bagrecha
10/06/2025, 10:19 PMMayank
Arkoprovo Sircar
10/07/2025, 1:26 PMАндрей Морозов
10/08/2025, 10:59 AMTommaso Peresson
10/08/2025, 3:26 PMmetadata push mode to save the segments in the deep store and keep only metadata on the Controller?Shubham Kumar
10/09/2025, 6:21 AMmadhulika
10/09/2025, 5:18 PMSELECT tripId,
CASE
WHEN total_task = delivered_task THEN 'COMPLETE_DELIVERY'
WHEN total_task = delivered_task + returned_task THEN 'DELIVERED_RETURNED'
WHEN delivered_task = '0' THEN 'NO_DELIVERY'
ELSE 'PARTIAL_DELIVERY'
END AS delivery_Type
FROM (
SELECT DISTINCT tripId,
COUNT(DISTINCT taskId) AS total_task,
SUM(deliveredOrder) AS delivered_task,
SUM(returnedOrder) AS returned_task
FROM (
SELECT tripId,
CASE
WHEN deliveryStatus IN ('DELIVERED') THEN 1
ELSE 0
END AS deliveredOrder,
CASE
WHEN deliveryStatus IN ('RETURNED') THEN 1
ELSE 0
END AS returnedOrder,
taskId
FROM lmd_task_db_snapshot task
WHERE tripId IN (
) AND scheduleStart >= '2025-10-08 13:00:00.0'
AND scheduleStart < '2025-10-10 08:00:00.0'
) I
GROUP BY tripId
)Victor Bivolaru
10/10/2025, 11:09 AM"Task_SegmentGenerationAndPushTask_smth_f11b81f0-cc0f-4c8d-b205-4873963f49d4": "IN_PROGRESS" when calling GET /tasks/SegmentGenerationAndPushTask/state, but when checking with GET tasks/subtask/Task_SegmentGenerationAndPushTask_smth_f11b81f0-cc0f-4c8d-b205-4873963f49d4/state I get
{
"Task_SegmentGenerationAndPushTask_smth_f11b81f0-cc0f-4c8d-b205-4873963f49d4_0": null
}
The controller logs clearly states
2025/10/10 11:04:55.086 ERROR [JobDispatcher] [HelixController-pipeline-task-smth-(2c58d6d3_TASK)] No available instance found for job: TaskQueue_SegmentGenerationAndPushTask_Task_SegmentGenerationAndPushTask_smth_f11b81f0-cc0f-4c8d-b205-4873963f49d4
I was expecting that the status of the task to also reflect that by showing "NOT_STARTED".Victor Bivolaru
10/10/2025, 1:46 PMC1 that in the table config appears as a sortedColumn
Nightly we would like to run a merge task but I am not sure if this task would keep the data sorted over the newly created segment. I am afraid the only way is writing a custom taskfrancoisa
10/10/2025, 2:05 PMraghav
10/10/2025, 2:09 PMpinotServer.2025-10-10.9.log.gz:2025/10/10 13:22:34.067 ERROR [RealtimeSegmentDataManager_metric_numerical_agg_1H__16__182629__20251010T1321Z] [metric_numerical_agg_1H__16__182629__20251010T1321Z] Holding after response from Controller: {"buildTimeSec":-1,"isSplitCommitType":true,"streamPartitionMsgOffset":null,"status":"NOT_SENT"}
pinotServer.2025-10-10.9.log.gz:2025/10/10 13:22:52.653 ERROR [ServerSegmentCompletionProtocolHandler] [metric_numerical_agg_1H__28__180921__20251010T1322Z] Could not send request <http://pinot-controller-0.pinot-controller-headless.d3-pinot-cluster.svc.cluster.local:9000/segmentConsumed?reason=rowLimit&streamPartitionMsgOffset=172544503662&instance=Server_pinot-server-1.pinot-server-headless.d3-pinot-cluster.svc.cluster.local_8098&name=metric_numerical_agg_1H__28__180921__20251010T1322Z&rowCount=696146&memoryUsedBytes=338498296>
2025/10/10 13:14:41.871 WARN [AppInfoParser] [HelixTaskExecutor-message_handle_thread_5] Error registering AppInfo mbean
javax.management.InstanceAlreadyExistsException: kafka.consumer:type=app-info,id=metric_numerical_agg_1H_REALTIME-D3NumericalSketchPartitioned-28
at java.management/com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:322)Yash Lohade
10/10/2025, 4:46 PMSatya Mahesh
10/13/2025, 1:40 PMraghav
10/13/2025, 3:19 PM2025/10/13 07:46:07.467 INFO [ZkClient] [Start a Pinot [SERVER]-EventThread] zkclient 3, zookeeper state changed ( Disconnected )
2025/10/13 07:46:07.472 WARN [ZKHelixManager] [ZkClient-EventThread-125-pinot-zookeeper:2181] KeeperState:Disconnected, SessionId: 10000184ff502de, instance: Server_pinot-server-4.pinot-server-headless.d3-pinot-cluster.svc.cluster.local_8098, type: PARTICIPANT
2025/10/13 07:46:09.059 INFO [ZkClient] [Start a Pinot [SERVER]-EventThread] zkclient 3, zookeeper state changed ( SyncConnected )
2025/10/13 07:46:09.059 INFO [ZKHelixManager] [ZkClient-EventThread-125-pinot-zookeeper:2181] KeeperState: SyncConnected, instance: Server_pinot-server-4.pinot-server-headless.d3-pinot-cluster.svc.cluster.local_8098, type: PARTICIPANT
2025/10/13 07:46:21.387 INFO [ZkClient] [Start a Pinot [SERVER]-EventThread] zkclient 3, zookeeper state changed ( Disconnected )
2025/10/13 07:46:21.387 WARN [ZKHelixManager] [ZkClient-EventThread-125-pinot-zookeeper:2181] KeeperState:Disconnected, SessionId: 10000184ff502de, instance: Server_pinot-server-4.pinot-server-headless.d3-pinot-cluster.svc.cluster.local_8098, type: PARTICIPANT
2025/10/13 07:46:22.025 WARN [ZKHelixManager] [message-count-scheduler-0] zkClient to pinot-zookeeper:2181 is not connected, wait for 10000ms.
2025/10/13 07:46:32.028 ERROR [ZKHelixManager] [message-count-scheduler-0] zkClient is not connected after waiting 10000ms., clusterName: d3-pinot-cluster, zkAddress: pinot-zookeeper:2181
2025/10/13 07:46:34.790 INFO [ZkClient] [Start a Pinot [SERVER]-EventThread] zkclient 3, zookeeper state changed ( SyncConnected )
2025/10/13 07:46:34.790 INFO [ZKHelixManager] [ZkClient-EventThread-125-pinot-zookeeper:2181] KeeperState: SyncConnected, instance: Server_pinot-server-4.pinot-server-headless.d3-pinot-cluster.svc.cluster.local_8098, type: PARTICIPANT
2025/10/13 12:34:34.225 INFO [CallbackHandler] [ZkClient-EventThread-125-pinot-zookeeper:2181] 125 START: CallbackHandler 0, INVOKE /d3-pinot-cluster/INSTANCES/Server_pinot-server-4.pinot-server-headless.d3-pinot-cluster.svc.cluster.local_8098/MESSAGES listener: org.apache.helix.messaging.handling.HelixTaskExecutor@1b9d313c type: CALLBACK
2025/10/13 12:34:34.226 INFO [CallbackHandler] [ZkClient-EventThread-125-pinot-zookeeper:2181] CallbackHandler 0 subscribing changes listener to path: /d3-pinot-cluster/INSTANCES/Server_pinot-server-4.pinot-server-headless.d3-pinot-cluster.svc.cluster.local_8098/MESSAGES, callback type: CALLBACK, event types: [NodeChildrenChanged], listener: org.apache.helix.messaging.handling.HelixTaskExecutor@1b9d313c, watchChild: false
2025/10/13 12:34:34.227 INFO [CallbackHandler] [ZkClient-EventThread-125-pinot-zookeeper:2181] CallbackHandler0, Subscribing to path: /d3-pinot-cluster/INSTANCES/Server_pinot-server-4.pinot-server-headless.d3-pinot-cluster.svc.cluster.local_8098/MESSAGES took: 1
2025/10/13 12:34:34.231 INFO [MessageLatencyMonitor] [ZkClient-EventThread-125-pinot-zookeeper:2181] The latency of message 89f57203-2271-4d7a-abc3-1087222fc439 is 853 ms
2025/10/13 12:34:34.246 INFO [HelixTaskExecutor] [ZkClient-EventThread-125-pinot-zookeeper:2181] Scheduling message 89f57203-2271-4d7a-abc3-1087222fc439: metric_numerical_agg_1H_REALTIME:, null->nullАндрей Морозов
10/14/2025, 6:53 AMexecutionFrameworkSpec:
name: standalone
segmentGenerationJobRunnerClassName: org.apache.pinot.plugin.ingestion.batch.standalone.SegmentGenerationJobRunner
segmentTarPushJobRunnerClassName: org.apache.pinot.plugin.ingestion.batch.standalone.SegmentTarPushJobRunner
segmentUriPushJobRunnerClassName: org.apache.pinot.plugin.ingestion.batch.standalone.SegmentUriPushJobRunner
jobType: SegmentCreationAndTarPush
inputDirURI: '/var/imports/insights_ch1_fff_seg/'
includeFileNamePattern: "glob:**/*.parquet"
outputDirURI: '/tmp/pinot-segments/insights_ch1_fff_sm'
overwriteOutput: true
pushJobSpec:
pushFileNamePattern: 'glob:**/*.tar.gz'
pushParallelism: 2
pushAttempts: 2
recordReaderSpec:
dataFormat: parquet
className: org.apache.pinot.plugin.inputformat.parquet.ParquetRecordReader
pinotFSSpecs:
- scheme: file
className: org.apache.pinot.spi.filesystem.LocalPinotFS
tableSpec:
tableName: insights_ch1_4
schemaURI: '<http://pinot-controller:9000/tables/insights_ch1_4/schema>'
tableConfigURI: '<http://pinot-controller:9000/tables/insights_ch1_4>'
pinotClusterSpecs:
- controllerURI: '<http://pinot-controller:9000>'
Made segs on mounted dir after working of job:
(screenshot)
Command for running job:
docker exec -e JAVA_OPTS="-Xms16g -Xmx40g" -it pinot-controller \
bin/pinot-admin.sh LaunchDataIngestionJob -jobSpecFile /config/insights_ch1_4_job.yaml
I'm not see a log from stdout - only when it falls.
Xmx40g (when it was 24g - job failed by out of heap space).
What is wrong ?madhulika
10/14/2025, 4:07 PMSonit Rathi
10/15/2025, 4:37 AMmadhulika
10/15/2025, 3:28 PMmg
10/16/2025, 9:00 AMConsumerConfig is flagging Pinot-specific properties as unknown, likely because they are wrappers around the core Kafka properties.
Are these warnings benign and expected, or does this indicate a potential issue with our configuration style?
I'm seeking recommendations on whether we can suppress these warnings or if there's an updated configuration pattern we should use to avoid passing these metadata properties to the Kafka client.
1. Controller WARN Logs (Example)
2025/10/16 08:20:15.667 WARN [ConsumerConfig] [pool-14-thread-9] The configuration 'stream.kafka.decoder.class.name' was supplied but isn't a known config.
2025/10/16 08:20:15.667 WARN [ConsumerConfig] [pool-14-thread-9] The configuration 'streamType' was supplied but isn't a known config.
2025/10/16 08:20:15.667 WARN [ConsumerConfig] [pool-14-thread-9] The configuration 'stream.kafka.consumer.type' was supplied but isn't a known config.
2025/10/16 08:20:15.667 WARN [ConsumerConfig] [pool-14-thread-9] The configuration 'stream.kafka.broker.list' was supplied but isn't a known config.
2025/10/16 08:20:15.667 WARN [ConsumerConfig] [pool-14-thread-9] The configuration 'stream.kafka.consumer.factory.class.name' was supplied but isn't a known config.
2025/10/16 08:20:15.667 WARN [ConsumerConfig] [pool-14-thread-9] The configuration 'stream.kafka.topic.name' was supplied but isn't a known config.
2. Relevant Table Config (streamConfigs)
{
"REALTIME": {
"tableName": "XYZ",
"tableType": "REALTIME",
"segmentsConfig": {...},
"tenants": {...},
"tableIndexConfig": {
"streamConfigs": {
"streamType": "kafka",
"stream.kafka.consumer.type": "LowLevel",
"stream.kafka.topic.name": "test.airlineStats",
"stream.kafka.broker.list": "kafka-bootstrap.kafka.svc:9093",
"stream.kafka.decoder.class.name": "org.apache.pinot.plugin.inputformat.json.JSONMessageDecoder",
"stream.kafka.consumer.factory.class.name": "org.apache.pinot.plugin.stream.kafka30.KafkaConsumerFactory",
"security.protocol": "SSL",
// SSL config continues...
},
"other-configs": ...
},
"metadata": {},
"other-configs": ...
}
}
Any guidance on best practices for stream config in recent Pinot versions, or a way to silence these specific ConsumerConfig warnings, would be highly appreciated!
Thanks!Tommaso Peresson
10/16/2025, 10:55 AMАндрей Морозов
10/17/2025, 11:43 AMMustafa Shams
10/20/2025, 7:02 PM