You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by ho...@apache.org on 2022/05/24 17:09:14 UTC
[solr-operator] branch main updated: Don't kill SolrCloud pods on StatefulSet creation (#432)
This is an automated email from the ASF dual-hosted git repository.
houston pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr-operator.git
The following commit(s) were added to refs/heads/main by this push:
new 29982f0 Don't kill SolrCloud pods on StatefulSet creation (#432)
29982f0 is described below
commit 29982f09ca0051457dd14d6c7c718a98504f8db2
Author: Houston Putman <ho...@apache.org>
AuthorDate: Tue May 24 13:09:10 2022 -0400
Don't kill SolrCloud pods on StatefulSet creation (#432)
This waits until the Operator is aware of a StatefulSet status
to kill the SolrCloud pods that are out of date. Otherwise it will think
all SolrCloud pods are out of date, because it doesn't have a
currentRevision from the StatefulSet status.
---
controllers/solrcloud_controller.go | 13 ++++++++-----
helm/solr-operator/Chart.yaml | 7 +++++++
2 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/controllers/solrcloud_controller.go b/controllers/solrcloud_controller.go
index aaad802..2270353 100644
--- a/controllers/solrcloud_controller.go
+++ b/controllers/solrcloud_controller.go
@@ -322,8 +322,8 @@ func (r *SolrCloudReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
err = r.Get(ctx, types.NamespacedName{Name: statefulSet.Name, Namespace: statefulSet.Namespace}, foundStatefulSet)
// Set the annotation for a scheduled restart, if necessary.
- if nextRestartAnnotation, reconcileWaitDuration, err := util.ScheduleNextRestart(instance.Spec.UpdateStrategy.RestartSchedule, foundStatefulSet.Spec.Template.Annotations); err != nil {
- logger.Error(err, "Cannot parse restartSchedule cron", "cron", instance.Spec.UpdateStrategy.RestartSchedule)
+ if nextRestartAnnotation, reconcileWaitDuration, schedulingErr := util.ScheduleNextRestart(instance.Spec.UpdateStrategy.RestartSchedule, foundStatefulSet.Spec.Template.Annotations); schedulingErr != nil {
+ logger.Error(schedulingErr, "Cannot parse restartSchedule cron", "cron", instance.Spec.UpdateStrategy.RestartSchedule)
} else {
if nextRestartAnnotation != "" {
// Set the new restart time annotation
@@ -518,8 +518,6 @@ func (r *SolrCloudReconciler) reconcileCloudStatus(ctx context.Context, solrClou
nodeNames := make([]string, len(foundPods.Items))
nodeStatusMap := map[string]solrv1beta1.SolrNodeStatus{}
- updateRevision := statefulSetStatus.UpdateRevision
-
newStatus.Replicas = statefulSetStatus.Replicas
newStatus.UpToDateNodes = int32(0)
newStatus.ReadyReplicas = int32(0)
@@ -570,7 +568,12 @@ func (r *SolrCloudReconciler) reconcileCloudStatus(ctx context.Context, solrClou
}
// A pod is out of date if it's revision label is not equal to the statefulSetStatus' updateRevision.
- nodeStatus.SpecUpToDate = p.Labels["controller-revision-hash"] == updateRevision
+ // Assume the pod is up-to-date if we don't have an updateRevision from the statefulSet status.
+ // This should only happen when the statefulSet has just been created, so it's not a big deal.
+ // NOTE: This is usually because the statefulSet status wasn't fetched, not because the fetched updateRevision
+ // is empty.
+ updateRevision := statefulSetStatus.UpdateRevision
+ nodeStatus.SpecUpToDate = updateRevision == "" || p.Labels["controller-revision-hash"] == updateRevision
if nodeStatus.SpecUpToDate {
newStatus.UpToDateNodes += 1
if nodeStatus.Ready {
diff --git a/helm/solr-operator/Chart.yaml b/helm/solr-operator/Chart.yaml
index 6c89772..64ff1d6 100644
--- a/helm/solr-operator/Chart.yaml
+++ b/helm/solr-operator/Chart.yaml
@@ -103,6 +103,13 @@ annotations:
url: https://github.com/apache/solr-operator/issues/438
- name: Github PR
url: https://github.com/apache/solr-operator/pull/439
+ - kind: fixed
+ description: SolrCloud pods are no longer deleted right after a SolrCloud is created.
+ links:
+ - name: Github Issue
+ url: https://github.com/apache/solr-operator/issues/431
+ - name: Github PR
+ url: https://github.com/apache/solr-operator/pull/432
artifacthub.io/images: |
- name: solr-operator
image: apache/solr-operator:v0.6.0-prerelease