Why do ITRS Analytics apps get stuck in CrashLoopBackOff after deployment?
When deploying multiple applications packaged together (for example, as part of the ITRS Analytics suite), all apps depend on a common Spring framework version. If one or more apps are built or deployed with a different Spring version, internal incompatibilities can occur.
These mismatches cause serialization failures within Spring’s internal state handling, leading to runtime errors during startup or inter-app communication. In such cases, you may observe multiple apps entering a CrashLoopBackOff state or see general failures where none of the dependent apps can initialize successfully. The logs of the app pods display exceptions similar to the following:
com.hazelcast.nio.serialization.HazelcastSerializationException: java.io.InvalidClassException: org.springframework.security.oauth2.core.oidc.user.OidcUserAuthority; local class incompatible: stream classdesc serialVersionUID = -196018737016047617, local class serialVersionUID = -4675866280835753141
This issue can appear in both KOTS and Helm-based deployments.
What causes this issue? Copied
Different apps packaged with mismatched Spring framework versions can fail to serialize or deserialize shared internal state. This mismatch breaks the inter-app communication layer, preventing all apps from running correctly.
- One or more apps (for example, Alerting, IAM, Capacity Planner, and Dashboards) stuck in
CrashLoopBackOff. - Admin Console showing apps in
FailedorUnreadystate. - Log messages indicating Spring serialization or deserialization errors.
- Inconsistent startup behavior after deployment or upgrade.
How can I fix this in a KOTS deployment? Copied
If you’re using KOTS Admin Console, follow the steps below to redeploy with a clean state.
-
Delete all app deployments.
kubectl delete -n itrs deployments -l app.kubernetes.io/part-of=obcerv -
Delete all app persistent volume claims (PVCs):
kubectl delete -n itrs pvcs -l app.kubernetes.io/part-of=obcerv -
In the KOTS Admin Console, open your Currently Deployed version and click Redeploy.
-
Wait for the app to reach the Ready state (typically within 10 minutes).
How can I fix this in a Helm deployment? Copied
If you deployed using Helm and have several apps in CrashLoopBackOff, use these steps to clean up and redeploy.
-
List all pods for the affected label.
kubectl get pods -l app.kubernetes.io/part-of=obcerv -n itrs -
Delete all app deployments.
kubectl delete deployments -l app.kubernetes.io/part-of=obcerv -n itrs -
Delete all app persistent volume claims (PVCs):
kubectl get pvc -l app.kubernetes.io/part-of=obcerv -n itrs kubectl delete pvc -l app.kubernetes.io/part-of=obcerv -n itrs -
Redeploy each app using Helm.
helm upgrade <app-name> itrs-snapshots/<app-name> \ -f default-apps-nginx.yaml \ --devel \ -n itrs \ --waitThis should bring all apps back up successfully and resolve the
CrashLoopBackOffissues.