Arun Krishna
05/06/2026, 9:54 AMkube-starrocks (shared-data mode, ADLS2 backend)
• Namespace: dr-starrocks-ctr-t4
• Goal: restore cluster from automated_cluster_snapshot on ADLS2
Issue:
Fresh helm install with custom-values-dev.yaml + cluster_snapshot.yaml → FE pod (kube-starrocks-fe-0) crashes repeatedly with Error status (3 restarts in ~2.5 min), even though startupProbeFailureSeconds: 300 is set.
FE logs end with:
FE service kube-starrocks-fe-service:9030 is not alive yet!
Timed out, no members detected ever, assume myself is the first node ..
first start with no meta run start_fe.sh with additional options: ' --host_type FQDN'
Operator status shows DR is engaged:
disasterRecoveryStatus:
observedGeneration: 4
phase: doing
reason: disaster recovery is in progress
What I've checked:
• Mounted cluster_snapshot.yaml in the FE pod is the default commented template, not my configmap content → suspect mount path collision with chart's conf volume
• helm upgrade (without DR file) somehow succeeds and restores all DBs/tables/MVs/data → but install fails
• Chart values.yaml note says startupProbeFailureSeconds requires CRD v1.8.7+ —
kubectl get crd starrocksclusters.starrocks.com -o yaml | grep -A2 "labels\|annotations" | head -20
annotations:
controller-gen.kubebuilder.io/version: v0.14.0
version: v1.11.2
--
annotations:
additionalProperties:
type: string
--
annotations:
additionalProperties:
type: string
--
labels:
additionalProperties:
type: string
--
annotations:
additionalProperties:
type: string
--
Questions:
1. Anyone seen FE crash on first DR install but recover on upgrade?
2. Is the configMaps: top-level (chart-managed) pattern required, vs pre-creating the configmap with kubectl create configmap?
3. What's the minimum CRD/operator version for disasterRecovery.enabled to actually work?
Happy to share full values files / pod describe output in thread 🧵Rocky
05/06/2026, 10:00 AMcluster_snapshot.yaml is being projected into the pod.
Based on the logs and symptoms you've shared, here is the breakdown of what's likely happening and how to fix it:
1. The "Default Template" & Mount Path Collision
You mentioned that the cluster_snapshot.yaml inside the pod is the default template. This is the root cause of the crash. When the FE starts in DR mode, it requires a valid cluster_snapshot_path. If it sees a template with commented-out or dummy values, the FE process will fail to initialize.
* The Issue: If you mount a ConfigMap to /opt/starrocks/fe/conf/ without using subPath, it will overwrite the entire configuration directory. If you mount it specifically to the file path but without subPath, Kubernetes might create it as a directory.
* The Fix: You must use the subPath field in your starrocksFESpec.configMaps to ensure you are only overriding that specific file and not the whole directory or getting blocked by the image's default file.
Correct values.yaml snippet:
yaml
starrocksCluster:
starrocksFESpec:
configMaps:
- name: cluster-snapshot-config # Name of your ConfigMap
mountPath: /opt/starrocks/fe/conf/cluster_snapshot.yaml
subPath: cluster_snapshot.yaml
2. Why is the FE starting without the DR flag?
Your logs show: first start with no meta run start_fe.sh with additional options: ' --host_type FQDN'.
Notice that --cluster_snapshot is missing from the options.
* Operator Logic: For the DR process to trigger, the StarRocks Operator must inject the --cluster_snapshot flag into the container's startup arguments.
* The Fix: Ensure your StarRocksCluster (SRC) spec actually contains the DR configuration. Run kubectl get starrockscluster <name> -o yaml and verify that spec.disasterRecovery.enabled is true.
* Generation Field: The operator uses the generation field to trigger a new DR attempt. If you are re-running an install or retry, try incrementing the generation value (e.g., from 1 to 2) in your YAML.
3. Minimum Version Requirements
* Operator/CRD: You are on v1.11.2, which is well above the v1.10.0 minimum required for the disasterRecovery field to be functional.
* StarRocks Version: For the automated_cluster_snapshot feature in shared-data mode (ADLS2), you generally need StarRocks v3.5.0 or later. If your image is older (e.g., v3.1 or v3.2), the binary may not support restoring from these automated snapshots via the YAML config.
4. Crash on Install vs. Success on Upgrade
* Why it fails on first install: The Operator's reconciliation loop for a "fresh" cluster might be trying to deploy the full FE spec before the DR status is fully acknowledged, or the startup probe (even at 300s) is killing the pod because the script is stuck waiting for a service that won't start until the snapshot is processed.
* Why it works on upgrade: On an upgrade, the ConfigMap and the SRC spec (with DR enabled) are already present in the K8s API. The Operator can generate the correct Pod spec with the --cluster_snapshot flag from the very first container start.
Summary Checklist for Success:
1. Check StarRocks Version: Ensure you are using StarRocks v3.5+ for shared-data snapshot DR.
2. Verify Mount: Use kubectl exec into the crashing pod (if it stays up long enough) or check a describe pod to ensure the cluster-snapshot volume is actually using a subPath.
3. ConfigMap Pattern: It is safer to use the top-level chart-managed configMaps: pattern in kube-starrocks. This ensures the ConfigMap is created before the Operator tries to mount it to the FE.Rocky
05/06/2026, 10:00 AMdr-starrocks-ctr-t4 before the fresh helm install. DR mode will not trigger correctly if the operator detects existing metadata on the disk.
Pro Tip: If the pod keeps crashing too fast to debug, temporarily set the FE terminationGracePeriodSeconds higher and check kubectl logs -p (previous) to see if there are Java-level errors about the ADLS2 credentials inside the fe.log.
References
• administration/cluster_snapshot.md
• administration/Meta_recovery.md
• quick_start/helm.mdRocky
05/06/2026, 10:01 AM--host_type FQDN but miss the --cluster_snapshot flag, combined with the FE seeing a "default template" file, points to a configuration projection issue.
Here are the answers to your specific questions and a troubleshooting guide:
1. FE Crash on Install vs. Success on Upgrade
The reason helm install fails while upgrade (sometimes) works is often related to the Operator's state machine.
* On Install: The Operator is trying to provision the FE for the first time. If the DR state (spec.disasterRecovery) is present from the start, the Operator enters the todo -> doing phase. However, if the FE Pod doesn't see the correct cluster_snapshot.yaml (due to the mount issue), it crashes.
* On Upgrade: If you have already run a failed install, the PVCs for FE metadata might already exist. If you then upgrade, the FE might be trying to start using "half-baked" or partial metadata from the previous attempt. If it "succeeds" and shows data, it means the FE metadata was actually successfully restored or preserved in the local volume at some point, and it's no longer in "fresh start" mode.
* Warning: In shared-data mode, if you want a clean DR restore, you must delete the FE metadata PVCs before the install/restore. Otherwise, the FE will try to join an existing (but broken) cluster instead of restoring from the snapshot.
2. ConfigMap Pattern: Chart-managed vs. Pre-created
While kubectl create configmap works, the top-level configMaps: pattern in kube-starrocks is strongly recommended for DR for two reasons:
1. Consistency: It ensures the ConfigMap is created and synchronized before the StarRocksCluster (SRC) object is processed.
2. Mount Management: The chart handles the volume and volumeMount definitions automatically based on your starrocksFESpec.configMaps entries.
Crucial Fix for the "Default Template" issue:
The StarRocks image contains a template file at /opt/starrocks/fe/conf/cluster_snapshot.yaml. If you mount your ConfigMap without a subPath, Kubernetes may either fail the mount or overwrite the directory. You must use subPath.
Example values.yaml snippet:
yaml
starrocksCluster:
disasterRecovery:
enabled: true
generation: 1 # Increment this to trigger a retry
starrocksFESpec:
configMaps:
- name: dr-snapshot-conf
mountPath: /opt/starrocks/fe/conf/cluster_snapshot.yaml
subPath: cluster_snapshot.yaml # This prevents collision with the image file
3. Minimum Versions
* Operator: You are on v1.11.2, which is perfect. DR support was introduced in v1.10.0.
* StarRocks: Restoration from automated_cluster_snapshot in shared-data mode requires StarRocks v3.4.2 or later (v3.5+ recommended for ADLS2 stability).
Why the --cluster_snapshot flag is missing:
The Operator only injects the --cluster_snapshot argument into the FE startup command when:
1. spec.disasterRecovery.enabled is true.
2. The disasterRecoveryStatus.phase is todo or doing.
3. The FE metadata PVC is empty. If the Operator detects existing metadata, it assumes the cluster is already initialized and will skip the DR bootstrap flags.
Recommended SOS Recovery Steps:
1. Clean the Slate: Delete the current helm release and manually delete the FE metadata PVCs in namespace dr-starrocks-ctr-t4.
2. Verify the Snapshot Path: Ensure the cluster_snapshot_path in your ConfigMap points to the exact folder containing the image (e.g., .../meta/image/automated_cluster_snapshot_12345).
3. Use `subPath`: Update your custom-values-dev.yaml to include the subPath as shown above.
4. Fresh Install: Run your helm install.Rocky
05/06/2026, 10:01 AMkubectl get src -n dr-starrocks-ctr-t4 -o yaml and verify that spec.disasterRecovery.enabled is truly true in the resulting object.
If the flag is still missing, check the Operator logs (kubectl logs -n <operator-namespace> ...). It will explicitly log why it is skipping the DR injection if it sees an issue with the PVCs or the spec. the metadata volume.
References
• Cluster Snapshot Documentation
• Operator DR Guide
operator)Arun Krishna
05/07/2026, 9:24 AMFrom fe.warn.log:
ERROR StarRocksFE start failed
com.starrocks.common.DdlException: Invalid properties azure_path_key
at StorageVolumeMgr.validateParams(StorageVolumeMgr.java:386)
at StorageVolumeMgr.replaceStorageVolume(StorageVolumeMgr.java:224)
at RestoreClusterSnapshotMgr.updateStorageVolumes(RestoreClusterSnapshotMgr.java:254)
at RestoreClusterSnapshotMgr.finishRestoring(RestoreClusterSnapshotMgr.java:93)
at StarRocksFE.start(StarRocksFE.java:206)Arun Krishna
05/07/2026, 9:25 AMroot@kube-starrocks-fe-0:/opt/starrocks/fe/log# head -n 5000 fe.log
2026-05-07 14:48:08.727+08:00 DEBUG (main|1) [LoggingProviderImpl$JULWrapper.log():274] SecurityPropertyModification: key:networkaddress.cache.ttl, value:60
2026-05-07 14:48:08.733+08:00 INFO (main|1) [RestoreClusterSnapshotMgr.init():67] FE start to restore from a cluster snapshot (RESTORE_CLUSTER_SNAPSHOT=true)
2026-05-07 14:48:08.942+08:00 INFO (main|1) [RestoreClusterSnapshotMgr.downloadSnapshot():155] Download cluster snapshot <adls2://drstarrockstest/shared_data/3c76279d-4fd6-40aa-96b5-717032118104/meta/image/automated_cluster_snapshot_1778135089752> to local dir /opt/starrocks/fe/meta/image
2026-05-07 14:48:09.002+08:00 INFO (main|1) [HdfsFsManager.getFileSystemByCloudConfiguration():758] could not find file system for path <abfss://drstarrockstest@ststarrockssvcdevccwus01.dfs.core.windows.net/shared_data/3c76279d-4fd6-40aa-96b5-717032118104/meta/image/automated_cluster_snapshot_1778135089752> create a new one
2026-05-07 14:48:09.089+08:00 DEBUG (main|1) [Shell.<clinit>():573] Failed to detect a valid hadoop home directory
java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset.
at org.apache.hadoop.util.Shell.checkHadoopHomeInner(Shell.java:521) ~[hadoop-common-3.4.3.jar:?]
at org.apache.hadoop.util.Shell.checkHadoopHome(Shell.java:492) ~[hadoop-common-3.4.3.jar:?]
at org.apache.hadoop.util.Shell.<clinit>(Shell.java:569) ~[hadoop-common-3.4.3.jar:?]
at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:80) ~[hadoop-common-3.4.3.jar:?]
at org.apache.hadoop.conf.Configuration.getBoolean(Configuration.java:1733) ~[hadoop-common-3.4.3.jar:?]
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:598) ~[starrocks-hadoop-ext.jar:?]
at com.starrocks.fs.hdfs.HdfsFsManager.getFileSystemByCloudConfiguration(HdfsFsManager.java:791) ~[starrocks-fe.jar:?]
at com.starrocks.fs.hdfs.HdfsFsManager.getAzureFileSystem(HdfsFsManager.java:723) ~[starrocks-fe.jar:?]
at com.starrocks.fs.hdfs.HdfsFsManager.getFileSystem(HdfsFsManager.java:475) ~[starrocks-fe.jar:?]
at com.starrocks.fs.hdfs.HdfsFsManager.copyToLocal(HdfsFsManager.java:1215) ~[starrocks-fe.jar:?]
at com.starrocks.fs.hdfs.HdfsService.copyToLocal(HdfsService.java:58) ~[starrocks-fe.jar:?]
at com.starrocks.fs.HdfsUtil.copyToLocal(HdfsUtil.java:71) ~[starrocks-fe.jar:?]
at com.starrocks.lake.snapshot.RestoreClusterSnapshotMgr.downloadSnapshot(RestoreClusterSnapshotMgr.java:156) ~[starrocks-fe.jar:?]
at com.starrocks.lake.snapshot.RestoreClusterSnapshotMgr.<init>(RestoreClusterSnapshotMgr.java:54) ~[starrocks-fe.jar:?]
at com.starrocks.lake.snapshot.RestoreClusterSnapshotMgr.init(RestoreClusterSnapshotMgr.java:68) ~[starrocks-fe.jar:?]
at com.starrocks.StarRocksFE.start(StarRocksFE.java:134) ~[starrocks-fe.jar:?]
at com.starrocks.StarRocksFE.main(StarRocksFE.java:95) ~[starrocks-fe.jar:?]
2026-05-07 14:48:09.114+08:00 DEBUG (main|1) [Shell.isSetsidSupported():874] setsid exited with exit code 0
2026-05-07 14:48:09.114+08:00 DEBUG (main|1) [FileSystem.get():599] Bypassing cache to create filesystem <abfss://drstarrockstest@ststarrockssvcdevccwus01.dfs.core.windows.net/shared_data/3c76279d-4fd6-40aa-96b5-717032118104/meta/image/automated_cluster_snapshot_1778135089752>
2026-05-07 14:48:09.115+08:00 INFO (main|1) [FileSystem.createFileSystemInternal():3735] [hadoop-ext] FileSystem.createFileSystem
2026-05-07 14:48:09.120+08:00 DEBUG (main|1) [DurationInfo.<init>():80] Starting: Creating FS <abfss://drstarrockstest@ststarrockssvcdevccwus01.dfs.core.windows.net/shared_data/3c76279d-4fd6-40aa-96b5-717032118104/meta/image/automated_cluster_snapshot_1778135089752>
2026-05-07 14:48:09.121+08:00 DEBUG (main|1) [FileSystem.loadFileSystems():3644] Loading filesystems
2026-05-07 14:48:09.126+08:00 DEBUG (main|1) [FileSystem.loadFileSystems():3656] nullscan:// = class org.apache.hadoop.hive.ql.io.NullScanFileSystem from /opt/starrocks/fe/lib/hive-apache-3.1.2-22.jar
2026-05-07 14:48:09.144+08:00 DEBUG (main|1) [FileSystem.loadFileSystems():3656] file:// = class org.apache.hadoop.fs.LocalFileSystem from /opt/starrocks/fe/lib/hadoop-common-3.4.3.jar
2026-05-07 14:48:09.145+08:00 DEBUG (main|1) [FileSystem.loadFileSystems():3656] file:// = class org.apache.hadoop.hive.ql.io.ProxyLocalFileSystem from /opt/starrocks/fe/lib/hive-apache-3.1.2-22.jar
2026-05-07 14:48:09.158+08:00 DEBUG (main|1) [FileSystem.loadFileSystems():3656] hdfs:// = class org.apache.hadoop.hdfs.DistributedFileSystem from /opt/starrocks/fe/lib/hadoop-hdfs-client-3.4.3.jar
2026-05-07 14:48:09.177+08:00 DEBUG (main|1) [FileSystem.loadFileSystems():3656] webhdfs:// = class org.apache.hadoop.hdfs.web.WebHdfsFileSystem from /opt/starrocks/fe/lib/hadoop-hdfs-client-3.4.3.jar
2026-05-07 14:48:09.181+08:00 DEBUG (main|1) [FileSystem.loadFileSystems():3656] swebhdfs:// = class org.apache.hadoop.hdfs.web.SWebHdfsFileSystem from /opt/starrocks/fe/lib/hadoop-hdfs-client-3.4.3.jar
2026-05-07 14:48:09.229+08:00 DEBUG (main|1) [MutableMetricsFactory.newForField():43] field org.apache.hadoop.metrics2.lib.MutableRate org.apache.hadoop.security.UserGroupInformation$UgiMetrics.getGroups with annotation @org.apache.hadoop.metrics2.annotation.Metric(always=false, sampleName="Ops", valueName="Time", about="", interval=10, type=DEFAULT, value={"GetGroups"})
2026-05-07 14:48:09.231+08:00 DEBUG (main|1) [MutableMetricsFactory.newForField():43] field org.apache.hadoop.metrics2.lib.MutableRate org.apache.hadoop.security.UserGroupInformation$UgiMetrics.loginFailure with annotation @org.apache.hadoop.metrics2.annotation.Metric(always=false, sampleName="Ops", valueName="Time", about="", interval=10, type=DEFAULT, value={"Rate of failed kerberos logins and latency (milliseconds)"})
2026-05-07 14:48:09.231+08:00 DEBUG (main|1) [MutableMetricsFactory.newForField():43] field org.apache.hadoop.metrics2.lib.MutableRate org.apache.hadoop.security.UserGroupInformation$UgiMetrics.loginSuccess with annotation @org.apache.hadoop.metrics2.annotation.Metric(always=false, sampleName="Ops", valueName="Time", about="", interval=10, type=DEFAULT, value={"Rate of successful kerberos logins and latency (milliseconds)"})
2026-05-07 14:48:09.232+08:00 DEBUG (main|1) [MutableMetricsFactory.newForField():43] field private org.apache.hadoop.metrics2.lib.MutableGaugeInt org.apache.hadoop.security.UserGroupInformation$UgiMetrics.renewalFailures with annotation @org.apache.hadoop.metrics2.annotation.Metric(always=false, sampleName="Ops", valueName="Time", about="", interval=10, type=DEFAULT, value={"Renewal failures since last successful login"})
2026-05-07 14:48:09.232+08:00 DEBUG (main|1) [MutableMetricsFactory.newForField():43] field private org.apache.hadoop.metrics2.lib.MutableGaugeLong org.apache.hadoop.security.UserGroupInformation$UgiMetrics.renewalFailuresTotal with annotation @org.apache.hadoop.metrics2.annotation.Metric(always=false, sampleName="Ops", valueName="Time", about="", interval=10, type=DEFAULT, value={"Renewal failures since startup"})
2026-05-07 14:48:09.234+08:00 DEBUG (main|1) [MetricsSystemImpl.register():231] UgiMetrics, User and group related metrics
2026-05-07 14:48:09.264+08:00 DEBUG (main|1) [SecurityUtil.setTokenServiceUseIp():136] Setting hadoop.security.token.service.use_ip to true
2026-05-07 14:48:09.325+08:00 DEBUG (main|1) [Groups.getUserToGroupsMappingService():476] Creating new Groups object
2026-05-07 14:48:09.327+08:00 DEBUG (main|1) [NativeCodeLoader.<clinit>():44] Trying to load the custom-built native-hadoop library...
2026-05-07 14:48:09.328+08:00 DEBUG (main|1) [NativeCodeLoader.<clinit>():53] Failed to load native-hadoop with error: java.lang.UnsatisfiedLinkError: no hadoop in java.library.path: /usr/java/packages/lib:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib
2026-05-07 14:48:09.328+08:00 DEBUG (main|1) [NativeCodeLoader.<clinit>():54] java.library.path=/usr/java/packages/lib:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib
2026-05-07 14:48:09.328+08:00 WARN (main|1) [NativeCodeLoader.<clinit>():60] Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2026-05-07 14:48:09.329+08:00 DEBUG (main|1) [JniBasedUnixGroupsMappingWithFallback.<init>():42] Falling back to shell based
2026-05-07 14:48:09.330+08:00 DEBUG (main|1) [JniBasedUnixGroupsMappingWithFallback.<init>():46] Group mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping
2026-05-07 14:48:09.349+08:00 DEBUG (main|1) [Groups.<init>():150] Group mapping impl=org.apache.hadoop.security.JniBasedUnixGroupsMappingWithFallback; cacheTimeout=300000; warningDeltaMs=5000
2026-05-07 14:48:09.363+08:00 DEBUG (main|1) [UserGroupInformation$HadoopLoginModule.login():244] Hadoop login
2026-05-07 14:48:09.364+08:00 DEBUG (main|1) [UserGroupInformation$HadoopLoginModule.commit():190] hadoop login commit
2026-05-07 14:48:09.365+08:00 DEBUG (main|1) [UserGroupInformation$HadoopLoginModule.commit():216] Using user: "root" with name: root
2026-05-07 14:48:09.365+08:00 DEBUG (main|1) [UserGroupInformation$HadoopLoginModule.commit():228] User entry: "root"
2026-05-07 14:48:09.365+08:00 DEBUG (main|1) [UserGroupInformation.createLoginUser():799] UGI loginUser: root (auth:SIMPLE)
2026-05-07 14:48:09.366+08:00 DEBUG (main|1) [FileSystem.loadFileSystems():3656] viewfs:// = class org.apache.hadoop.fs.viewfs.ViewFileSystem from /opt/starrocks/fe/lib/hadoop-common-3.4.3.jar
2026-05-07 14:48:09.369+08:00 DEBUG (main|1) [FileSystem.loadFileSystems():3656] har:// = class org.apache.hadoop.fs.HarFileSystem from /opt/starrocks/fe/lib/hadoop-common-3.4.3.jar
2026-05-07 14:48:09.371+08:00 DEBUG (main|1) [FileSystem.loadFileSystems():3656] http:// = class org.apache.hadoop.fs.http.HttpFileSystem from /opt/starrocks/fe/lib/hadoop-common-3.4.3.jar
2026-05-07 14:48:09.372+08:00 DEBUG (main|1) [FileSystem.loadFileSystems():3656] https:// = class org.apache.hadoop.fs.http.HttpsFileSystem from /opt/starrocks/fe/lib/hadoop-common-3.4.3.jar
2026-05-07 14:48:09.468+08:00 DEBUG (main|1) [AbstractBackend.log():101] GHFS version: 3.0.13
2026-05-07 14:48:09.543+08:00 DEBUG (main|1) [FileSystem.loadFileSystems():3656] gs:// = class com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem from /opt/starrocks/fe/lib/gcs-connector-3.0.13-shaded.jar
2026-05-07 14:48:09.543+08:00 DEBUG (main|1) [FileSystem.getFileSystemClass():3692] Looking for FS supporting abfss
2026-05-07 14:48:09.544+08:00 DEBUG (main|1) [FileSystem.getFileSystemClass():3696] looking for configuration option fs.abfss.impl
2026-05-07 14:48:09.571+08:00 DEBUG (main|1) [FileSystem.getFileSystemClass():3706] Filesystem abfss defined in configuration option
2026-05-07 14:48:09.571+08:00 DEBUG (main|1) [FileSystem.getFileSystemClass():3713] FS for abfss is class org.apache.hadoop.fs.azurebfs.SecureAzureBlobFileSystem
2026-05-07 14:48:09.572+08:00 DEBUG (main|1) [FileSystem.getFileSystemClass():3716] Jar location for class org.apache.hadoop.fs.azurebfs.SecureAzureBlobFileSystem : /opt/starrocks/fe/lib/hadoop-azure-3.4.3.jar
2026-05-07 14:48:09.577+08:00 DEBUG (main|1) [AzureBlobFileSystem.initialize():188] Initializing AzureBlobFileSystem for <abfss://drstarrockstest@ststarrockssvcdevccwus01.dfs.core.windows.net/shared_data/3c76279d-4fd6-40aa-96b5-717032118104/meta/image/automated_cluster_snapshot_1778135089752>
2026-05-07 14:48:09.591+08:00 DEBUG (main|1) [DataBlocks.createFactory():132] Creating DataFactory of type : bytebuffer
2026-05-07 14:48:09.605+08:00 DEBUG (main|1) [AzureBlobFileSystemStore.getAbfsServiceTypeFromUrl():1792] Falling back to default service type DFS
2026-
@RockyRocky
05/07/2026, 9:26 AMfe.log shows the restore process starting (identifying the adls2:// path) but then crashing right after the Hadoop Azure (ABFS) initialization (Falling back to default service type DFS) is the smoking gun.
Here is what's happening and how to fix it:
1. The "Default Template" vs. Operator Injection
The Operator (v1.10+) has its own logic for DR. When disasterRecovery.enabled is true, the Operator injects its own configuration.
* The Conflict: If you are manually mounting a ConfigMap to /opt/starrocks/fe/conf/cluster_snapshot.yaml without using subPath, you might be overwriting the directory or conflicting with the Operator's own volume mounts.
* The Log Evidence: Your fe.log shows a valid ADLS2 path. This means the FE is actually finding your configuration (likely from the environment variable or the Operator's mount), but the file you are seeing via cat inside the pod might be the wrong one or a shadowed mount.
2. Why does it crash after Falling back to default service type DFS?
This is the specific point where the FE attempts to authenticate with ADLS2 to begin the download.
* Missing Credentials: In shared-data mode, even for a restore, the FE needs the azure_adls2_shared_key or SAS token. If these are only in your custom-values-dev.yaml but not correctly projected into the FE's environment or fe.conf during the restore phase, the ABFS driver will fail.
* JVM Crash/OOM: Downloading a large metadata snapshot into meta/image is memory-intensive. If the FE pod is restricted to 4GB or less, it might hit a Cgroup limit and be killed by the OOMKiller right as it opens the network buffers for the download.
* Recommendation: Check kubectl describe pod for Reason: OOMKilled and check if your fe.conf (or the cluster_snapshot.yaml) explicitly includes the storage_volume credentials for the restore.
3. The "Success on Upgrade" Mystery
* On Install: The FE metadata PVC is empty. The Operator sees phase: doing and adds the --cluster_snapshot flag. The FE starts the restore, takes too long (or crashes), and the pod restarts.
* On Upgrade: If a previous attempt partially succeeded in downloading the metadata, the PVC is no longer empty. On the next start, the FE might find the metadata on disk and skip the "restore" phase entirely, transitioning to a normal start.
* Important: For a clean DR, you must delete the FE metadata PVCs before a fresh install.
4. Fix the Startup Script Timeout
The message FE service ... 9030 is not alive yet! Timed out comes from the fe_entrypoint.sh script.
* In the Helm chart, this script waits for the FE to start. If the FE is busy downloading a 1GB+ snapshot from ADLS2, port 9030 won't open.
* If the script's internal timeout (often 60-120s) is shorter than the download time, the script will exit, causing the container to restart.
Recommended SOS Checklist:
1. Use `subPath`: Ensure your ConfigMap mount is safe:
yaml
starrocksFESpec:
configMaps:
• name: your-dr-cm
mountPath: /opt/starrocks/fe/conf/cluster_snapshot.yaml
subPath: cluster_snapshot.yaml
2. Increase FE Resources: Give the FE at least 8Gi of memory and 4 CPUs for the duration of the DR restore to handle the ABFS throughput.
3. Verify fe.conf Credentials: Ensure the ADLS2 credentials (azure_adls2_endpoint, azure_adls2_shared_key) are present in the fe.conf inside the pod. Without these, the abfss:// driver cannot authenticate.
4. Clean PVCs: If you want a fresh restore, kubectl delete pvc -l <http://app.kubernetes.io/name=starrocks-fe|app.kubernetes.io/name=starrocks-fe> before the install.Rocky
05/07/2026, 9:26 AMv1.11.2 is perfectly fine. The issue is almost certainly the ADLS2 credential handshake or the entrypoint script timing out during the download.
References
• deployment/shared_data/azure.md
• administration/cluster_snapshot.md
• administration/management/FE_configuration.md