@@ -308,150 +308,154 @@ public Result onSuccess(Packet packet, KubernetesApiResponse<T> callResponse) {
308
308
309
309
private boolean isInProgressJobOutdated (V1Job job ) {
310
310
return Optional .ofNullable (job )
311
- .map (j -> hasNotCompleted (j ) && ( hasAnyImageChanged ( j ) || hasIntrospectVersionChanged ( j ) ))
311
+ .map (j -> hasNotCompleted (j ) && isOutdated ( j ))
312
312
.orElse (false );
313
313
}
314
+ }
314
315
315
- private boolean hasNotCompleted (V1Job job ) {
316
- return job != null && !JobWatcher .isComplete (job );
317
- }
316
+ private boolean hasNotCompleted (V1Job job ) {
317
+ return job != null && !JobWatcher .isComplete (job );
318
+ }
318
319
319
- private boolean hasAnyImageChanged (V1Job job ) {
320
- return hasImageChanged ( job ) || hasAuxiliaryImageChanged (job );
321
- }
320
+ private boolean isOutdated (V1Job job ) {
321
+ return job != null && ( hasAnyImageChanged ( job ) || hasIntrospectVersionChanged (job ) );
322
+ }
322
323
323
- private boolean hasImageChanged ( @ Nonnull V1Job job ) {
324
- return ! Objects . equals ( getImageFromJob ( job ), getJobModelPodSpecImage () );
325
- }
324
+ private boolean hasAnyImageChanged ( V1Job job ) {
325
+ return hasImageChanged ( job ) || hasAuxiliaryImageChanged ( job );
326
+ }
326
327
327
- private boolean hasAuxiliaryImageChanged (@ Nonnull V1Job job ) {
328
- return ! getSortedJobModelPodSpecAuxiliaryImages () .equals (getSortedAuxiliaryImagesFromJob (job ));
329
- }
328
+ private boolean hasImageChanged (@ Nonnull V1Job job ) {
329
+ return !Objects .equals (getImageFromJob (job ), getJobModelPodSpecImage ( ));
330
+ }
330
331
331
- private boolean hasIntrospectVersionChanged (@ Nonnull V1Job job ) {
332
- return !Objects .equals (getIntrospectVersionLabelFromJob (job ),
333
- getIntrospectVersionLabelFromJob (getJobModel ()));
334
- }
332
+ private boolean hasAuxiliaryImageChanged (@ Nonnull V1Job job ) {
333
+ return ! getSortedJobModelPodSpecAuxiliaryImages ().equals (getSortedAuxiliaryImagesFromJob (job ));
334
+ }
335
335
336
- String getImageFromJob (V1Job job ) {
337
- return getPodSpecFromJob (job ).map (this ::getImageFromPodSpec ).orElse (null );
338
- }
336
+ private boolean hasIntrospectVersionChanged (@ Nonnull V1Job job ) {
337
+ return !Objects .equals (getIntrospectVersionLabelFromJob (job ),
338
+ getIntrospectVersionLabelFromJob (getJobModel ()));
339
+ }
339
340
340
- List < String > getSortedAuxiliaryImagesFromJob (V1Job job ) {
341
- return getAuxiliaryImagesFromJob (job ).sorted (). toList ( );
342
- }
341
+ String getImageFromJob (V1Job job ) {
342
+ return getPodSpecFromJob (job ).map ( this :: getImageFromPodSpec ). orElse ( null );
343
+ }
343
344
344
- Stream <String > getAuxiliaryImagesFromJob (V1Job job ) {
345
- return getPodSpecFromJob (job ).map ( this :: getAuxiliaryImagesFromPodSpec ). orElse ( Stream . empty () );
346
- }
345
+ List <String > getSortedAuxiliaryImagesFromJob (V1Job job ) {
346
+ return getAuxiliaryImagesFromJob (job ).sorted (). toList ( );
347
+ }
347
348
348
- Optional <V1PodSpec > getPodSpecFromJob (V1Job job ) {
349
- return Optional .ofNullable (job )
350
- .map (V1Job ::getSpec )
351
- .map (V1JobSpec ::getTemplate )
352
- .map (V1PodTemplateSpec ::getSpec );
353
- }
349
+ Stream <String > getAuxiliaryImagesFromJob (V1Job job ) {
350
+ return getPodSpecFromJob (job ).map (this ::getAuxiliaryImagesFromPodSpec ).orElse (Stream .empty ());
351
+ }
354
352
355
- @ Nullable
356
- String getImageFromPodSpec ( @ Nonnull V1PodSpec pod ) {
357
- return getContainer ( pod )
358
- .map (V1Container :: getImage )
359
- . orElse ( null );
360
- }
353
+ Optional < V1PodSpec > getPodSpecFromJob ( V1Job job ) {
354
+ return Optional . ofNullable ( job )
355
+ . map ( V1Job :: getSpec )
356
+ .map (V1JobSpec :: getTemplate )
357
+ . map ( V1PodTemplateSpec :: getSpec );
358
+ }
361
359
362
- Stream <String > getAuxiliaryImagesFromPodSpec (@ Nonnull V1PodSpec pod ) {
363
- return getAuxiliaryContainers (pod )
364
- .map (V1Container ::getImage );
365
- }
360
+ @ Nullable
361
+ String getImageFromPodSpec (@ Nonnull V1PodSpec pod ) {
362
+ return getContainer (pod )
363
+ .map (V1Container ::getImage )
364
+ .orElse (null );
365
+ }
366
366
367
- @ Nullable
368
- String getJobModelPodSpecImage () {
369
- return Optional . ofNullable ( getJobModelPodSpec ()). map (this :: getImageFromPodSpec ). orElse ( null );
370
- }
367
+ Stream < String > getAuxiliaryImagesFromPodSpec ( @ Nonnull V1PodSpec pod ) {
368
+ return getAuxiliaryContainers ( pod )
369
+ . map (V1Container :: getImage );
370
+ }
371
371
372
- List <String > getSortedJobModelPodSpecAuxiliaryImages () {
373
- return getJobModelPodSpecAuxiliaryImages ().sorted ().toList ();
374
- }
372
+ @ Nullable
373
+ String getJobModelPodSpecImage () {
374
+ return Optional .ofNullable (getJobModelPodSpec ()).map (this ::getImageFromPodSpec ).orElse (null );
375
+ }
375
376
376
- Stream <String > getJobModelPodSpecAuxiliaryImages () {
377
- return Optional .ofNullable (getJobModelPodSpec ())
378
- .map (this ::getAuxiliaryImagesFromPodSpec )
379
- .orElse (Stream .empty ());
380
- }
377
+ List <String > getSortedJobModelPodSpecAuxiliaryImages () {
378
+ return getJobModelPodSpecAuxiliaryImages ().sorted ().toList ();
379
+ }
381
380
382
- @ Nullable
383
- String getIntrospectVersionLabelFromJob (V1Job job ) {
384
- return Optional .ofNullable (job )
385
- .map (V1Job ::getMetadata )
386
- .map (V1ObjectMeta ::getLabels )
387
- .map (m -> m .get (INTROSPECTION_STATE_LABEL ))
388
- .orElse (null );
389
- }
381
+ Stream <String > getJobModelPodSpecAuxiliaryImages () {
382
+ return Optional .ofNullable (getJobModelPodSpec ())
383
+ .map (this ::getAuxiliaryImagesFromPodSpec )
384
+ .orElse (Stream .empty ());
385
+ }
390
386
391
- private boolean isIntrospectionNeeded (Packet packet ) {
392
- return getDomainTopology () == null
387
+ @ Nullable
388
+ String getIntrospectVersionLabelFromJob (V1Job job ) {
389
+ return Optional .ofNullable (job )
390
+ .map (V1Job ::getMetadata )
391
+ .map (V1ObjectMeta ::getLabels )
392
+ .map (m -> m .get (INTROSPECTION_STATE_LABEL ))
393
+ .orElse (null );
394
+ }
395
+
396
+ private boolean isIntrospectionNeeded (Packet packet ) {
397
+ return getDomainTopology () == null
393
398
|| isBringingUpNewDomain (packet )
394
399
|| isIntrospectionRequested (packet )
395
400
|| isModelInImageUpdate (packet )
396
401
|| isIntrospectVersionChanged (packet );
397
- }
402
+ }
398
403
399
- @ Nonnull
400
- private Collection <String > getRunningServerNames () {
401
- return Optional .ofNullable (info ).map (DomainPresenceInfo ::getServerNames ).orElse (Collections .emptyList ());
402
- }
404
+ @ Nonnull
405
+ private Collection <String > getRunningServerNames () {
406
+ return Optional .ofNullable (info ).map (DomainPresenceInfo ::getServerNames ).orElse (Collections .emptyList ());
407
+ }
403
408
404
- private boolean isBringingUpNewDomain (Packet packet ) {
405
- return getNumRunningServers () == 0 && creatingServers (info ) && (isDomainGenerationChanged (packet ));
406
- }
409
+ private boolean isBringingUpNewDomain (Packet packet ) {
410
+ return getNumRunningServers () == 0 && creatingServers (info ) && (isDomainGenerationChanged (packet ));
411
+ }
407
412
408
- private int getNumRunningServers () {
409
- return info .getServerNames ().size ();
410
- }
413
+ private int getNumRunningServers () {
414
+ return info .getServerNames ().size ();
415
+ }
411
416
412
- private boolean isDomainGenerationChanged (Packet packet ) {
413
- return Optional .ofNullable (packet .get (INTROSPECTION_DOMAIN_SPEC_GENERATION ))
414
- .map (gen -> !gen .equals (getDomainGeneration ())).orElse (true );
415
- }
417
+ private boolean isDomainGenerationChanged (Packet packet ) {
418
+ return Optional .ofNullable (packet .get (INTROSPECTION_DOMAIN_SPEC_GENERATION ))
419
+ .map (gen -> !gen .equals (getDomainGeneration ())).orElse (true );
420
+ }
416
421
417
- private String getDomainGeneration () {
418
- return Optional .ofNullable (getDomain ())
422
+ private String getDomainGeneration () {
423
+ return Optional .ofNullable (getDomain ())
419
424
.map (DomainResource ::getMetadata )
420
425
.map (V1ObjectMeta ::getGeneration )
421
426
.map (Object ::toString )
422
427
.orElse ("" );
423
- }
428
+ }
424
429
425
- // Returns true if an introspection was requested. Clears the flag in any case.
426
- private boolean isIntrospectionRequested (Packet packet ) {
427
- return packet .remove (DOMAIN_INTROSPECT_REQUESTED ) != null ;
428
- }
430
+ // Returns true if an introspection was requested. Clears the flag in any case.
431
+ private boolean isIntrospectionRequested (Packet packet ) {
432
+ return packet .remove (DOMAIN_INTROSPECT_REQUESTED ) != null ;
433
+ }
429
434
430
- private boolean isModelInImageUpdate (Packet packet ) {
431
- return isModelInImage () && !getCurrentImageSpecHash ().equals (getIntrospectionImageSpecHash (packet ));
432
- }
435
+ private boolean isModelInImageUpdate (Packet packet ) {
436
+ return isModelInImage () && !getCurrentImageSpecHash ().equals (getIntrospectionImageSpecHash (packet ));
437
+ }
433
438
434
- private boolean isModelInImage () {
435
- return getDomain ().getDomainHomeSourceType () == FROM_MODEL ;
436
- }
439
+ private boolean isModelInImage () {
440
+ return getDomain ().getDomainHomeSourceType () == FROM_MODEL ;
441
+ }
437
442
438
- private String getCurrentImageSpecHash () {
439
- return String .valueOf (ConfigMapHelper .getModelInImageSpecHash (getDomain ().getSpec ().getImage ()));
440
- }
443
+ private String getCurrentImageSpecHash () {
444
+ return String .valueOf (ConfigMapHelper .getModelInImageSpecHash (getDomain ().getSpec ().getImage ()));
445
+ }
441
446
442
- private String getIntrospectionImageSpecHash (Packet packet ) {
443
- return (String ) packet .get (IntrospectorConfigMapConstants .DOMAIN_INPUTS_HASH );
444
- }
447
+ private String getIntrospectionImageSpecHash (Packet packet ) {
448
+ return (String ) packet .get (IntrospectorConfigMapConstants .DOMAIN_INPUTS_HASH );
449
+ }
445
450
446
- private boolean isIntrospectVersionChanged (Packet packet ) {
447
- return Optional .ofNullable (packet .get (INTROSPECTION_STATE_LABEL ))
448
- .map (introspectVersionLabel -> !introspectVersionLabel .equals (getIntrospectVersion ())).orElse (false );
449
- }
451
+ private boolean isIntrospectVersionChanged (Packet packet ) {
452
+ return Optional .ofNullable (packet .get (INTROSPECTION_STATE_LABEL ))
453
+ .map (introspectVersionLabel -> !introspectVersionLabel .equals (getIntrospectVersion ())).orElse (false );
454
+ }
450
455
451
- private String getIntrospectVersion () {
452
- return Optional .ofNullable (getDomain ()).map (DomainResource ::getSpec ).map (DomainSpec ::getIntrospectVersion )
453
- .orElse ("" );
454
- }
456
+ private String getIntrospectVersion () {
457
+ return Optional .ofNullable (getDomain ()).map (DomainResource ::getSpec ).map (DomainSpec ::getIntrospectVersion )
458
+ .orElse ("" );
455
459
}
456
460
457
461
private Step cleanUpAndReintrospect (Step next ) {
@@ -485,7 +489,20 @@ private class CheckForFailedIntrospectorStep extends Step {
485
489
Step .chain (createIntrospectionFailureSteps (getFailedReason (domainIntrospectorJob ), domainIntrospectorJob ),
486
490
cleanUpAndReintrospect (getNext ())), packet );
487
491
}
492
+
493
+ // TEST
494
+ LOGGER .severe ("**** RJE: job complete, " + printJob (domainIntrospectorJob )
495
+ + ", domain " + print (getDomain ()));
496
+
488
497
if (JobWatcher .isComplete (domainIntrospectorJob )) {
498
+ if (isOutdated (domainIntrospectorJob )) {
499
+
500
+ // TEST
501
+ LOGGER .severe ("**** RJE: job outdated; replace, " + printJob (domainIntrospectorJob )
502
+ + ", domain " + print (getDomain ()));
503
+
504
+ return doNext (cleanUpAndReintrospect (getNext ()), packet );
505
+ }
489
506
return doNext (createRemoveFailuresStep (getNext ()), packet );
490
507
}
491
508
return doNext (packet );
0 commit comments