Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] StarRocks can't read update_time statistics from Paimon tables in 3.4.1 #56852

Open
fresh-borzoni opened this issue Mar 12, 2025 · 2 comments
Labels
type/bug Something isn't working

Comments

@fresh-borzoni
Copy link

fresh-borzoni commented Mar 12, 2025

Steps to reproduce the behavior (Required)

FlinkSQL Paimon table definition:

CREATE TABLE IF NOT EXISTS customers (
    customer_id INT,
    name STRING,
    email STRING,
    created_at TIMESTAMP(3),
    PRIMARY KEY (customer_id) NOT ENFORCED
) PARTITIONED BY (created_at)
WITH (
    'changelog-producer' = 'lookup',
    'bucket' = '-1',
    'file.format' = 'parquet',
    'deletion-vectors.enabled' = 'true',
    'merge-engine' = 'deduplicate',
    'partition.transform.created_at' = 'day'
);

StarRocks:

DROP CATALOG IF EXISTS paimon_catalog;

CREATE EXTERNAL CATALOG paimon_catalog
PROPERTIES
(
  "type" = "paimon",
  "paimon.catalog.type" = "filesystem",
  "paimon.catalog.warehouse" = "s3://warehouse/flink",
  "aws.s3.enable_path_style_access" = "true",
  "aws.s3.endpoint" = "http://storage:9000",
  "aws.s3.access_key" = "admin",
  "aws.s3.secret_key" = "password",
  "aws.s3.connection.ssl.enabled" = "false",
  "aws.s3.path.style.access" = "true",
  "aws.s3.region" = "us-east-1",
  "paimon.schema.default.long-as-timestamp" = "true",
  "paimon.timestamp.precision" = "3"
);
USE paimon_catalog.cdc_data;

SELECT COUNT(*) FROM customers;
^C^C -- query aborted
ERROR 1064 (HY000): killed manually: KILL QUERY 10
SELECT COUNT(*) FROM customers;
ERROR 5024 (HY000): Query reached its timeout of 60 seconds, please increase the 'query_timeout' session variable and retry
SELECT COUNT(*) FROM customers;
+----------+
| count(*) |
+----------+
|       71 |
+----------+
1 row in set (43.28 sec)


Expected behavior (Required)

Query works and returns fast, no errors in FE logs.

Real behavior (Required)

First query hangs for 3-4 minutes and there are a lot of errors in FE logs:

2025-03-12 18:33:56.801Z ERROR (connector-trigger-analyze-pool-0|324) [PaimonMetadata.getTableCreateTime():365] Failed to get update_time of paimon table cdc_data.customers.
java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap')
	at org.apache.paimon.table.system.SchemasTable$SchemasRead.handleLeafPredicate(SchemasTable.java:215) ~[paimon-bundle-1.0.1.jar:1.0.1]
	at org.apache.paimon.table.system.SchemasTable$SchemasRead.withFilter(SchemasTable.java:204) ~[paimon-bundle-1.0.1.jar:1.0.1]
	at org.apache.paimon.table.source.ReadBuilderImpl.newRead(ReadBuilderImpl.java:175) ~[paimon-bundle-1.0.1.jar:1.0.1]
	at com.starrocks.connector.paimon.PaimonMetadata.getTableCreateTime(PaimonMetadata.java:353) ~[starrocks-fe.jar:?]
	at com.starrocks.connector.paimon.PaimonMetadata.getTable(PaimonMetadata.java:228) ~[starrocks-fe.jar:?]
	at com.starrocks.connector.CatalogConnectorMetadata.getTable(CatalogConnectorMetadata.java:150) ~[starrocks-fe.jar:?]
	at com.starrocks.server.MetadataMgr.lambda$getTable$5(MetadataMgr.java:511) ~[starrocks-fe.jar:?]
	at java.util.Optional.map(Optional.java:265) ~[?:?]
	at com.starrocks.server.MetadataMgr.getTable(MetadataMgr.java:511) ~[starrocks-fe.jar:?]
	at com.starrocks.sql.analyzer.QueryAnalyzer.resolveTable(QueryAnalyzer.java:1426) ~[starrocks-fe.jar:?]
	at com.starrocks.sql.analyzer.QueryAnalyzer$Visitor.resolveTableRef(QueryAnalyzer.java:492) ~[starrocks-fe.jar:?]
	at com.starrocks.sql.analyzer.QueryAnalyzer$Visitor.visitSelect(QueryAnalyzer.java:366) ~[starrocks-fe.jar:?]
	at com.starrocks.sql.analyzer.QueryAnalyzer$Visitor.visitSelect(QueryAnalyzer.java:286) ~[starrocks-fe.jar:?]
	at com.starrocks.sql.ast.SelectRelation.accept(SelectRelation.java:232) ~[starrocks-fe.jar:?]
	at com.starrocks.sql.analyzer.QueryAnalyzer$Visitor.process(QueryAnalyzer.java:291) ~[starrocks-fe.jar:?]
	at com.starrocks.sql.analyzer.QueryAnalyzer$Visitor.visitQueryRelation(QueryAnalyzer.java:306) ~[starrocks-fe.jar:?]
	at com.starrocks.sql.analyzer.QueryAnalyzer$Visitor.visitQueryStatement(QueryAnalyzer.java:296) ~[starrocks-fe.jar:?]
	at com.starrocks.sql.analyzer.QueryAnalyzer$Visitor.visitQueryStatement(QueryAnalyzer.java:286) ~[starrocks-fe.jar:?]
	at com.starrocks.sql.ast.QueryStatement.accept(QueryStatement.java:72) ~[starrocks-fe.jar:?]
	at com.starrocks.sql.analyzer.QueryAnalyzer$Visitor.process(QueryAnalyzer.java:291) ~[starrocks-fe.jar:?]
	at com.starrocks.sql.analyzer.QueryAnalyzer.analyze(QueryAnalyzer.java:124) ~[starrocks-fe.jar:?]
	at com.starrocks.sql.analyzer.Analyzer$AnalyzerVisitor.visitQueryStatement(Analyzer.java:447) ~[starrocks-fe.jar:?]
	at com.starrocks.sql.analyzer.Analyzer$AnalyzerVisitor.visitQueryStatement(Analyzer.java:177) ~[starrocks-fe.jar:?]
	at com.starrocks.sql.ast.QueryStatement.accept(QueryStatement.java:72) ~[starrocks-fe.jar:?]
	at com.starrocks.sql.ast.AstVisitor.visit(AstVisitor.java:84) ~[starrocks-fe.jar:?]
	at com.starrocks.sql.analyzer.Analyzer.analyze(Analyzer.java:174) ~[starrocks-fe.jar:?]
	at com.starrocks.sql.StatementPlanner.analyzeStatement(StatementPlanner.java:198) ~[starrocks-fe.jar:?]
	at com.starrocks.sql.StatementPlanner.plan(StatementPlanner.java:119) ~[starrocks-fe.jar:?]
	at com.starrocks.statistic.StatisticExecutor.executeDQL(StatisticExecutor.java:516) ~[starrocks-fe.jar:?]
	at com.starrocks.statistic.StatisticExecutor.executeStatisticDQL(StatisticExecutor.java:473) ~[starrocks-fe.jar:?]
	at com.starrocks.statistic.ExternalFullStatisticsCollectJob.collectStatisticSync(ExternalFullStatisticsCollectJob.java:245) ~[starrocks-fe.jar:?]
	at com.starrocks.statistic.ExternalFullStatisticsCollectJob.collect(ExternalFullStatisticsCollectJob.java:123) ~[starrocks-fe.jar:?]
	at com.starrocks.statistic.StatisticExecutor.collectStatistics(StatisticExecutor.java:360) ~[starrocks-fe.jar:?]
	at com.starrocks.connector.statistics.ConnectorAnalyzeTask.executeAnalyze(ConnectorAnalyzeTask.java:183) ~[starrocks-fe.jar:?]
	at com.starrocks.connector.statistics.ConnectorAnalyzeTask.run(ConnectorAnalyzeTask.java:144) ~[starrocks-fe.jar:?]
	at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
	at java.lang.Thread.run(Thread.java:829) ~[?:?]

StarRocks version (Required)

3.4.1

@fresh-borzoni fresh-borzoni added the type/bug Something isn't working label Mar 12, 2025
@fresh-borzoni fresh-borzoni changed the title [BUG] Paimon can't read update_time statistics from Paimon tables in 3.4.0+ [BUG] StarRocks can't read update_time statistics from Paimon tables in 3.4.0+ Mar 12, 2025
@macdoor
Copy link

macdoor commented Mar 13, 2025

I also encountered this issue. #56869

@fresh-borzoni
Copy link
Author

The interesting part, I just tried 3.4.0 version and I received this error:

2025-03-13 09:57:51.083Z WARN (Connect-Scheduler-Check-Timer-0|13) [ConnectScheduler$TimeoutChecker.run():121] Timeout checker exception, Internal error : null
java.lang.NullPointerException: null
	at com.starrocks.sql.ast.StatementBase.getTimeout(StatementBase.java:175) ~[starrocks-fe.jar:?]
	at com.starrocks.qe.StmtExecutor.getExecTimeout(StmtExecutor.java:489) ~[starrocks-fe.jar:?]
	at com.starrocks.qe.ConnectContext.getExecTimeout(ConnectContext.java:981) ~[starrocks-fe.jar:?]
	at com.starrocks.qe.ConnectContext.checkTimeout(ConnectContext.java:1019) ~[starrocks-fe.jar:?]
	at com.starrocks.qe.ConnectScheduler$TimeoutChecker.run(ConnectScheduler.java:108) ~[starrocks-fe.jar:?]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) ~[?:?]
	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305) ~[?:?]
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
	at java.lang.Thread.run(Thread.java:829) ~[?:?]

it's fixed by
SET query_timeout = 300;

and then query isn't hanging anymore, weird behaviour as well.

@fresh-borzoni fresh-borzoni changed the title [BUG] StarRocks can't read update_time statistics from Paimon tables in 3.4.0+ [BUG] StarRocks can't read update_time statistics from Paimon tables in 3.4.1 Mar 13, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type/bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants