Siva Chaitanya Vasiboyina
06/30/2026, 3:05 PM2026-06-30 14:47:32.048Z ERROR (publish-task-749|5021) [PublishVersionDaemon.publishPartitionBatch():690] Fail to publish partition 8904723 of txnIds [5035590, 5035602, 5035634, 5035637, 5035657, 5035697, 5035717, 5035737, 5035776, 5035781, 5035817, 5035838, 5035848, 5035859, 5035861, 5035900, 5035918, 5035926, 5035929, 5035960, 5035972]:
com.starrocks.rpc.RpcException: Fail to publish version for tablets:[], error msg: link rpc channel failed, host: starrocks-cn-1.starrocks-cn-search.trino.svc.cluster.local
at com.starrocks.lake.Utils.sendAggregatePublishVersionRequest(Utils.java:347) ~[starrocks-fe.jar:?]
at com.starrocks.lake.Utils.aggregatePublishVersion(Utils.java:362) ~[starrocks-fe.jar:?]
at com.starrocks.transaction.PublishVersionDaemon.publishPartitionBatch(PublishVersionDaemon.java:676) ~[starrocks-fe.jar:?]
at com.starrocks.transaction.PublishVersionDaemon.lambda$publishLakeTransactionBatchAsync$15(PublishVersionDaemon.java:818) ~[starrocks-fe.jar:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
at java.lang.Thread.run(Thread.java:840) ~[?:?]Rocky
06/30/2026, 3:05 PMcom.starrocks.rpc.RpcException: Fail to publish version for tablets:[], error msg: link rpc channel failed indicates a network connectivity failure between the Front End (FE) and a Compute Node (CN) in your StarRocks Shared-data (Lake) cluster.
Specifically, the FE failed to establish or maintain a bRPC (the internal communication protocol) connection to the host starrocks-cn-1.starrocks-cn-search.trino.svc.cluster.local while attempting to batch-publish transaction versions.
Common Causes
1. CN Node Unavailability: The pod starrocks-cn-1 may have crashed, restarted, or is currently in a NotReady state.
2. DNS or Network Issues: The FE cannot resolve or reach the CN's internal Kubernetes DNS name.
3. Resource Exhaustion: If the CN is under heavy load (high CPU/Memory), it may stop responding to RPC heartbeats, causing the FE to drop the "link."
4. High Concurrency: The FE is attempting to publish too many versions simultaneously, exceeding the RPC connection or thread limits.
Recommended Troubleshooting Steps
1. Check CN Pod Health
Verify the status of the specific CN node mentioned in the error:
bash
kubectl get pods -n <your-namespace> | grep starrocks-cn-1
Check the logs of that CN pod for any crashes or OOM (Out of Memory) errors:
bash
kubectl logs starrocks-cn-1 -n <your-namespace> --tail=100
2. Verify Network Connectivity
Exec into your FE pod and try to reach the CN on its RPC port (default is 9060):
bash
# Inside FE pod
nc -zv starrocks-cn-1.starrocks-cn-search.trino.svc.cluster.local 9060
If this fails, there is a network policy, DNS issue, or the CN process is not listening.
3. Review FE Configuration
In Shared-data mode, StarRocks batches publish tasks. You can check these parameters in your FE (via admin show frontend config;):
* lake_publish_version_max_threads: (Default 512) The maximum threads for publishing. If your system is extremely busy, you may need to monitor FE thread usage.
* lake_enable_batch_publish_version: (Default true) This is enabled in your logs (publishPartitionBatch). It reduces RPCs by grouping transactions. If you suspect batching is causing timeouts due to size, you can temporarily disable it to see if single-transaction publishes succeed, though this is usually less efficient.
4. Check for Version Accumulation
If you see multiple partition errors, your cluster might be falling behind on publishing. Check if there are many "Visible" but not yet "Finished" transactions:
sql
SHOW BACKENDS; -- Check if any CNs are "Alive" = 'false'
SHOW PROC '/transactions'; -- Check for a backlog of transactions
If the CN pod is healthy and the network is fine, restarting the FE (or the leader FE) can sometimes clear stale RPC channels, but prioritize checking the CN logs first to ensure it isn't crashing under load.
References
• faq/loading/Loading_faq.md
• faq/Deploy_faq.md
• administration/management/BE_configuration.md
• faq/operation_maintenance_faq.md
• faq/loading/Routine_load_faq.md
• administration/Meta_recovery.mdSiva Chaitanya Vasiboyina
06/30/2026, 3:10 PM06-30 15:09:29.289Z ERROR (publish-task-184|4321) [PublishVersionDaemon.publishPartitionBatch():690] Fail to publish partition 8902872 of txnIds [5035590, 5035634, 5035657, 5035717, 5035817, 5035838, 5035859, 5035926, 5035929, 5035972]:
com.starrocks.rpc.RpcException: Fail to publish version for tablets:[], error msg: link rpc channel failed, host: starrocks-cn-1.starrocks-cn-search.trino.svc.cluster.local
at com.starrocks.lake.Utils.sendAggregatePublishVersionRequest(Utils.java:347) ~[starrocks-fe.jar:?]
at com.starrocks.lake.Utils.aggregatePublishVersion(Utils.java:362) ~[starrocks-fe.jar:?]
at com.starrocks.transaction.PublishVersionDaemon.publishPartitionBatch(PublishVersionDaemon.java:676) ~[starrocks-fe.jar:?]
at com.starrocks.transaction.PublishVersionDaemon.lambda$publishLakeTransactionBatchAsync$15(PublishVersionDaemon.java:818) ~[starrocks-fe.jar:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
at java.lang.Thread.run(Thread.java:840) ~[?:?]
2026-06-30 15:09:29.521Z ERROR (publish-task-887|5188) [PublishVersionDaemon.publishPartitionBatch():690] Fail to publish partition 8901848 of txnIds [5035590, 5035602, 5035634, 5035637, 5035657, 5035697, 5035717, 5035737, 5035776, 5035781, 5035817, 5035838, 5035848, 5035859, 5035861, 5035900, 5035918, 5035926, 5035929, 5035960, 5035972]:
com.starrocks.rpc.RpcException: Fail to publish version for tablets:[], error msg: link rpc channel failed, host: starrocks-cn-1.starrocks-cn-search.trino.svc.cluster.local
at com.starrocks.lake.Utils.sendAggregatePublishVersionRequest(Utils.java:347) ~[starrocks-fe.jar:?]
at com.starrocks.lake.Utils.aggregatePublishVersion(Utils.java:362) ~[starrocks-fe.jar:?]
at com.starrocks.transaction.PublishVersionDaemon.publishPartitionBatch(PublishVersionDaemon.java:676) ~[starrocks-fe.jar:?]
at com.starrocks.transaction.PublishVersionDaemon.lambda$publishLakeTransactionBatchAsync$15(PublishVersionDaemon.java:818) ~[starrocks-fe.jar:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
at java.lang.Thread.run(Thread.java:840) ~[?:?]
2026-06-30 15:09:31.501Z ERROR (publish-task-113|4234) [PublishVersionDaemon.publishPartitionBatch():690] Fail to publish partition 8899813 of txnIds [5035590, 5035602, 5035634, 5035637, 5035657, 5035697, 5035717, 5035737, 5035776, 5035781, 5035817, 5035838, 5035848, 5035859, 5035861, 5035900, 5035918, 5035926, 5035929, 5035960, 5035972]:
com.starrocks.rpc.RpcException: Fail to publish version for tablets:[], error msg: link rpc channel failed, host: starrocks-cn-2.starrocks-cn-search.trino.svc.cluster.local
at com.starrocks.lake.Utils.sendAggregatePublishVersionRequest(Utils.java:347) ~[starrocks-fe.jar:?]
at com.starrocks.lake.Utils.aggregatePublishVersion(Utils.java:362) ~[starrocks-fe.jar:?]
at com.starrocks.transaction.PublishVersionDaemon.publishPartitionBatch(PublishVersionDaemon.java:676) ~[starrocks-fe.jar:?]
at com.starrocks.transaction.PublishVersionDaemon.lambda$publishLakeTransactionBatchAsync$15(PublishVersionDaemon.java:818) ~[starrocks-fe.jar:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
at java.lang.Thread.run(Thread.java:840) ~[?:?]
2026-06-30 15:09:32.009Z ERROR (publish-task-917|5220) [PublishVersionDaemon.publishPartitionBatch():690] Fail to publish partition 8904932 of txnIds [5035590, 5035602, 5035634, 5035637, 5035657, 5035697, 5035717, 5035737, 5035776, 5035781, 5035817, 5035838, 5035848, 5035859, 5035861, 5035900, 5035918, 5035926, 5035929, 5035960, 5035972]:
com.starrocks.rpc.RpcException: Fail to publish version for tablets:[], error msg: link rpc channel failed, host: starrocks-cn-2.starrocks-cn-search.trino.svc.cluster.local
at com.starrocks.lake.Utils.sendAggregatePublishVersionRequest(Utils.java:347) ~[starrocks-fe.jar:?]
at com.starrocks.lake.Utils.aggregatePublishVersion(Utils.java:362) ~[starrocks-fe.jar:?]
at com.starrocks.transaction.PublishVersionDaemon.publishPartitionBatch(PublishVersionDaemon.java:676) ~[starrocks-fe.jar:?]
at com.starrocks.transaction.PublishVersionDaemon.lambda$publishLakeTransactionBatchAsync$15(PublishVersionDaemon.java:818) ~[starrocks-fe.jar:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
at java.lang.Thread.run(Thread.java:840) ~[?:?]Rocky
06/30/2026, 3:11 PMstarrocks-cn-1, starrocks-cn-2), the "link rpc channel failed" error suggests a systemic communication problem between the FE and the CNs.
In StarRocks Shared-data (Lake) mode, the FE batches multiple transaction publishes into a single RPC call to optimize performance. Your logs show batches of 21 transactions at once, which might be exceeding RPC limits or timing out.
Recommended Steps
1. Reduce or Disable Publish Batching
As a primary diagnostic step, disable the batch publishing feature to see if single-transaction publishes succeed. If the "link" failure is caused by a payload that is too large or complex for the network/RPC buffer, this will bypass it.
Run these on your Leader FE:
sql
-- Disable batching temporarily
ADMIN SET FRONTEND CONFIG ("lake_enable_batch_publish_version" = "false");
-- OR, keep batching but reduce the max versions per batch (default is 10)
ADMIN SET FRONTEND CONFIG ("lake_batch_publish_max_version_num" = "5");
If this resolves the error, your network or CNs were likely struggling with the large batch payloads.
2. Check for Service Mesh (Istio/Linkerd)
If you are running in Kubernetes with a service mesh like Istio:
* StarRocks uses bRPC for internal communication. bRPC connections are long-lived.
* Service meshes sometimes terminate idle or long-running bRPC/HTTP2 connections aggressively, leading to "link rpc channel failed."
* Action: Try bypassing the sidecar for StarRocks internal ports (9060 for CN/BE) or disable the mesh for the StarRocks namespace to see if the errors stop.
3. Verify DNS and MTU
The error uses a very specific FQDN: starrocks-cn-1.starrocks-cn-search.trino.svc.cluster.local.
* DNS Latency: If your K8s DNS (CoreDNS) is slow, the FE might fail to "link" within the RPC connection timeout.
* MTU Issues: If you are using a VPN or a specific CNI (like Calico/Cilium) with a lower MTU (e.g., 1450), large RPC packets (common in batch publishes) might be dropped.
* Test: Try to ping the CN from the FE pod with a large packet size:
ping -s 1472 starrocks-cn-1.starrocks-cn-search.trino.svc.cluster.local
4. CN Side Resource Check
If the CN is under extreme CPU pressure or is performing heavy I/O (e.g., during high-concurrency ingestion), the bRPC worker threads might be saturated, causing it to drop new connection attempts.
* Check the CN logs (<http://be.INFO|be.INFO>) for messages like Reached the maximum number of connections or brpc related warnings.
* Check if the CN pods are hitting their CPU Limits in Kubernetes (kubectl top pods).
5. Check Transaction Backlog
The fact that it's trying to publish 21 transactions at once for a single partition suggests a backlog.
sql
-- Check if transactions are accumulating in "VISIBLE" state but not finishing
SHOW PROC '/transactions';
Summary of action:
If you need an immediate fix to get data moving, set lake_enable_batch_publish_version = false. If the error continues even with single-transaction publishes, it is almost certainly a Kubernetes network/DNS issue between the pods.
References
• administration/management/FE_configuration.md
• administration/management/BE_configuration.md
• knowledge/usage/load/shared_data_batch_ingestion.mdSiva Chaitanya Vasiboyina
06/30/2026, 3:15 PM2026-06-30 15:13:12.474Z ERROR (publish-task-890|5192) [PublishVersionDaemon.publishPartitionBatch():690] Fail to publish partition 8904984 of txnIds [5035590, 5035602, 5035634, 5035637, 5035657, 5035697, 5035717, 5035737, 5035776, 5035781, 5035817, 5035838, 5035848, 5035859, 5035861, 5035900, 5035918, 5035926, 5035929, 5035960, 5035972]:
com.starrocks.rpc.RpcException: Fail to publish version for tablets:[], error msg: link rpc channel failed, host: starrocks-cn-2.starrocks-cn-search.trino.svc.cluster.local
at com.starrocks.lake.Utils.sendAggregatePublishVersionRequest(Utils.java:347) ~[starrocks-fe.jar:?]
at com.starrocks.lake.Utils.aggregatePublishVersion(Utils.java:362) ~[starrocks-fe.jar:?]
at com.starrocks.transaction.PublishVersionDaemon.publishPartitionBatch(PublishVersionDaemon.java:676) ~[starrocks-fe.jar:?]
at com.starrocks.transaction.PublishVersionDaemon.lambda$publishLakeTransactionBatchAsync$15(PublishVersionDaemon.java:818) ~[starrocks-fe.jar:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
at java.lang.Thread.run(Thread.java:840) ~[?:?]
2026-06-30 15:13:13.642Z ERROR (publish-task-474|4692) [PublishVersionDaemon.publishPartitionBatch():690] Fail to publish partition 8902949 of txnIds [5035590, 5035602, 5035634, 5035637, 5035657, 5035697, 5035717, 5035737, 5035776, 5035781, 5035817, 5035838, 5035848, 5035859, 5035861, 5035900, 5035918, 5035926, 5035929, 5035960, 5035972, 5036348]:
com.starrocks.rpc.RpcException: Fail to publish version for tablets:[], error msg: link rpc channel failed, host: starrocks-cn-0.starrocks-cn-search.trino.svc.cluster.local
at com.starrocks.lake.Utils.sendAggregatePublishVersionRequest(Utils.java:347) ~[starrocks-fe.jar:?]
at com.starrocks.lake.Utils.aggregatePublishVersion(Utils.java:362) ~[starrocks-fe.jar:?]
at com.starrocks.transaction.PublishVersionDaemon.publishPartitionBatch(PublishVersionDaemon.java:676) ~[starrocks-fe.jar:?]
at com.starrocks.transaction.PublishVersionDaemon.lambda$publishLakeTransactionBatchAsync$15(PublishVersionDaemon.java:818) ~[starrocks-fe.jar:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
at java.lang.Thread.run(Thread.java:840) ~[?:?]
2026-06-30 15:13:13.912Z ERROR (publish-task-416|4619) [PublishVersionDaemon.publishPartitionBatch():690] Fail to publish partition 8899877 of txnIds [5035590, 5035602, 5035634, 5035637, 5035657, 5035697, 5035717, 5035737, 5035776, 5035781, 5035817, 5035838, 5035848, 5035859, 5035861, 5035900, 5035918, 5035926, 5035929, 5035960, 5035972]:
com.starrocks.rpc.RpcException: Fail to publish version for tablets:[], error msg: link rpc channel failed, host: starrocks-cn-0.starrocks-cn-search.trino.svc.cluster.local
at com.starrocks.lake.Utils.sendAggregatePublishVersionRequest(Utils.java:347) ~[starrocks-fe.jar:?]
at com.starrocks.lake.Utils.aggregatePublishVersion(Utils.java:362) ~[starrocks-fe.jar:?]
at com.starrocks.transaction.PublishVersionDaemon.publishPartitionBatch(PublishVersionDaemon.java:676) ~[starrocks-fe.jar:?]
at com.starrocks.transaction.PublishVersionDaemon.lambda$publishLakeTransactionBatchAsync$15(PublishVersionDaemon.java:818) ~[starrocks-fe.jar:?]
at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
Also, CPU usage of my FE pods is 0.36 whereas restricted is at 12Rocky
06/30/2026, 3:16 PMcn-0, cn-1, cn-2) and continues to attempt publishing large batches (21+ transactions) suggests that the communication layer is failing to handle the requests.
Since your FE CPU is low and you've already tried restarting, the issue is likely at the Networking/RPC layer or Configuration synchronization.
1. Check Backend/CN Registration
Run the following command in your StarRocks SQL client:
sql
SHOW COMPUTE NODES;
-- or if you use standard BEs
SHOW BACKENDS;
* Check the IP and Hostname columns: Do they match the starrocks-cn-X.starrocks-cn-search... addresses in the error?
* Check Alive status: If they are false, the FE has already marked them as unreachable.
* Check BrpcPort: Ensure it is actually 9060 (the default). If your Kubernetes service or container uses a different port, the "link" will fail.
2. Force-Disable Batching on the LEADER
The logs still show PublishVersionDaemon.publishPartitionBatch and a list of 21 txnIds. This means batching is still active. In a Shared-data cluster, if one transaction in a batch causes a connection glitch, the whole batch fails and retries, creating a loop.
Please verify you are connected to the Leader FE and run:
sql
ADMIN SET FRONTEND CONFIG ("lake_enable_batch_publish_version" = "false");
-- Also reduce the timeout to fail fast and retry individual txns
ADMIN SET FRONTEND CONFIG ("lake_publish_version_timeout_ms" = "10000");
Wait 30 seconds and check the fe.log. The log lines should change from publishPartitionBatch to publishVersionForLakeTable (singular transaction).
3. Kubernetes Network Policy / MTU
If you are using a CNI like Calico or Cilium, or if you are on a Cloud Provider (AWS/GCP/Azure) with specific MTU settings:
* Large RPC packets (which happen when you batch 20+ transactions) can exceed the MTU and get dropped without an ICMP response, leading to a "link failure."
* Test: From the FE pod, try to reach a CN using a large ping packet:
bash
ping -s 1400 starrocks-cn-0.starrocks-cn-search.trino.svc.cluster.local
If this fails but a small ping (ping -s 64 ...) succeeds, you have an MTU mismatch in your cluster network.
4. Check for brpc Errors in CN Logs
Even though the FE says "link failed," the CN might be rejecting the connection. Check the <http://be.INFO|be.INFO> (or <http://cn.INFO|cn.INFO>) logs on one of the CN pods:
* Look for: too many open files
* Look for: Reached max connection
* Look for: brpc or ServiceThreadPool exhaustion.
5. Check "trino.svc" Hostname Resolution
The hostname starrocks-cn-0.starrocks-cn-search.trino.svc.cluster.local is slightly unusual (referencing a trino service/namespace).
* Ensure that from the FE pod, nslookup or getent hosts correctly resolves that address to the Pod IP, not the Service ClusterIP. StarRocks requires direct Pod-to-Pod communication for bRPC.
* If your fe.conf or cn.conf has BE_IP or priority_networks set incorrectly, the node might be registering an address that is not routable from the FE.
Next Step Recommendation:
If setting lake_enable_batch_publish_version = false still results in logs showing publishPartitionBatch with multiple IDs, the configuration didn't stick. Use ADMIN SHOW FRONTEND CONFIG LIKE 'lake%'; to confirm the setting.
References
• administration/management/FE_configuration.md
• faq/loading/Loading_faq.md
• faq/shared_data_faq.md
• faq/Deploy_faq.mdSiva Chaitanya Vasiboyina
06/30/2026, 3:18 PMBrpcPort: Ensure it is actually 9060 (the default). If your Kubernetes service or container uses a different port, the "link" will fail.
Mine is 9060 - how do we check if that's what it is supposed to be?Rocky
06/30/2026, 3:18 PMbe_port): Default is 9060. This is used for basic control tasks and heartbeat. If SHOW COMPUTE NODES says the node is "Alive," the FE successfully connected to 9060.
* bRPC Port (brpc_port): Default is 8060. This is used for the Lake Service (publish version) and data transmission. The "link rpc channel failed" error refers to this port.
2. How to check what the FE is using
Run this command in your SQL client:
sql
SHOW COMPUTE NODES\G
-- or
SHOW BACKENDS\G
Look for the following columns:
* IP / Host: Ensure this is the actual Pod IP or a resolvable internal DNS name.
* BrpcPort: This should be 8060 by default. If this says 9060, your configuration is wrong (you cannot run bRPC and Thrift on the same port).
3. Verify on the CN Pod
Exec into one of your CN pods and check if the bRPC port is actually listening:
bash
# Check if 8060 is listening
netstat -tunlp | grep 8060
# Check your configuration file
grep "brpc_port" /path/to/starrocks/conf/cn.conf
_If brpc_port is not set in cn.conf, it defaults to 8060._
4. Kubernetes Service Check
Since you are using Kubernetes (trino.svc.cluster.local), check your Service and Pod definitions:
* Service: Ensure your Kubernetes Service (likely named starrocks-cn-search) has port 8060 exposed.
* Pod: Ensure the container has port 8060 opened.
* Network Policy: If you have a NetworkPolicy, it must allow traffic from the FE pod to the CN pods on port 8060.
Why did it work before?
If this was working and suddenly stopped:
1. Port Exhaustion: If there are too many concurrent connections, the CN might stop accepting new bRPC "links."
2. FQDN Issues: The FE is trying to connect to starrocks-cn-1.starrocks-cn-search.trino.svc.cluster.local. If the Kubernetes DNS resolution is slow or failing, the bRPC client will fail to "link" the channel before the timeout.
Recommendation:
Try to telnet or nc from the FE pod to a CN pod specifically on port 8060:
bash
nc -zv starrocks-cn-2.starrocks-cn-search.trino.svc.cluster.local 8060
If this times out or is refused, but port 9060 works, you have found the cause: the bRPC port is blocked or not running.
References
• deployment/environment_configurations.md
• administration/management/BE_configuration.md
• faq/Deploy_faq.md
• administration/management/FE_configuration.md
• faq/loading/Loading_faq.md
References
• deployment/environment_configurations.md
• administration/management/BE_configuration.md
• administration/management/FE_configuration.md
• faq/Deploy_faq.mdSiva Chaitanya Vasiboyina
06/30/2026, 3:20 PMRocky
06/30/2026, 3:21 PMpublishPartitionBatch with 21 txnIds means the command to disable batching did not take effect. In StarRocks, configuration changes must be applied to the Leader FE.
If you run the command on a Follower FE, it will appear to succeed in the console but won't change the cluster's behavior.
1. Verify and Fix Config (Leader FE)
Check which FE is the leader and apply the change there:
1. Run SHOW FRONTENDS; and find the one where IsMaster (or IsLeader) is true.
2. Connect your SQL client directly to that IP/Host.
3. Run the commands again:
sql
ADMIN SET FRONTEND CONFIG ("lake_enable_batch_publish_version" = "false");
ADMIN SET FRONTEND CONFIG ("lake_batch_publish_max_version_num" = "1");
4. Verify with: ADMIN SHOW FRONTEND CONFIG LIKE 'lake_enable_batch_publish_version';
2. The Port 8060 vs 9060 Issue
You mentioned your port is 9060. That is the Thrift Port.
The error link rpc channel failed happens on the bRPC Port, which is 8060 by default.
* The Problem: If your Kubernetes Service or NetworkPolicy only allows port 9060, the "Heartbeat" (which uses 9060) will work, and the node will show as "Alive," but the "Publish Version" (which uses 8060) will fail with a "link failed" error.
* The Fix: Ensure port 8060 is open in your Kubernetes Service (starrocks-cn-search) and that your pods can communicate over it.
3. Check for "Overcrowded" CNs
If the bRPC port is open but the connection still fails, the CN might be rejecting it.
Look into the <http://be.INFO|be.INFO> (or <http://cn.INFO|cn.INFO>) logs on starrocks-cn-0/1/2 for this specific string:
The server is overcrowded or Reached max connection
If you see "overcrowded" errors, add this to your cn.conf and restart the CNs:
conf
brpc_socket_max_unwritten_bytes = 4294967296
4. DNS / Namespace mismatch
Your hostnames end in trino.svc.cluster.local.
* Is your StarRocks cluster actually running in a namespace named trino?
* If your FEs and CNs are in different namespaces, K8s might be blocking the bRPC traffic.
* Test connection from FE pod:
nc -zv starrocks-cn-0.starrocks-cn-search.trino.svc.cluster.local 8060
If this says "Connection refused" or "Timeout," your network/K8s service is the bottleneck.
Summary
The FE is failing to "link" to the CNs on port 8060. Because batching is still on, one single connection failure is failing 21+ transactions at once.
1. Force-disable batching on the Leader FE.
2. Ensure port 8060 is accessible between pods.
References
• administration/management/FE_configuration.md
• knowledge/usage/load/shared_data_batch_ingestion.md
• faq/shared_data_faq.mdSiva Chaitanya Vasiboyina
06/30/2026, 3:27 PMRocky
06/30/2026, 3:28 PMADMIN REPAIR. This attempts to revert the partition metadata to the last successful version in object storage.
sql
ADMIN REPAIR TABLE <table_name> PARTITION (<partition_name>)
PROPERTIES ("enforce_consistent_version" = "true");
* Result: This will "unstick" the partition by dropping the failing transactions and resetting the VisibleVersion to the last healthy one. You will then need to re-load the data that was lost.
Option 2: Manually Advance the Version (High Risk)
If you know exactly what the "healthy" version should be (you can see this from SHOW PARTITIONS FROM <table_name>), you can try to force the metadata forward. Warning: This can lead to data corruption if the data files for that version don't actually exist in S3/MinIO.
sql
ADMIN SET TABLE <table_name> PARTITION (<partition_name>) VERSION TO <target_version>;
_ _Note: You must run this while connected directly to the Leader FE.*
Option 3: Drop and Recreate (Nuclear Option)
If the partition is completely corrupted and you just want to start over for that specific time range:
1. Drop the partition: ALTER TABLE <table_name> DROP PARTITION <partition_name> FORCE;
2. Wait 1 minute for metadata to clear.
3. Re-insert the data. This will create a fresh partition with a new ID, bypassing the old stuck version sequence.
Why you are still seeing batches (Action Required)
You mentioned the batching didn't stop. If you see publishPartitionBatch with 21 IDs in the logs, the config change did not work. This happens if:
1. You weren't on the Leader: Run SHOW FRONTENDS and ensure IsLeader is true for your current session.
2. The daemon was already "in-flight": The daemon may have already queued those 21 transactions.
Try this to force-clear the queue:
1. Identify the Leader FE.
2. Run:
sql
ADMIN SET FRONTEND CONFIG ("lake_enable_batch_publish_version" = "false");
ADMIN SET FRONTEND CONFIG ("lake_publish_version_max_threads" = "64"); -- Lower concurrency to reduce RPC pressure
3. Restart the Leader FE. This is the only way to hard-reset the PublishVersionDaemon task queue if it's stuck in a loop.
Final Verification
After performing one of the "skip" options above, run this to see if the version sequence is moving again:
sql
SHOW PROC '/transactions';
-- Look for transactions in 'COMMITTED' state. If the number is decreasing, it's working.
Recommendation: Try Option 1 (REPAIR) first. It is the built-in way to handle "stuck" versions in cloud-native tables without manually editing metadata hacking the metadata manually hacking the metadata.
References
• loading/SQL_transaction.md
• administration/management/compaction.md
• administration/Data_recovery.md
• faq/Others.md
• loading/Stream_Load_transaction_interface.md
• release_notes/release-2.5.mdSiva Chaitanya Vasiboyina
06/30/2026, 3:29 PMRocky
06/30/2026, 3:29 PMtxnId) belongs to, the most direct way is to query the internal metadata tables.
Method 1: Using SQL (Recommended)
If you are on StarRocks 3.1.9+ or 3.2.4+, you can join the transaction metadata with the partition metadata:
sql
SELECT
p.DB_NAME,
p.TABLE_NAME,
p.PARTITION_NAME,
t.TXN_ID
FROM information_schema.be_txns t
JOIN information_schema.partitions_meta p
ON t.PARTITION_ID = p.PARTITION_ID
WHERE t.TXN_ID = <your_txn_id>;
Method 2: Check via Transaction Label
If you don't have the partitions_meta table yet, you can find the "Label" of the transaction, which often contains the table name or can be traced back to the load job:
1. Find the Label:
sql
SHOW TRANSACTION WHERE ID = <your_txn_id>;
* Look for the Label column.
2. Find the Load Job:
If the Label looks like a Stream Load or Broker Load (e.g., my_load_job_123), you can find the table via:
sql
SHOW LOAD WHERE Label = '<the_label_you_found>';
* The JobDetails column in SHOW LOAD will list the target table.
Method 3: Using SHOW PROC
This is the manual way to browse the metadata hierarchy:
1. Run SHOW PROC '/transactions'; to get the DbId of your database.
2. Run SHOW PROC '/transactions/<DbId>'; to see the transaction list.
_ _Note: This view is often summarized. Method 1 is much more efficient for a specific ID.*
Summary of what to do next:
Once you have the Table Name and Partition Name:
1. Run SHOW PARTITIONS FROM <table_name> WHERE PartitionName = '<partition_name>';
2. Note the VisibleVersion and NextVersion.
3. If NextVersion is much higher than VisibleVersion and it's not moving, proceed with the ADMIN REPAIR command mentioned previously.
sql
ADMIN REPAIR TABLE <table_name> PARTITION (<partition_name>)
PROPERTIES ("enforce_consistent_version" = "true");
References
• sql-reference/sql-statements/loading_unloading/SHOW_TRANSACTION.md
• sql-reference/information_schema/be_txns.md
• knowledge/admin_and_operation/shared_data_compaction.md
• sql-reference/sql-statements/cluster-management/nodes_processes/SHOW_PROC.md
References
• knowledge/admin_and_operation/shared_data_compaction.mdSiva Chaitanya Vasiboyina
06/30/2026, 3:31 PMSELECT
p.DB_NAME,
p.TABLE_NAME,
p.PARTITION_NAME,
t.TXN_ID
FROM information_schema.be_txns t
JOIN information_schema.partitions_meta p
ON t.PARTITION_ID = p.PARTITION_ID
WHERE t.TXN_ID in (5035565, 5035693, 5035770, 5035862, 5035953);Rocky
06/30/2026, 3:31 PMinformation_schema.be_txns query returned NULL is that this table typically only shows "active" transaction tasks currently being handled by BE/CN nodes. For transactions that have already been Committed but are stuck in the Publish phase, the record exists primarily in the FE's memory and the global transaction manager.
Here are the definitive ways to identify the table and partition for those specific IDs:
Method 1: The SHOW TRANSACTION Command
This is the most reliable way to find the metadata for a specific transaction ID. You must run this for each ID:
sql
SHOW TRANSACTION WHERE ID = 5035565;
Look for the Label column in the output.
* Routine Load: The label will contain the job name.
* Stream Load: The label is usually provided by your loading client.
* Insert Into: The label looks like insert_....
Once you have the label, you can find the table by running:
sql
SHOW LOAD WHERE Label = '<Label_from_above>';
The JobDetails or TableNames column will tell you which table it belongs to.
Method 2: FE Log Search (Fastest for many IDs)
Since you have the IDs, you can grep the FE fe.audit.log or fe.log on the Leader FE. This is often faster than running individual SQL commands.
bash
grep -E "5035565|5035693|5035770|5035862|5035953" fe.audit.log
The audit log entry for the COMMIT or LOAD will explicitly list the database and table being modified.
Method 3: SHOW PROC (The "Manual" Drill-down)
If the above don't work, you can find which database contains the stuck transactions:
1. Run SHOW PROC '/transactions';. This lists DbId and DbName.
2. For each DbId (e.g., 10005), run: SHOW PROC '/transactions/10005';.
3. This shows the count of transactions in running, finished, etc.
4. If a database has many committed but not finished transactions, that is your target. You can then run:
sql
SHOW PROC '/transactions/10005/running'; -- or 'finished'
This will list the transactions along with their TableIdList.
How to unstick them once you find the table
Once you identify the <table_name>, check the partition status:
sql
SHOW PARTITIONS FROM <table_name>;
Check if VisibleVersion is lagging behind NextVersion. If it is, and you've already verified the BRPC port (8060) is open, use the repair command on that specific partition:
sql
ADMIN REPAIR TABLE <table_name> PARTITION (<partition_name>)
PROPERTIES ("enforce_consistent_version" = "true");
Note: If these are all for the same table, it is highly likely that one "older" transaction failed to publish, and all subsequent transactions (the ones you listed) are queued behind it because StarRocks publishes versions in strict linear order. Finding that "first" stuck transaction is the key.
References
• faq/shared_data_faq.md
• administration/management/FE_configuration.md
• knowledge/trouble_shooting/fe_deadlock_problems.mdSiva Chaitanya Vasiboyina
06/30/2026, 3:33 PMRocky
06/30/2026, 3:33 PMrw-txn prefix is a signature of the StarRocks Flink Connector (specifically when using the Two-Phase Commit / Exactly-Once mode). Because these are handled as "Stream Load" transactions rather than standard Broker/Insert loads, they don't always appear in SHOW LOAD.
To find the table, use these steps in order:
1. The Global Transaction Lookup
Instead of SHOW LOAD, use the generic transaction viewer. You must run this for one of your specific IDs:
sql
SHOW TRANSACTION WHERE ID = 5035565;
* If this returns empty: It means the transaction is in a different database than your current session.
* How to find the database: Run SHOW PROC '/transactions';. This will show you a list of all databases (DbId and DbName) and how many transactions are currently COMMITTED (waiting to publish). Note the DbName that has a high number in the COMMITTED column.
2. Query the metadata for that Database
Once you know the database name (e.g., analytics_db), run the check again with the database context:
sql
SHOW TRANSACTION FROM analytics_db WHERE ID = 5035565;
The output will have a Label. Since it's a Flink transaction, the label itself won't name the table, but the TableIdList or the logs will.
3. Cross-reference Table ID to Name
If SHOW TRANSACTION gives you a TableIdList (e.g., 12345), you can find the name with:
sql
SELECT TABLE_NAME
FROM information_schema.tables_config
WHERE TABLE_ID = 12345;
Why information_schema.be_txns was null
That view only shows "active" data-writing tasks currently on the BEs. Once a transaction is Committed (but stuck in Publish), the data is already on the BEs/S3, and the transaction lives in the FE Leader's memory waiting to be finalized.
Summary Action Plan
1. Run SHOW PROC '/transactions'; to identify the database with the "stuck" counts.
2. Run SHOW TRANSACTION FROM <db_name> WHERE ID = 5035565; to confirm it exists there.
3. Run SHOW PARTITIONS FROM <likely_table_name>; for the tables in that database. Look for the one where VisibleVersion is stuck and much lower than NextVersion.
4. Apply the ADMIN REPAIR command to that partition.
Note on Flink: If these are Flink transactions and you "skip" them or repair the partition, Flink might throw an error on its next checkpoint because the transaction it expected to commit was manually interfered with. You may need to restart the Flink job from a fresh checkpoint afterward.
References
• sql-reference/sql-statements/loading_unloading/SHOW_TRANSACTION.md
• sql-reference/sql-statements/cluster-management/nodes_processes/SHOW_PROC.md
• sql-reference/information_schema/be_txns.md
• loading/SQL_transaction.md
• sql-reference/sql-statements/loading_unloading/INSERT.md
• sql-reference/System_variable.md
• administration/Data_recovery.md
• faq/Others.md
• loading/Stream_Load_transaction_interface.md
• release_notes/release-2.5.md
• knowledge/admin_and_operation/shared_data_compaction.md
• sql-reference/sql-statements/loading_unloading/SHOW_TRANSACTION.mdRocky
06/30/2026, 3:33 PMSiva Chaitanya Vasiboyina
06/30/2026, 3:34 PMRocky
06/30/2026, 3:35 PMbe_txns. Instead, they are waiting for a specific partition to advance its version.
1. Scan all 100 tables for the "Stuck" Partition
Run this query to find any table where the versions are not advancing. This will identify the table and partition these IDs belong to:
sql
SELECT
DB_NAME,
TABLE_NAME,
PARTITION_NAME,
VISIBLE_VERSION,
NEXT_VERSION,
(NEXT_VERSION - VISIBLE_VERSION) AS version_gap
FROM information_schema.partitions_meta
WHERE DB_NAME = '<your_db_name>'
AND NEXT_VERSION > VISIBLE_VERSION + 1
ORDER BY version_gap DESC;
* Why this works: If your transactions (5035565, etc.) are queued, the NEXT_VERSION will be significantly higher than the VISIBLE_VERSION. This query scans all 100+ tables in seconds and points you to the culprit.
2. Verify the Transaction ID via SHOW TRANSACTION
SHOW LOAD often returns null for Flink/Stream Load transactions because they are handled differently. Use this specific command instead:
sql
-- Replace <db_name> with your database name
SHOW TRANSACTION FROM <db_name> WHERE ID = 5035565;
In the output, look for the TableIdList column. If it provides an ID (e.g., 12345), you can get the table name immediately with:
sql
SELECT TABLE_NAME FROM information_schema.tables_config WHERE TABLE_ID = 12345;
3. Why is it stuck?
Since these are Flink rw-txn transactions, the most common reasons for them to stay in a "Committed" state (stuck) are:
1. Version Dependency: A previous transaction (an ID smaller than yours) failed to publish. In StarRocks, versions must be published in strict order. If transaction 5035560 is stuck, your 5035565 cannot finish.
2. BE Connection: The FE cannot communicate with a BE to confirm the write (Check if Port 8060/9050 is open).
Solution
Once you identify the <table_name> and <partition_name> from the query in Step 1:
1. Repair the partition:
sql
ADMIN REPAIR TABLE <table_name> PARTITION (<partition_name>)
PROPERTIES ("enforce_consistent_version" = "true");
2. Wait 1 minute. The stuck transactions should automatically move from COMMITTED to VISIBLE.
References
• sql-reference/information_schema/partitions_meta.md
• sql-reference/sql-statements/loading_unloading/SHOW_TRANSACTION.md
• faq/shared_data_faq.md
• sql-reference/sql-statements/table_bucket_part_index/SHOW_PARTITIONS.md
• knowledge/admin_and_operation/shared_data_compaction.md
References
• sql-reference/sql-statements/table_bucket_part_index/SHOW_PARTITIONS.md
• sql-reference/information_schema/partitions_meta.md
• administration/management/compaction.md