Skip to content

Commit 3855b9e

Browse files
author
Derek Whatley
authored
Fix DVM/DVMP hotlooping, remove remote watch TouchAnnotation, fix requeues so they used values from r.Migrate() (#1013)
* Fix DVM/DVMP hotlooping, remove remote watch TouchAnnotation, fix requeue times Move default PollReQ setting for better locality * Use explicit requeue bools
1 parent 6d270c1 commit 3855b9e

File tree

14 files changed

+72
-57
lines changed

14 files changed

+72
-57
lines changed

pkg/apis/migration/v1alpha1/directvolumemigrationprogress_types.go

-3
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package v1alpha1
1919
import (
2020
"context"
2121

22-
"github.com/google/uuid"
2322
liberr "github.com/konveyor/controller/pkg/error"
2423
kapi "k8s.io/api/core/v1"
2524
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -108,11 +107,9 @@ type DirectVolumeMigrationProgress struct {
108107
}
109108

110109
func (d *DirectVolumeMigrationProgress) MarkReconciled() {
111-
u, _ := uuid.NewUUID()
112110
if d.Annotations == nil {
113111
d.Annotations = map[string]string{}
114112
}
115-
d.Annotations[TouchAnnotation] = u.String()
116113
d.Status.ObservedDigest = digest(d.Spec)
117114
}
118115

pkg/apis/migration/v1alpha1/resource.go

-6
Original file line numberDiff line numberDiff line change
@@ -167,11 +167,9 @@ func (r *DirectVolumeMigration) GetName() string {
167167
}
168168

169169
func (r *DirectVolumeMigration) MarkReconciled() {
170-
uuid, _ := uuid.NewUUID()
171170
if r.Annotations == nil {
172171
r.Annotations = map[string]string{}
173172
}
174-
r.Annotations[TouchAnnotation] = uuid.String()
175173
r.Status.ObservedDigest = digest(r.Spec)
176174
}
177175

@@ -269,11 +267,9 @@ func (r *DirectImageMigration) GetName() string {
269267
}
270268

271269
func (r *DirectImageMigration) MarkReconciled() {
272-
uuid, _ := uuid.NewUUID()
273270
if r.Annotations == nil {
274271
r.Annotations = map[string]string{}
275272
}
276-
r.Annotations[TouchAnnotation] = uuid.String()
277273
r.Status.ObservedDigest = digest(r.Spec)
278274
}
279275

@@ -303,11 +299,9 @@ func (r *DirectImageStreamMigration) GetName() string {
303299
}
304300

305301
func (r *DirectImageStreamMigration) MarkReconciled() {
306-
uuid, _ := uuid.NewUUID()
307302
if r.Annotations == nil {
308303
r.Annotations = map[string]string{}
309304
}
310-
r.Annotations[TouchAnnotation] = uuid.String()
311305
r.Status.ObservedDigest = digest(r.Spec)
312306
}
313307

pkg/controller/directimagemigration/directimagemigration_controller.go

+14-6
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package directimagemigration
1818

1919
import (
2020
"context"
21+
"time"
2122

2223
"github.com/konveyor/controller/pkg/logging"
2324
migapi "github.com/konveyor/mig-controller/pkg/apis/migration/v1alpha1"
@@ -119,10 +120,10 @@ func (r *ReconcileDirectImageMigration) Reconcile(request reconcile.Request) (re
119120
if errors.IsNotFound(err) {
120121
// Object not found, return. Created objects are automatically garbage collected.
121122
// For additional cleanup logic use finalizers.
122-
return reconcile.Result{}, nil
123+
return reconcile.Result{Requeue: false}, nil
123124
}
124125
// Error reading the object - requeue the request.
125-
return reconcile.Result{}, err
126+
return reconcile.Result{Requeue: true}, err
126127
}
127128

128129
// Set up jaeger tracing
@@ -133,7 +134,7 @@ func (r *ReconcileDirectImageMigration) Reconcile(request reconcile.Request) (re
133134

134135
// Completed.
135136
if imageMigration.Status.Phase == Completed {
136-
return reconcile.Result{}, nil
137+
return reconcile.Result{Requeue: false}, nil
137138
}
138139

139140
// Begin staging conditions
@@ -146,8 +147,11 @@ func (r *ReconcileDirectImageMigration) Reconcile(request reconcile.Request) (re
146147
return reconcile.Result{Requeue: true}, nil
147148
}
148149

150+
// Default to PollReQ, can be overridden by r.migrate phase-specific ReQ interval
151+
requeueAfter := time.Duration(PollReQ)
152+
149153
if !imageMigration.Status.HasBlockerCondition() {
150-
_, err = r.migrate(imageMigration, reconcileSpan)
154+
requeueAfter, err = r.migrate(imageMigration, reconcileSpan)
151155
if err != nil {
152156
log.Trace(err)
153157
return reconcile.Result{Requeue: true}, nil
@@ -171,6 +175,10 @@ func (r *ReconcileDirectImageMigration) Reconcile(request reconcile.Request) (re
171175
return reconcile.Result{Requeue: true}, nil
172176
}
173177

174-
// Done
175-
return reconcile.Result{}, nil
178+
// Requeue
179+
if requeueAfter > 0 {
180+
return reconcile.Result{RequeueAfter: requeueAfter}, nil
181+
}
182+
183+
return reconcile.Result{Requeue: false}, nil
176184
}

pkg/controller/directimagestreammigration/directimagestreammigration_controller.go

+14-6
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package directimagestreammigration
1818

1919
import (
2020
"context"
21+
"time"
2122

2223
"github.com/konveyor/controller/pkg/logging"
2324
migapi "github.com/konveyor/mig-controller/pkg/apis/migration/v1alpha1"
@@ -110,10 +111,10 @@ func (r *ReconcileDirectImageStreamMigration) Reconcile(request reconcile.Reques
110111
if errors.IsNotFound(err) {
111112
// Object not found, return. Created objects are automatically garbage collected.
112113
// For additional cleanup logic use finalizers.
113-
return reconcile.Result{}, nil
114+
return reconcile.Result{Requeue: false}, nil
114115
}
115116
// Error reading the object - requeue the request.
116-
return reconcile.Result{}, err
117+
return reconcile.Result{Requeue: true}, err
117118
}
118119

119120
// Set up jaeger tracing
@@ -124,7 +125,7 @@ func (r *ReconcileDirectImageStreamMigration) Reconcile(request reconcile.Reques
124125

125126
// Completed.
126127
if imageStreamMigration.Status.Phase == Completed {
127-
return reconcile.Result{}, nil
128+
return reconcile.Result{Requeue: false}, nil
128129
}
129130

130131
// Begin staging conditions
@@ -137,8 +138,11 @@ func (r *ReconcileDirectImageStreamMigration) Reconcile(request reconcile.Reques
137138
return reconcile.Result{Requeue: true}, nil
138139
}
139140

141+
// Default to PollReQ, can be overridden by r.migrate phase-specific ReQ interval
142+
requeueAfter := time.Duration(PollReQ)
143+
140144
if !imageStreamMigration.Status.HasBlockerCondition() {
141-
_, err = r.migrate(imageStreamMigration, reconcileSpan)
145+
requeueAfter, err = r.migrate(imageStreamMigration, reconcileSpan)
142146
if err != nil {
143147
log.Trace(err)
144148
return reconcile.Result{Requeue: true}, nil
@@ -162,6 +166,10 @@ func (r *ReconcileDirectImageStreamMigration) Reconcile(request reconcile.Reques
162166
return reconcile.Result{Requeue: true}, nil
163167
}
164168

165-
// Done
166-
return reconcile.Result{}, nil
169+
// Requeue
170+
if requeueAfter > 0 {
171+
return reconcile.Result{RequeueAfter: requeueAfter}, nil
172+
}
173+
174+
return reconcile.Result{Requeue: false}, nil
167175
}

pkg/controller/directvolumemigration/directvolumemigration_controller.go

+14-5
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package directvolumemigration
1818

1919
import (
2020
"context"
21+
"time"
2122

2223
"github.com/konveyor/controller/pkg/logging"
2324
migapi "github.com/konveyor/mig-controller/pkg/apis/migration/v1alpha1"
@@ -100,10 +101,10 @@ func (r *ReconcileDirectVolumeMigration) Reconcile(request reconcile.Request) (r
100101
if errors.IsNotFound(err) {
101102
// Object not found, return. Created objects are automatically garbage collected.
102103
// For additional cleanup logic use finalizers.
103-
return reconcile.Result{}, nil
104+
return reconcile.Result{Requeue: false}, nil
104105
}
105106
// Error reading the object - requeue the request.
106-
return reconcile.Result{}, err
107+
return reconcile.Result{Requeue: true}, err
107108
}
108109

109110
// Set up jaeger tracing
@@ -117,7 +118,7 @@ func (r *ReconcileDirectVolumeMigration) Reconcile(request reconcile.Request) (r
117118

118119
// Check if completed
119120
if direct.Status.Phase == Completed {
120-
return reconcile.Result{}, nil
121+
return reconcile.Result{Requeue: false}, nil
121122
}
122123

123124
// Begin staging conditions
@@ -130,8 +131,11 @@ func (r *ReconcileDirectVolumeMigration) Reconcile(request reconcile.Request) (r
130131
return reconcile.Result{Requeue: true}, nil
131132
}
132133

134+
// Default to PollReQ, can be overridden by r.migrate phase-specific ReQ interval
135+
requeueAfter := time.Duration(PollReQ)
136+
133137
if !direct.Status.HasBlockerCondition() {
134-
_, err = r.migrate(direct, reconcileSpan)
138+
requeueAfter, err = r.migrate(direct, reconcileSpan)
135139
if err != nil {
136140
log.Trace(err)
137141
return reconcile.Result{Requeue: true}, nil
@@ -155,6 +159,11 @@ func (r *ReconcileDirectVolumeMigration) Reconcile(request reconcile.Request) (r
155159
return reconcile.Result{Requeue: true}, nil
156160
}
157161

162+
// Requeue
163+
if requeueAfter > 0 {
164+
return reconcile.Result{RequeueAfter: requeueAfter}, nil
165+
}
166+
158167
// Done
159-
return reconcile.Result{}, nil
168+
return reconcile.Result{Requeue: false}, nil
160169
}

pkg/controller/directvolumemigrationprogress/directvolumemigrationprogress_controller.go

+2-6
Original file line numberDiff line numberDiff line change
@@ -132,9 +132,9 @@ func (r *ReconcileDirectVolumeMigrationProgress) Reconcile(request reconcile.Req
132132
err = r.Get(context.TODO(), request.NamespacedName, pvProgress)
133133
if err != nil {
134134
if errors.IsNotFound(err) {
135-
return reconcile.Result{}, nil
135+
return reconcile.Result{Requeue: false}, nil
136136
}
137-
return reconcile.Result{}, err
137+
return reconcile.Result{Requeue: true}, err
138138
}
139139

140140
// Set up jaeger tracing
@@ -178,10 +178,6 @@ func (r *ReconcileDirectVolumeMigrationProgress) Reconcile(request reconcile.Req
178178
return reconcile.Result{Requeue: true}, nil
179179
}
180180

181-
if !pvProgress.Status.IsReady() {
182-
return reconcile.Result{Requeue: true}, nil
183-
}
184-
185181
// we will requeue this every 5 seconds
186182
return reconcile.Result{Requeue: true, RequeueAfter: time.Second * 5}, nil
187183
}

pkg/controller/discovery/container/ds.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,17 @@ package container
33
import (
44
"database/sql"
55
"errors"
6+
"time"
7+
68
migapi "github.com/konveyor/mig-controller/pkg/apis/migration/v1alpha1"
79
"github.com/konveyor/mig-controller/pkg/controller/discovery/model"
810
"k8s.io/client-go/kubernetes/scheme"
911
"k8s.io/client-go/rest"
10-
"sigs.k8s.io/controller-runtime"
12+
controllerruntime "sigs.k8s.io/controller-runtime"
1113
"sigs.k8s.io/controller-runtime/pkg/client"
1214
"sigs.k8s.io/controller-runtime/pkg/controller"
1315
"sigs.k8s.io/controller-runtime/pkg/manager"
1416
"sigs.k8s.io/controller-runtime/pkg/reconcile"
15-
"time"
1617
)
1718

1819
type Collections []Collection
@@ -68,7 +69,7 @@ func (r *DataSource) IsReady() bool {
6869
// is for watches added by each collection reference a predicate that handles the change
6970
// rather than queuing a reconcile event.
7071
func (r *DataSource) Reconcile(request reconcile.Request) (reconcile.Result, error) {
71-
return reconcile.Result{}, nil
72+
return reconcile.Result{Requeue: false}, nil
7273
}
7374

7475
//

pkg/controller/discovery/controller.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -146,13 +146,13 @@ func (r *ReconcileDiscovery) Reconcile(request reconcile.Request) (reconcile.Res
146146
if err != nil {
147147
if errors.IsNotFound(err) {
148148
r.container.Delete(request.NamespacedName)
149-
return reconcile.Result{}, nil
149+
return reconcile.Result{Requeue: false}, nil
150150
}
151151
log.Trace(err)
152152
return reQueue, nil
153153
}
154154
if !r.IsValid(cluster) {
155-
return reconcile.Result{}, nil
155+
return reconcile.Result{Requeue: false}, nil
156156
}
157157
err = r.container.Add(
158158
cluster,
@@ -174,7 +174,7 @@ func (r *ReconcileDiscovery) Reconcile(request reconcile.Request) (reconcile.Res
174174
return reQueue, nil
175175
}
176176

177-
return reconcile.Result{}, nil
177+
return reconcile.Result{Requeue: false}, nil
178178
}
179179

180180
func (r *ReconcileDiscovery) IsValid(cluster *migapi.MigCluster) bool {

pkg/controller/miganalytic/miganalytics_controller.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ func (r *ReconcileMigAnalytic) Reconcile(request reconcile.Request) (reconcile.R
132132
err = r.Get(context.TODO(), request.NamespacedName, analytic)
133133
if err != nil {
134134
if errors.IsNotFound(err) {
135-
return reconcile.Result{}, nil
135+
return reconcile.Result{Requeue: false}, nil
136136
}
137137
log.Trace(err)
138138
return reconcile.Result{Requeue: true}, nil
@@ -141,7 +141,7 @@ func (r *ReconcileMigAnalytic) Reconcile(request reconcile.Request) (reconcile.R
141141
// Exit early if the MigAnalytic already has a ready condition
142142
// and Refresh boolean is unset
143143
if analytic.Status.IsReady() && !analytic.Spec.Refresh {
144-
return reconcile.Result{}, nil
144+
return reconcile.Result{Requeue: false}, nil
145145
}
146146

147147
// Report reconcile error.
@@ -211,7 +211,7 @@ func (r *ReconcileMigAnalytic) Reconcile(request reconcile.Request) (reconcile.R
211211
}
212212

213213
// Done
214-
return reconcile.Result{}, nil
214+
return reconcile.Result{Requeue: false}, nil
215215
}
216216

217217
func (r *ReconcileMigAnalytic) analyze(analytic *migapi.MigAnalytic) error {

pkg/controller/migcluster/migcluster_controller.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ func (r *ReconcileMigCluster) Reconcile(request reconcile.Request) (reconcile.Re
115115
err = r.Get(context.TODO(), request.NamespacedName, cluster)
116116
if err != nil {
117117
if errors.IsNotFound(err) {
118-
return reconcile.Result{}, nil
118+
return reconcile.Result{Requeue: false}, nil
119119
}
120120
log.Trace(err)
121121
return reconcile.Result{Requeue: true}, nil
@@ -180,5 +180,5 @@ func (r *ReconcileMigCluster) Reconcile(request reconcile.Request) (reconcile.Re
180180
}
181181

182182
// Done
183-
return reconcile.Result{}, nil
183+
return reconcile.Result{Requeue: false}, nil
184184
}

pkg/controller/mighook/mighook_controller.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package mighook
1818

1919
import (
2020
"context"
21+
2122
"github.com/konveyor/mig-controller/pkg/errorutil"
2223

2324
"github.com/konveyor/controller/pkg/logging"
@@ -86,7 +87,7 @@ func (r *ReconcileMigHook) Reconcile(request reconcile.Request) (reconcile.Resul
8687
err = r.Get(context.TODO(), request.NamespacedName, hook)
8788
if err != nil {
8889
if errors.IsNotFound(err) {
89-
return reconcile.Result{}, nil
90+
return reconcile.Result{Requeue: false}, nil
9091
}
9192
log.Trace(err)
9293
return reconcile.Result{Requeue: true}, nil
@@ -134,5 +135,5 @@ func (r *ReconcileMigHook) Reconcile(request reconcile.Request) (reconcile.Resul
134135
}
135136

136137
// Done
137-
return reconcile.Result{}, nil
138+
return reconcile.Result{Requeue: false}, nil
138139
}

0 commit comments

Comments
 (0)