alireza dhb
02/26/2026, 9:40 PM{
"code": 400,
"error": "Could not create StreamConfig using the streamConfig map"
}
I tried changing the log level by swagger and log4j configs but i got no results. I'm running pinot using docker composeRANJITH KUMAR
02/27/2026, 12:55 AMfrancoisa
02/27/2026, 2:04 PMpinot.server.instance.realtime.max.parallel.segment.builds but not sure if my already closed (in a real-time table) segment are concerned about that ?prasanna
02/28/2026, 3:54 AMMonika reddy
03/03/2026, 9:54 PMnitheesh
03/09/2026, 6:59 AMpbuild-shaded-jar command. However I'm facing following error when I try to submit my pyspark code via spark submit utilitynitheesh
03/09/2026, 7:04 AMnitheesh
03/10/2026, 11:36 AMTraceback (most recent call last):
File "/Users/nitheeshkumar.prabakaran/frameworks/pinot4/pinot/pinot-connectors/pinot-spark-3-connector/target/test.py", line 56, in <module>
print(f"Total rows:{df.count()}")
File "/Users/nitheeshkumar.prabakaran/frameworks/spark/spark-3.5.8-bin-hadoop3/python/lib/pyspark.zip/pyspark/sql/dataframe.py", line 1239, in count
File "/Users/nitheeshkumar.prabakaran/frameworks/spark/spark-3.5.8-bin-hadoop3/python/lib/py4j-0.10.9.7-src.zip/py4j/java_gateway.py", line 1322, in __call__
File "/Users/nitheeshkumar.prabakaran/frameworks/spark/spark-3.5.8-bin-hadoop3/python/lib/pyspark.zip/pyspark/errors/exceptions/captured.py", line 179, in deco
File "/Users/nitheeshkumar.prabakaran/frameworks/spark/spark-3.5.8-bin-hadoop3/python/lib/py4j-0.10.9.7-src.zip/py4j/protocol.py", line 326, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o32.count.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 4 in stage 0.0 failed 1 times, most recent failure: Lost task 4.0 in stage 0.0 (TID 4) (10.191.22.199 executor driver): org.apache.pinot.connector.spark.common.PinotException: 10.250.19.128:7050(OFFLINE) could not respond the query
at org.apache.pinot.connector.spark.common.reader.PinotServerDataFetcher.fetchData(PinotServerDataFetcher.scala:146)
at org.apache.pinot.connector.spark.common.reader.PinotAbstractPartitionReader.getIteratorAndSource(PinotAbstractPartitionReader.scala:65)
at org.apache.pinot.connector.spark.common.reader.PinotAbstractPartitionReader.$init$(PinotAbstractPartitionReader.scala:39)
at org.apache.pinot.connector.spark.v3.datasource.PinotScan$$anon$1.<init>(PinotScan.scala:85)
at org.apache.pinot.connector.spark.v3.datasource.PinotScan.$anonfun$createReaderFactory$1(PinotScan.scala:85)
at org.apache.spark.sql.execution.datasources.v2.DataSourceRDD$$anon$1.advanceToNextIter(DataSourceRDD.scala:92)
at org.apache.spark.sql.execution.datasources.v2.DataSourceRDD$$anon$1.hasNext(DataSourceRDD.scala:71)
at org.apache.spark.InterruptibleIterator.hasNext(InterruptibleIterator.scala:37)
at scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)
at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage1.hashAgg_doAggregateWithoutKey_0$(Unknown Source)
at org.apache.spark.sql.catalyst.expressions.GeneratedClass$GeneratedIteratorForCodegenStage1.processNext(Unknown Source)
at org.apache.spark.sql.execution.BufferedRowIterator.hasNext(BufferedRowIterator.java:43)
at org.apache.spark.sql.execution.WholeStageCodegenEvaluatorFactory$WholeStageCodegenPartitionEvaluator$$anon$1.hasNext(WholeStageCodegenEvaluatorFactory.scala:43)
at scala.collection.Iterator$$anon$10.hasNext(Iterator.scala:460)
at org.apache.spark.shuffle.sort.BypassMergeSortShuffleWriter.write(BypassMergeSortShuffleWriter.java:140)
at org.apache.spark.shuffle.ShuffleWriteProcessor.write(ShuffleWriteProcessor.scala:59)
at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:104)
at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:54)
at org.apache.spark.TaskContext.runTaskWithListeners(TaskContext.scala:166)
at org.apache.spark.scheduler.Task.run(Task.scala:141)
at org.apache.spark.executor.Executor$TaskRunner.$anonfun$run$4(Executor.scala:621)
at org.apache.spark.util.SparkErrorUtils.tryWithSafeFinally(SparkErrorUtils.scala:64)
at org.apache.spark.util.SparkErrorUtils.tryWithSafeFinally$(SparkErrorUtils.scala:61)
at org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:94)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:624)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)piby
03/10/2026, 7:20 PM1971-01-01 UTC to 2071-01-01 UTC ?
We do have usecases where we only have one timeColumn in the data and its values are outside this range.suraj sheshadri
03/12/2026, 7:52 PM"ingestionConfig": {
"continueOnError": false,
"retryOnSegmentBuildPrecheckFailure": false,
"rowTimeValueCheck": false,
"segmentTimeValueCheck": true,
"batchIngestionConfig": {
"segmentIngestionType": "REFRESH",
"segmentIngestionFrequency": "DAILY",
"consistentDataPush": true
}
},조주일coco.nut
03/13/2026, 3:43 AMnitheesh
03/14/2026, 5:19 AMMannoj
03/15/2026, 7:15 AMSpecified EXTERNALVIEW pinot_test_REALTIME is not found!
There are other tables in prod that works from same kafka cluster, no new tables are working now. All ended up in this error or consuming_segment_info shows all servers as not responding, but they are working for others and are up.
Tried, rebalance, reload, pause and resume.. seems externalview i dont see this table at all.
Should we have to go for restarts?
am worried what if currently working table runs into similar issue and unrecoverable.. any thoughts here?nitheesh
03/16/2026, 10:14 AMHassan Ait Brik
03/17/2026, 1:16 PM"task": {
"taskTypeConfigsMap": {
"MergeRollupTask": {
"1day.mergeType": "concat",
"1day.bucketTimePeriod": "1d",
"1day.bufferTimePeriod": "1d",
"1day.maxNumRecordsPerSegment": "5000000",
"1day.maxNumRecordsPerTask": "50000000",
"1day.maxNumParallelBuckets": "5"
},
"PurgeTask": {
"schedule": "0 */10 * ? * *"
}
}
}
But when it runs, I get this error in the controller logs:
ERROR [PinotTaskManager] Failed to generate tasks for task type PurgeTask for table analyse_test_REALTIME
java.lang.NumberFormatException: Cannot parse null string
at java.base/java.lang.Long.parseLong(Long.java:674)
at java.base/java.lang.Long.valueOf(Long.java:1163)
at org.apache.pinot.plugin.minion.tasks.purge.PurgeTaskGenerator.generateTasks(PurgeTaskGenerator.java:121)
A few questions:
1. Is PurgeTask in Pinot 1.4.0 expected to support the “delete empty segments only” use case ?
2. Does it require additional config besides schedule?
3. Is this a known bug in PurgeTaskGenerator?
4. What is the recommended way today to automatically clean up totalDocs = 0 segments on a REALTIME non-upsert table?
Thanks !Mannoj
03/20/2026, 1:40 PM{
"tableName": "your_table_name_REALTIME",
"tableType": "REALTIME",
"segmentsConfig": {
"replication": "2",
"schemaName": "your_schema_name",
"replicasPerPartition": "2"
},
"tableIndexConfig": {
"loadMode": "MMAP"
},
"instanceAssignmentConfigMap": {
"REALTIME": {
"tagPoolConfig": {
"tag": "BM_AWARE_REALTIME",
"poolBased": false
},
"partitionSelector": "FD_AWARE_INSTANCE_PARTITION_SELECTOR",
"replicaGroupPartitionConfig": {
"replicaGroupBased": true,
"numReplicaGroups": 2,
"numPartitions": 1,
"numInstancesPerPartition": 100
}
}
},
"routing": {
"instanceSelectorType": "replicaGroup"
},
"upsertConfig": {
"mode": "NONE"
},
"metadata": {
"customConfigs": {}
}
}Soon
03/20/2026, 1:43 PMErwin van de Noort
03/23/2026, 1:40 PMSamuel Papin
03/23/2026, 5:18 PMWHERE json_extract_scalar(some_column, "$.some_field", 'String', 'null') = some_other_string_col
But I am not sure why. Is that a pinot limitation? the error messages are not descriptive
Caught exception while doing operator: class org.apache.pinot.core.operator.query.SelectionOnlyOperator on segment some_segment: For input string: "null"Monika reddy
03/23/2026, 7:10 PMVadzim Novikau
03/23/2026, 10:36 PMread_committed.
On low-volume topics (can be idle for ~30 minutes), during server restart Pinot’s startup readiness using the FreshnessBasedConsumptionStatusChecker gets stuck forever and never turns GOOD. Freshness-based check does the fallback to offset-based check, but it fails as well. The log repeats with a stable “+1” offset gap, log example in thread.
Manually consuming last hour of user messages shows last user record offset is 18895 (no record at 18896 visible to a normal consumer)
This blocks server startup readiness and cause restart loops.
It looks like it possibly caused by kafka transactional markers/control records at the tail that aren’t visible for consumer, but still advance the offset.
We fixed this issue using realtimeFreshnessIdleTimeoutMs, but as I understand it's not recommended to enable it in production environment.
Is there any better options to let Pinot skip transactional markers instead of enabling realtimeFreshnessIdleTimeoutMs?
Using enableRealtimeOffsetBasedConsumptionStatusChecker produced the same resultsHassan Ait Brik
03/27/2026, 11:08 AM{
"segment.realtime.numReplicas": "1",
"segment.creation.time": "1717253407093",
"segment.flush.threshold.size": "10000",
"segment.realtime.startOffset": "4317",
"segment.realtime.status": "IN_PROGRESS"
}
In the UI, the segment replica is shown as OFFLINE.
Example segment name:
news__4__1__20240601T1450Z
These segments are also not present in deep store.
Problem
When I trigger UpsertCompactMergeTask, Pinot skips these segments because their download URL is empty.
Controller logs:
WARN [UpsertCompactMergeTaskGenerator] Skipping segment news__4__1__20240601T1450Z for task as download url is empty
...
INFO [ServerSegmentMetadataReader] Retrieved validDocIds metadata for 0 segments from 1 server requests.
INFO [UpsertCompactMergeTaskGenerator] Finished generating 0 tasks configs for table: news_REALTIME
So the task cannot proceed because these segments are not considered mergeable.
My understanding
These look like old zombie consuming segments:
• still marked as IN_PROGRESS
• server state is OFFLINE
• no deep store artifact
• no download URL
• apparently never committed as completed segments
Because of that:
• UpsertCompactMergeTask skips them
• they cannot be reloaded from deep store
• they look like stale metadata / orphaned realtime segments
Questions
1. Is this a known issue in Pinot 1.4.0?
2. What is the recommended way to repair or clean up these old IN_PROGRESS + OFFLINE realtime segments when they no longer exist in deep store?
3. Should they be removed from metadata manually, or is there a supported repair workflow?
4. Is there any controller/server operation that should convert or clean up these stale segments automatically?
Thanks !francoisa
03/31/2026, 2:55 PMRaghavendra M
04/02/2026, 9:30 AMHassan Ait Brik
04/13/2026, 8:10 AMorg.apache.pinot.spi.utils.retry.RetriableOperationException:
org.apache.pinot.common.exception.HttpErrorStatusException:
Got error status code: 400 (Bad Request) with reason: ""
while sending request:
/segments?enableParallelPushProtection=true&tableName=success_board&tableType=REALTIME
at org.apache.pinot.spi.utils.retry.BaseRetryPolicy.attempt(BaseRetryPolicy.java:63)
at org.apache.pinot.plugin.minion.tasks.SegmentConversionUtils.uploadSegment(SegmentConversionUtils.java:140)
at org.apache.pinot.plugin.minion.tasks.BaseMultipleSegmentsConversionExecutor.pushSegment(BaseMultipleSegmentsConversionExecutor.java:538)
at org.apache.pinot.plugin.minion.tasks.BaseMultipleSegmentsConversionExecutor.executeTask(BaseMultipleSegmentsConversionExecutor.java:316)
at org.apache.pinot.plugin.minion.tasks.BaseMultipleSegmentsConversionExecutor.executeTask(BaseMultipleSegmentsConversionExecutor.java:84)
This looks similar to another UpsertCompactMergeTask failure I had before:
• task generation succeeds
• source segments seem valid
• failure happens when uploading the merged segment back to the controller
• the request includes enableParallelPushProtection=true
Questions:
1. What are the common reasons for the controller to return 400 Bad Request on /segments?enableParallelPushProtection=true... for UpsertCompactMergeTask ?
2. Does this usually indicate:
• parallel push conflict,
• segment lineage changed while the task was running,
• or another controller-side validation failure ?
3. Is there a recommended way to debug the exact controller-side reason when the response body is empty ?
4. Are there recommended limits for maxNumSegmentsPerTask / maxNumRecordsPerTask to reduce the chance of this happening?
Thanks!Raghavendra M
04/14/2026, 6:51 AMBadhusha Muhammed
04/15/2026, 9:14 AMstreamConfigMaps Pinot table is only consuming from the first config in the list
"streamConfigMaps" : [
{ "stream.kafka.topic.name": "topic_1", ... },
{ "stream.kafka.topic.name": "topic_2", ... }
]
This result in consuming only from topic_1
When looking at log , i can see that, the topic_partition that is trying to consume is going with Segment Partition ID (In this case the second topic segment is created with largest partition ID - 10000, https://github.com/apache/pinot/issues/17260)
Log for correctly consuming topic
2026/04/15 02:19:58.163 INFO [KafkaConsumer] [multi_topic_test_1__0__0__20260414T2017Z] [Consumer clientId=multi_topic_test_1_REALTIME-mulit_topic_test_2-0, groupId=null] Seeking to offset 6 for partition mulit_topic_test_2-0
Seeking to offset 6 for partition mulit_topic_test_2-0 Correct
Log for not consuming topic
2026/04/15 02:19:56.000 INFO [KafkaConsumer] [multi_topic_test_1__10000__0__20260414T2017Z] [Consumer clientId=multi_topic_test_1_REALTIME-mulit_topic_test_1-0, groupId=null] Seeking to offset 0 for partition mulit_topic_test_1-10000
Seeking to offset 0 for partition mulit_topic_test_1-10000 ????????
Is this is a bug ..? Partition part of topic_partition is picking from Segment Partition ID ...?Badhusha Muhammed
04/15/2026, 9:14 AMRicha Kumari
04/15/2026, 1:55 PMRicha Kumari
04/16/2026, 9:55 AM