@@ -1267,36 +1267,43 @@ private static PodWatcher createPodWatcher(String namespace) {
1267
1267
}
1268
1268
1269
1269
private static void dispatchPodWatch (Watch .Response <V1Pod > item ) {
1270
- switch (item .type ) {
1271
- case "ADDED" :
1272
- case "MODIFIED" :
1273
- case "DELETED" :
1274
- V1Pod p = item .object ;
1275
- V1ObjectMeta metadata = p .getMetadata ();
1276
- String domainUID = metadata .getLabels ().get (LabelConstants .DOMAINUID_LABEL );
1277
- String serverName = metadata .getLabels ().get (LabelConstants .SERVERNAME_LABEL );
1278
- if (domainUID != null ) {
1279
- DomainPresenceInfo info = domains .get (domainUID );
1280
- if (info != null && serverName != null ) {
1281
- ServerKubernetesObjects sko = info .getServers ().get (serverName );
1282
- if (sko != null ) {
1283
- if ("DELETED" .equals (item .type )) {
1270
+ V1Pod p = item .object ;
1271
+ if (p != null ) {
1272
+ V1ObjectMeta metadata = p .getMetadata ();
1273
+ String domainUID = metadata .getLabels ().get (LabelConstants .DOMAINUID_LABEL );
1274
+ String serverName = metadata .getLabels ().get (LabelConstants .SERVERNAME_LABEL );
1275
+ if (domainUID != null ) {
1276
+ DomainPresenceInfo info = domains .get (domainUID );
1277
+ if (info != null && serverName != null ) {
1278
+ ServerKubernetesObjects sko = info .getServers ().get (serverName );
1279
+ if (sko != null ) {
1280
+ switch (item .type ) {
1281
+ case "ADDED" :
1282
+ sko .getPod ().set (p );
1283
+ break ;
1284
+ case "MODIFIED" :
1285
+ V1Pod skoPod = sko .getPod ().get ();
1286
+ if (skoPod != null ) {
1287
+ // If the skoPod is null then the operator deleted this pod
1288
+ // and modifications are to the terminating pod
1289
+ sko .getPod ().compareAndSet (skoPod , p );
1290
+ }
1291
+ break ;
1292
+ case "DELETED" :
1284
1293
V1Pod oldPod = sko .getPod ().getAndSet (null );
1285
1294
if (oldPod != null ) {
1286
1295
// Pod was deleted, but sko still contained a non-null entry
1287
1296
LOGGER .info (MessageKeys .POD_DELETED , domainUID , metadata .getNamespace (), serverName );
1288
1297
doCheckAndCreateDomainPresence (info .getDomain (), true );
1289
1298
}
1290
- } else { // ADDED, MODIFIED
1291
- sko .getPod ().set (p );
1292
- }
1299
+ break ;
1300
+
1301
+ case "ERROR" :
1302
+ default :
1293
1303
}
1294
1304
}
1295
1305
}
1296
- break ;
1297
-
1298
- case "ERROR" :
1299
- default :
1306
+ }
1300
1307
}
1301
1308
}
1302
1309
@@ -1306,21 +1313,39 @@ private static ServiceWatcher createServiceWatcher(String namespace) {
1306
1313
}
1307
1314
1308
1315
private static void dispatchServiceWatch (Watch .Response <V1Service > item ) {
1309
- switch (item .type ) {
1310
- case "ADDED" :
1311
- case "MODIFIED" :
1312
- case "DELETED" :
1313
- V1Service s = item .object ;
1314
- V1ObjectMeta metadata = s .getMetadata ();
1315
- String domainUID = metadata .getLabels ().get (LabelConstants .DOMAINUID_LABEL );
1316
- String serverName = metadata .getLabels ().get (LabelConstants .SERVERNAME_LABEL );
1317
- String channelName = metadata .getLabels ().get (LabelConstants .CHANNELNAME_LABEL );
1318
- if (domainUID != null ) {
1319
- DomainPresenceInfo info = domains .get (domainUID );
1320
- if (info != null && serverName != null ) {
1321
- ServerKubernetesObjects sko = info .getServers ().get (serverName );
1322
- if (sko != null ) {
1323
- if ("DELETED" .equals (item .type )) {
1316
+ V1Service s = item .object ;
1317
+ if (s != null ) {
1318
+ V1ObjectMeta metadata = s .getMetadata ();
1319
+ String domainUID = metadata .getLabels ().get (LabelConstants .DOMAINUID_LABEL );
1320
+ String serverName = metadata .getLabels ().get (LabelConstants .SERVERNAME_LABEL );
1321
+ String channelName = metadata .getLabels ().get (LabelConstants .CHANNELNAME_LABEL );
1322
+ if (domainUID != null ) {
1323
+ DomainPresenceInfo info = domains .get (domainUID );
1324
+ if (info != null && serverName != null ) {
1325
+ ServerKubernetesObjects sko = info .getServers ().get (serverName );
1326
+ if (sko != null ) {
1327
+ switch (item .type ) {
1328
+ case "ADDED" :
1329
+ if (channelName != null ) {
1330
+ sko .getChannels ().put (channelName , s );
1331
+ } else {
1332
+ sko .getService ().set (s );
1333
+ }
1334
+ break ;
1335
+ case "MODIFIED" :
1336
+ if (channelName != null ) {
1337
+ V1Service skoService = sko .getChannels ().get (channelName );
1338
+ if (skoService != null ) {
1339
+ sko .getChannels ().replace (channelName , skoService , s );
1340
+ }
1341
+ } else {
1342
+ V1Service skoService = sko .getService ().get ();
1343
+ if (skoService != null ) {
1344
+ sko .getService ().compareAndSet (skoService , s );
1345
+ }
1346
+ }
1347
+ break ;
1348
+ case "DELETED" :
1324
1349
if (channelName != null ) {
1325
1350
V1Service oldService = sko .getChannels ().put (channelName , null );
1326
1351
if (oldService != null ) {
@@ -1336,16 +1361,14 @@ private static void dispatchServiceWatch(Watch.Response<V1Service> item) {
1336
1361
doCheckAndCreateDomainPresence (info .getDomain (), true );
1337
1362
}
1338
1363
}
1339
- } else { // ADDED, MODIFIED
1340
- sko .getService ().set (s );
1341
- }
1364
+ break ;
1365
+
1366
+ case "ERROR" :
1367
+ default :
1342
1368
}
1343
1369
}
1344
1370
}
1345
- break ;
1346
-
1347
- case "ERROR" :
1348
- default :
1371
+ }
1349
1372
}
1350
1373
}
1351
1374
@@ -1354,34 +1377,39 @@ private static IngressWatcher createIngressWatcher(String namespace) {
1354
1377
}
1355
1378
1356
1379
private static void dispatchIngressWatch (Watch .Response <V1beta1Ingress > item ) {
1357
- switch (item .type ) {
1358
- case "ADDED" :
1359
- case "MODIFIED" :
1360
- case "DELETED" :
1361
- V1beta1Ingress i = item .object ;
1380
+ V1beta1Ingress i = item .object ;
1381
+ if (i != null ) {
1362
1382
V1ObjectMeta metadata = i .getMetadata ();
1363
1383
String domainUID = metadata .getLabels ().get (LabelConstants .DOMAINUID_LABEL );
1364
1384
String clusterName = metadata .getLabels ().get (LabelConstants .CLUSTERNAME_LABEL );
1365
1385
if (domainUID != null ) {
1366
1386
DomainPresenceInfo info = domains .get (domainUID );
1367
1387
if (info != null && clusterName != null ) {
1368
- if ("DELETED" .equals (item .type )) {
1369
- V1beta1Ingress oldIngress = info .getIngresses ().remove (clusterName );
1370
- if (oldIngress != null ) {
1371
- // Ingress was deleted, but sko still contained a non-null entry
1372
- LOGGER .info (MessageKeys .INGRESS_DELETED , domainUID , metadata .getNamespace (), clusterName );
1373
- doCheckAndCreateDomainPresence (info .getDomain (), true );
1374
- }
1375
- } else { // ADDED, MODIFIED
1376
- info .getIngresses ().put (clusterName , i );
1388
+ switch (item .type ) {
1389
+ case "ADDED" :
1390
+ info .getIngresses ().put (clusterName , i );
1391
+ break ;
1392
+ case "MODIFIED" :
1393
+ V1beta1Ingress skoIngress = info .getIngresses ().get (clusterName );
1394
+ if (skoIngress != null ) {
1395
+ info .getIngresses ().replace (clusterName , skoIngress , i );
1396
+ }
1397
+ break ;
1398
+ case "DELETED" :
1399
+ V1beta1Ingress oldIngress = info .getIngresses ().remove (clusterName );
1400
+ if (oldIngress != null ) {
1401
+ // Ingress was deleted, but sko still contained a non-null entry
1402
+ LOGGER .info (MessageKeys .INGRESS_DELETED , domainUID , metadata .getNamespace (), clusterName );
1403
+ doCheckAndCreateDomainPresence (info .getDomain (), true );
1404
+ }
1405
+ break ;
1406
+
1407
+ case "ERROR" :
1408
+ default :
1377
1409
}
1378
1410
}
1379
1411
}
1380
- break ;
1381
-
1382
- case "ERROR" :
1383
- default :
1384
- }
1412
+ }
1385
1413
}
1386
1414
1387
1415
/**
0 commit comments