Skip to content

Improve closing behavior for cache/informer. #505

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from

Conversation

brendandburns
Copy link
Contributor

Fixes #494

@k8s-ci-robot k8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Sep 18, 2020
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: brendandburns

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot added approved Indicates a PR has been approved by an approver from all required OWNERS files. size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Sep 18, 2020
@kscharm
Copy link

kscharm commented Sep 21, 2020

I have tested your changes and I'm still seeing a connection leak:

➜  javascript git:(close) date; k exec test-cassandra-prober-9cb6b5f9-xg4s5 -c prober -- netstat -al | grep kube
Mon Sep 21 18:11:35 EDT 2020
tcp        0      0 test-cassandra-pr:43284 kubernetes.default.:443 ESTABLISHED
➜  javascript git:(close) date; k exec test-cassandra-prober-9cb6b5f9-xg4s5 -c prober -- netstat -al | grep kube
Mon Sep 21 19:08:37 EDT 2020
tcp        0      0 test-cassandra-pr:38620 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38568 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38608 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38584 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38628 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38580 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38656 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38652 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38588 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38636 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38556 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38632 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38502 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38498 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38552 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38616 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38648 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38660 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38612 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38564 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38596 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38604 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38624 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38572 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38600 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38500 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38592 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38640 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38496 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38644 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38560 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:38576 kubernetes.default.:443 ESTABLISHED

@@ -1,18 +1,24 @@
import byline = require('byline');
import request = require('request');
import { Duplex } from 'stream';
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Needed to move stream-buffers from devDependencies to dependencies in package.json for this to work.

@brendandburns
Copy link
Contributor Author

@kscharm ok, I will try to reproduce. Approx. how many endpoints/sec are you creating/deleting in your testing?

Thanks!

@brendandburns
Copy link
Contributor Author

Also, how quickly does it reproduce? Your test shows about 1hr of waiting, but does it start to leak connections sooner?

@brendandburns
Copy link
Contributor Author

I tried to reproduce this locally and I couldn't. Do you have a clean repro I can try in my home cluster? More details about how you are accessing the API server?

I think that the problem is in cleaning up the connection opened for the watch but I'm not certain.

I updated the PR with an additional option to disable request pooling. Can you retest this new patch?

Apologies for making you test my patches, but it's hard without a local repro.

@kscharm
Copy link

kscharm commented Sep 22, 2020

@kscharm ok, I will try to reproduce. Approx. how many endpoints/sec are you creating/deleting in your testing?

I'm not 100% sure on the exact number, but it's very few endpoints during the course of testing.

Also, how quickly does it reproduce? Your test shows about 1hr of waiting, but does it start to leak connections sooner?

It starts to leak much sooner, as the number of connections appears to double every 10 minutes.

I tried to reproduce this locally and I couldn't. Do you have a clean repro I can try in my home cluster? More details about how you are accessing the API server?

I think that the problem is in cleaning up the connection opened for the watch but I'm not certain.

I updated the PR with an additional option to disable request pooling. Can you retest this new patch?

Apologies for making you test my patches, but it's hard without a local repro.

I'm using the same example code that my teammate posted in the original issue:

function startEndpointWatcher (labelSelector = '', namespace = POD_NAMESPACE) {
  const informer = k8s.makeInformer(kc, `/api/v1/namespaces/${namespace}/endpoints?labelSelector=${labelSelector}`,
    () => k8sApi.listNamespacedEndpoints(namespace, undefined, undefined, undefined, undefined, labelSelector))

  _.forEach(['add', 'update', 'delete'], event => informer.on(event, updateEndpointsFn))

  informer.on('error', err => {
    console.log('Watcher ERROR event: \n', err, '\nRestarting Watcher after 5 sec...')
    setTimeout(informer.start, 5000)
  })

  informer.start()
  .then(() => console.log('HostIPs-Endpoint-watcher successfully started'))
  .catch(err => console.log('HostIPs-Endpoint-watcher failed to start: \n', err))
}

async function updateEndpointsFn (endpointsObj) {
  console.log('updateEndpointFn: ' + endpointsObj.metadata.name)
}

startEndpointWatcher(CASSANDRA_ENDPOINT_LABELS)

The informer watches for any changes to the Cassandra pods. The majority of the events occur during bootstrapping when the cluster is first coming up. I will test your new changes and report back to you.

@kscharm
Copy link

kscharm commented Sep 22, 2020

Still not working after disabling request pooling changes:

➜  icm-cassandra git: ✗ date; k exec test-cassandra-prober-9cb6b5f9-gtwnt -c prober -- netstat -al | grep kube
Tue Sep 22 11:46:59 EDT 2020
tcp        0      0 test-cassandra-pr:38658 kubernetes.default.:443 ESTABLISHED
➜  icm-cassandra git: ✗ date; k exec test-cassandra-prober-9cb6b5f9-gtwnt -c prober -- netstat -al | grep kube
Tue Sep 22 11:57:10 EDT 2020
tcp        0      0 test-cassandra-pr:34934 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:34938 kubernetes.default.:443 ESTABLISHED
➜  icm-cassandra git: ✗ date; k exec test-cassandra-prober-9cb6b5f9-gtwnt -c prober -- netstat -al | grep kube
Tue Sep 22 13:08:07 EDT 2020
tcp        0      0 test-cassandra-pr:45112 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45706 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45638 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45646 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45494 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45164 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43526 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44230 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45634 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43624 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45324 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45378 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45740 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43820 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45116 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45730 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44142 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43664 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43660 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43876 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44104 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43644 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44088 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45394 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45128 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45288 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45410 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44246 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45398 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44536 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44538 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45776 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45530 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43648 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45620 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44532 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45474 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45080 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44214 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45208 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45248 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43680 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45784 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45280 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45184 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45064 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44556 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44108 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45268 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45320 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44548 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45438 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45092 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43844 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43538 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43568 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44128 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43948 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45346 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44544 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45072 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45236 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45240 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43712 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43776 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45188 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45096 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45048 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45478 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45256 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45104 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43864 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45156 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45450 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45056 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43912 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45316 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44466 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44250 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45176 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45434 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45308 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43580 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44322 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45328 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45422 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44310 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45076 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45212 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44552 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44580 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43780 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44138 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44572 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43860 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45534 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44454 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45796 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45132 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44258 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43530 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45808 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45414 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43554 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45272 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43534 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45354 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45228 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43908 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43952 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44226 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45144 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43708 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45684 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45748 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45692 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45300 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45140 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43640 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45160 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45168 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45812 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43588 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45962 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45224 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43904 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44218 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45470 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45664 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44112 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44592 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44306 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44568 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45358 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44222 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45390 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45936 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44116 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43668 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44302 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45264 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45486 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43584 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45426 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43704 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45108 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45382 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44234 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44100 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45332 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43832 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45490 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43700 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45580 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45196 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44318 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45192 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44564 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45336 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45204 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43742 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43900 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45374 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45220 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45418 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45170 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45770 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43840 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45680 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45136 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45296 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44326 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45120 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45980 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45508 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45522 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45244 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45626 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45502 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43848 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45088 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44132 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45100 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45454 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45458 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45260 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45362 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45044 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45780 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45482 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45052 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45304 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44238 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45800 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45312 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45216 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43836 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45498 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45068 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45060 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45670 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45430 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45726 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44092 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45370 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45180 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45342 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45350 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44584 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45200 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45752 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44486 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44710 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45386 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45084 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43920 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45958 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45606 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44714 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44588 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45658 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45402 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45040 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45232 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44576 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45252 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45366 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45292 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44458 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44314 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45276 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45462 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43916 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45466 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44242 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44096 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44254 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43880 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45406 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45152 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44560 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45124 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43636 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43772 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45598 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44462 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45148 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43542 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45284 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44210 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:43808 kubernetes.default.:443 ESTABLISHED

@brendandburns
Copy link
Contributor Author

Are you seeing the errors:

'Watcher ERROR event: \n', err, '\nRestarting Watcher after 5 sec...'

@kscharm
Copy link

kscharm commented Sep 22, 2020

Nope, just the start log and then output from updateEndpointsFn

@brendandburns
Copy link
Contributor Author

Do you have the apiserver logs? It would be interesting to see what the requests are that the server is receiving (and at what interval)

I'll try to repro using your snippet as well.

@kscharm
Copy link

kscharm commented Sep 23, 2020

Working on getting the apiserver logs. Here are sample logs from the informer:

2020-09-23T13:29:59.792498233Z updateEndpointFn: test-cassandra-dc1
2020-09-23T13:29:59.792561614Z updateEndpointFn: test-cassandra-dc2
2020-09-23T13:29:59.803228477Z updateEndpointFn: test-cassandra-dc1
2020-09-23T13:29:59.803320629Z updateEndpointFn: test-cassandra-dc2
2020-09-23T13:39:59.849319869Z updateEndpointFn: test-cassandra-dc1
2020-09-23T13:39:59.849356470Z updateEndpointFn: test-cassandra-dc2
2020-09-23T13:39:59.863715882Z updateEndpointFn: test-cassandra-dc1
2020-09-23T13:39:59.863753427Z updateEndpointFn: test-cassandra-dc2
2020-09-23T13:39:59.871879159Z updateEndpointFn: test-cassandra-dc1
2020-09-23T13:39:59.871903621Z updateEndpointFn: test-cassandra-dc2
2020-09-23T13:39:59.878303641Z updateEndpointFn: test-cassandra-dc1
2020-09-23T13:39:59.878328172Z updateEndpointFn: test-cassandra-dc2
2020-09-23T13:49:59.914545407Z updateEndpointFn: test-cassandra-dc1
2020-09-23T13:49:59.914593341Z updateEndpointFn: test-cassandra-dc2
2020-09-23T13:49:59.917677496Z updateEndpointFn: test-cassandra-dc1
2020-09-23T13:49:59.917702323Z updateEndpointFn: test-cassandra-dc2
2020-09-23T13:49:59.924788440Z updateEndpointFn: test-cassandra-dc1
2020-09-23T13:49:59.924812222Z updateEndpointFn: test-cassandra-dc2
2020-09-23T13:49:59.936065369Z updateEndpointFn: test-cassandra-dc1
2020-09-23T13:49:59.936101072Z updateEndpointFn: test-cassandra-dc2
2020-09-23T13:49:59.937418069Z updateEndpointFn: test-cassandra-dc1
2020-09-23T13:49:59.937438848Z updateEndpointFn: test-cassandra-dc2
2020-09-23T13:49:59.941509998Z updateEndpointFn: test-cassandra-dc1
2020-09-23T13:49:59.941560070Z updateEndpointFn: test-cassandra-dc2
2020-09-23T13:49:59.948779015Z updateEndpointFn: test-cassandra-dc1
2020-09-23T13:49:59.948798583Z updateEndpointFn: test-cassandra-dc2
2020-09-23T13:49:59.962399143Z updateEndpointFn: test-cassandra-dc1
2020-09-23T13:49:59.962420687Z updateEndpointFn: test-cassandra-dc2
2020-09-23T13:59:59.958763583Z updateEndpointFn: test-cassandra-dc1
2020-09-23T13:59:59.958793393Z updateEndpointFn: test-cassandra-dc2
2020-09-23T13:59:59.968383511Z updateEndpointFn: test-cassandra-dc1
2020-09-23T13:59:59.968405494Z updateEndpointFn: test-cassandra-dc2
2020-09-23T13:59:59.985237946Z updateEndpointFn: test-cassandra-dc1
2020-09-23T13:59:59.985282236Z updateEndpointFn: test-cassandra-dc2
2020-09-23T13:59:59.995193161Z updateEndpointFn: test-cassandra-dc1
2020-09-23T13:59:59.995216573Z updateEndpointFn: test-cassandra-dc2
2020-09-23T14:00:00.005439386Z updateEndpointFn: test-cassandra-dc1
2020-09-23T14:00:00.005464984Z updateEndpointFn: test-cassandra-dc2
2020-09-23T14:00:00.010248445Z updateEndpointFn: test-cassandra-dc1
2020-09-23T14:00:00.010272978Z updateEndpointFn: test-cassandra-dc2
2020-09-23T14:00:00.012654997Z updateEndpointFn: test-cassandra-dc1
2020-09-23T14:00:00.012671541Z updateEndpointFn: test-cassandra-dc2
2020-09-23T14:00:00.014060827Z updateEndpointFn: test-cassandra-dc1
2020-09-23T14:00:00.014079299Z updateEndpointFn: test-cassandra-dc2
2020-09-23T14:00:00.035588973Z updateEndpointFn: test-cassandra-dc1
2020-09-23T14:00:00.035734570Z updateEndpointFn: test-cassandra-dc2
2020-09-23T14:00:00.038194655Z updateEndpointFn: test-cassandra-dc1
2020-09-23T14:00:00.038216442Z updateEndpointFn: test-cassandra-dc2
2020-09-23T14:00:00.043826991Z updateEndpointFn: test-cassandra-dc1
2020-09-23T14:00:00.043846109Z updateEndpointFn: test-cassandra-dc2
2020-09-23T14:00:00.045171150Z updateEndpointFn: test-cassandra-dc1
2020-09-23T14:00:00.045189078Z updateEndpointFn: test-cassandra-dc2
2020-09-23T14:00:00.046930976Z updateEndpointFn: test-cassandra-dc1
2020-09-23T14:00:00.046956343Z updateEndpointFn: test-cassandra-dc2
2020-09-23T14:00:00.048589862Z updateEndpointFn: test-cassandra-dc1
2020-09-23T14:00:00.048612042Z updateEndpointFn: test-cassandra-dc2
2020-09-23T14:00:00.057701092Z updateEndpointFn: test-cassandra-dc1
2020-09-23T14:00:00.057728221Z updateEndpointFn: test-cassandra-dc2
2020-09-23T14:00:00.059145672Z updateEndpointFn: test-cassandra-dc1
2020-09-23T14:00:00.059162666Z updateEndpointFn: test-cassandra-dc2

Notice that a burst of updates happen exactly 10 minutes apart and that the number of updates appears to double each time.

@kscharm
Copy link

kscharm commented Sep 23, 2020

This set of logs corresponds with this:

date; k exec test-cassandra-prober-9cb6b5f9-gqnbq -c prober -- netstat -al | grep kube
Wed Sep 23 10:11:53 EDT 2020
tcp        0      0 test-cassandra-pr:46740 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46816 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46780 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46764 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46708 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46724 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46756 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46712 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46822 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46704 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46784 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46700 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46800 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46732 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46804 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46728 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46792 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46752 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46826 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46796 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46768 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46716 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46744 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46808 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46760 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46720 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46788 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46772 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46812 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46736 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46748 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:46776 kubernetes.default.:443 ESTABLISHED

@kscharm
Copy link

kscharm commented Sep 23, 2020

Here are the logs from a 1.5 hour run. There are a lot more of endpoint requests than I originally thought...

server.log

@brendandburns
Copy link
Contributor Author

Some interesting things in those logs:

There are watches from 4 different IP addresses (are you running multiple pods that are watching?)

There's a whole burst of watches from the same IP address at the same time. Is it possible that you are instantiating multiple informers somehow?

I'm worried about your restarting of the informer from within the informer's on handler. I'm wondering if the informer isn't shutdown when the error occurs (though it really looks like it should be from running the code)

There's definitely something weird going on, but from looking at the logs it appears that the problem is that many watches are being created, not that watch connections aren't getting closed properly.

I'll try to find time to run your repro code in my test cluster.

@brendandburns
Copy link
Contributor Author

Aha! I think I figured it out. Stay tuned.

@brendandburns
Copy link
Contributor Author

Ok, sorry to keep making you do this, but can you try the patch again, I think I found the issue, the done handler (which restarts the watch) is getting called twice every time there's an error.

If this doesn't fix it I'm back to zero :(

@kscharm
Copy link

kscharm commented Sep 23, 2020

Ugh, still experiencing the same behavior. I've added in additional logs to be sure informer.start() was only being called once. We have one informer watching all pods with labelSelector=app.kubernetes.io/component=database. Here are the dc bootstrapping/informer logs (see the bursts at the bottom):

2020-09-23T20:53:06.521057246Z 9/23/2020, 8:53:06 PM	  INFO	Calling startEndpointWatcher (<anonymous> @ maintenance.js:379)
2020-09-23T20:53:06.544753205Z 9/23/2020, 8:53:06 PM	  INFO	Cassandra maintenance monitor listening on port: 8889 (<anonymous> @ maintenance.js:383)
2020-09-23T20:53:06.546799628Z 9/23/2020, 8:53:06 PM	  INFO	Cassandra readiness prober listening on port: 8888 (<anonymous> @ server.js:236)
2020-09-23T20:53:06.604427179Z 9/23/2020, 8:53:06 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T20:53:06.606519308Z 9/23/2020, 8:53:06 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T20:53:06.610981388Z 9/23/2020, 8:53:06 PM	  INFO	HostIPs-Endpoint-watcher successfully started (maintenance.js:371)
2020-09-23T20:53:16.542815944Z 9/23/2020, 8:53:16 PM	  WARN	0 discovered nodes... (updateNodeStates [as _onTimeout] @ server.js:119)
2020-09-23T20:53:20.927395580Z 9/23/2020, 8:53:20 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:53:20.927420918Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 0, ready: false } },
2020-09-23T20:53:20.927429245Z                      	      	  { dc2: { replicas: 3, readyReplicas: 0, ready: false } }  ] (server.js:212)
2020-09-23T20:53:26.544509409Z 9/23/2020, 8:53:26 PM	  WARN	0 discovered nodes... (updateNodeStates [as _onTimeout] @ server.js:119)
2020-09-23T20:53:31.168598284Z 9/23/2020, 8:53:31 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:53:31.168627769Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 0, ready: false } },
2020-09-23T20:53:31.168637398Z                      	      	  { dc2: { replicas: 3, readyReplicas: 0, ready: false } }  ] (server.js:212)
2020-09-23T20:53:36.544715369Z 9/23/2020, 8:53:36 PM	  WARN	0 discovered nodes... (updateNodeStates [as _onTimeout] @ server.js:119)
2020-09-23T20:53:39.088376907Z 9/23/2020, 8:53:39 PM	  INFO	Found a new node from readinessProbe: /172.30.181.10 [test-cassandra-dc1-0.test-cassandra-dc1.kscharm.svc.cluster.local] (server.js:159)
2020-09-23T20:53:41.421328576Z 9/23/2020, 8:53:41 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:53:41.421356532Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 0, ready: false } },
2020-09-23T20:53:41.421366110Z                      	      	  { dc2: { replicas: 3, readyReplicas: 0, ready: false } }  ] (server.js:212)
2020-09-23T20:53:46.726542979Z 9/23/2020, 8:53:46 PM	  INFO	STATUS MODIFIED:
2020-09-23T20:53:46.726579743Z                      	      	Status Counts: { '/172.30.181.10': { UP: 2 },
2020-09-23T20:53:46.726589184Z                      	      	                  '/172.30.63.28': { undefined: 2 } } (updateNodesRequest @ server.js:102)
2020-09-23T20:53:46.741835251Z 9/23/2020, 8:53:46 PM	  INFO	┌────────────────┬───────┬─────┬────┬────┬────┐
2020-09-23T20:53:46.741864030Z                      	      	│ ip             │ ready │ dc  │ id │ 0  │ 1  │
2020-09-23T20:53:46.741874834Z                      	      	├────────────────┼───────┼─────┼────┼────┼────┤
2020-09-23T20:53:46.741885206Z                      	      	│ /172.30.181.10 │ true  │ dc1 │ 0  │ UP │ UP │
2020-09-23T20:53:46.741894026Z                      	      	├────────────────┼───────┼─────┼────┼────┼────┤
2020-09-23T20:53:46.741918847Z                      	      	│ /172.30.63.28  │ false │     │ 1  │    │    │
2020-09-23T20:53:46.741925744Z                      	      	└────────────────┴───────┴─────┴────┴────┴────┘ (updateNodesRequest @ server.js:103)
2020-09-23T20:53:51.656699477Z 9/23/2020, 8:53:51 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:53:51.656742000Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 0, ready: false } },
2020-09-23T20:53:51.656753457Z                      	      	  { dc2: { replicas: 3, readyReplicas: 0, ready: false } }  ] (server.js:212)
2020-09-23T20:53:56.636288606Z 9/23/2020, 8:53:56 PM	  INFO	STATUS MODIFIED:
2020-09-23T20:53:56.636337896Z                      	      	Status Counts: { '/172.30.181.10': { UP: 2 },
2020-09-23T20:53:56.636347644Z                      	      	                  '/172.30.63.28': { UP: 2 }  } (updateNodesRequest @ server.js:102)
2020-09-23T20:53:56.639626283Z 9/23/2020, 8:53:56 PM	  INFO	┌────────────────┬───────┬─────┬────┬────┬────┐
2020-09-23T20:53:56.639643543Z                      	      	│ ip             │ ready │ dc  │ id │ 0  │ 1  │
2020-09-23T20:53:56.639652877Z                      	      	├────────────────┼───────┼─────┼────┼────┼────┤
2020-09-23T20:53:56.639664922Z                      	      	│ /172.30.181.10 │ true  │ dc1 │ 0  │ UP │ UP │
2020-09-23T20:53:56.639672038Z                      	      	├────────────────┼───────┼─────┼────┼────┼────┤
2020-09-23T20:53:56.639678194Z                      	      	│ /172.30.63.28  │ true  │ dc2 │ 1  │ UP │ UP │
2020-09-23T20:53:56.639684746Z                      	      	└────────────────┴───────┴─────┴────┴────┴────┘ (updateNodesRequest @ server.js:103)
2020-09-23T20:54:01.913059082Z 9/23/2020, 8:54:01 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:54:01.913080390Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 0, ready: false } },
2020-09-23T20:54:01.913088967Z                      	      	  { dc2: { replicas: 3, readyReplicas: 0, ready: false } }  ] (server.js:212)
2020-09-23T20:54:12.177234241Z 9/23/2020, 8:54:12 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:54:12.177294307Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 0, ready: false } },
2020-09-23T20:54:12.177305603Z                      	      	  { dc2: { replicas: 3, readyReplicas: 0, ready: false } }  ] (server.js:212)
2020-09-23T20:54:18.996222104Z 9/23/2020, 8:54:18 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T20:54:19.050738469Z 9/23/2020, 8:54:19 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T20:54:20.818139012Z 9/23/2020, 8:54:20 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T20:54:22.428114385Z 9/23/2020, 8:54:22 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:54:22.428144769Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 1, ready: false } },
2020-09-23T20:54:22.428183586Z                      	      	  { dc2: { replicas: 3, readyReplicas: 0, ready: false } }  ] (server.js:212)
2020-09-23T20:54:28.274474445Z 9/23/2020, 8:54:28 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T20:54:28.329073989Z 9/23/2020, 8:54:28 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T20:54:30.530632792Z 9/23/2020, 8:54:30 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T20:54:32.683642434Z 9/23/2020, 8:54:32 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:54:32.683677759Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 1, ready: false } },
2020-09-23T20:54:32.683687327Z                      	      	  { dc2: { replicas: 3, readyReplicas: 1, ready: false } }  ] (server.js:212)
2020-09-23T20:54:36.599538076Z 9/23/2020, 8:54:36 PM	  INFO	STATUS MODIFIED:
2020-09-23T20:54:36.599581262Z                      	      	Status Counts: {  '/172.30.181.10': { UP: 3 },
2020-09-23T20:54:36.599592521Z                      	      	                   '/172.30.63.28': { UP: 3 },
2020-09-23T20:54:36.599599829Z                      	      	                 '/172.30.145.176': { undefined: 3 } } (updateNodesRequest @ server.js:102)
2020-09-23T20:54:36.605440820Z 9/23/2020, 8:54:36 PM	  INFO	┌─────────────────┬───────┬─────┬────┬────┬────┬────┐
2020-09-23T20:54:36.605473975Z                      	      	│ ip              │ ready │ dc  │ id │ 0  │ 1  │ 2  │
2020-09-23T20:54:36.605492023Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┤
2020-09-23T20:54:36.605516452Z                      	      	│ /172.30.181.10  │ true  │ dc1 │ 0  │ UP │ UP │ UP │
2020-09-23T20:54:36.605523342Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┤
2020-09-23T20:54:36.605529639Z                      	      	│ /172.30.63.28   │ true  │ dc2 │ 1  │ UP │ UP │ UP │
2020-09-23T20:54:36.605535675Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┤
2020-09-23T20:54:36.605541938Z                      	      	│ /172.30.145.176 │ false │     │ 2  │    │    │    │
2020-09-23T20:54:36.605547822Z                      	      	└─────────────────┴───────┴─────┴────┴────┴────┴────┘ (updateNodesRequest @ server.js:103)
2020-09-23T20:54:42.959185506Z 9/23/2020, 8:54:42 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:54:42.959208167Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 1, ready: false } },
2020-09-23T20:54:42.959215947Z                      	      	  { dc2: { replicas: 3, readyReplicas: 1, ready: false } }  ] (server.js:212)
2020-09-23T20:54:46.680059945Z 9/23/2020, 8:54:46 PM	  INFO	STATUS MODIFIED:
2020-09-23T20:54:46.680082946Z                      	      	Status Counts: {  '/172.30.181.10': { UP: 4 },
2020-09-23T20:54:46.680101136Z                      	      	                   '/172.30.63.28': { UP: 4 },
2020-09-23T20:54:46.680117334Z                      	      	                 '/172.30.145.176': { UP: 4 },
2020-09-23T20:54:46.680124539Z                      	      	                 '/172.30.168.161': { undefined: 4 } } (updateNodesRequest @ server.js:102)
2020-09-23T20:54:46.685181371Z 9/23/2020, 8:54:46 PM	  INFO	┌─────────────────┬───────┬─────┬────┬────┬────┬────┬────┐
2020-09-23T20:54:46.685199962Z                      	      	│ ip              │ ready │ dc  │ id │ 0  │ 1  │ 2  │ 3  │
2020-09-23T20:54:46.685208880Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┤
2020-09-23T20:54:46.685215421Z                      	      	│ /172.30.181.10  │ true  │ dc1 │ 0  │ UP │ UP │ UP │ UP │
2020-09-23T20:54:46.685221362Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┤
2020-09-23T20:54:46.685227073Z                      	      	│ /172.30.145.176 │ true  │ dc1 │ 1  │ UP │ UP │ UP │ UP │
2020-09-23T20:54:46.685232470Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┤
2020-09-23T20:54:46.685269618Z                      	      	│ /172.30.63.28   │ true  │ dc2 │ 2  │ UP │ UP │ UP │ UP │
2020-09-23T20:54:46.685276541Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┤
2020-09-23T20:54:46.685282117Z                      	      	│ /172.30.168.161 │ false │     │ 3  │    │    │    │    │
2020-09-23T20:54:46.685288083Z                      	      	└─────────────────┴───────┴─────┴────┴────┴────┴────┴────┘ (updateNodesRequest @ server.js:103)
2020-09-23T20:54:53.210710563Z 9/23/2020, 8:54:53 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:54:53.210749565Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 1, ready: false } },
2020-09-23T20:54:53.210760031Z                      	      	  { dc2: { replicas: 3, readyReplicas: 1, ready: false } }  ] (server.js:212)
2020-09-23T20:54:56.665779378Z 9/23/2020, 8:54:56 PM	  INFO	STATUS MODIFIED:
2020-09-23T20:54:56.665818036Z                      	      	Status Counts: {  '/172.30.181.10': { UP: 4 },
2020-09-23T20:54:56.665827961Z                      	      	                   '/172.30.63.28': { UP: 4 },
2020-09-23T20:54:56.665833973Z                      	      	                 '/172.30.145.176': { UP: 4 },
2020-09-23T20:54:56.665840670Z                      	      	                 '/172.30.168.161': { UP: 4 }  } (updateNodesRequest @ server.js:102)
2020-09-23T20:54:56.675344241Z 9/23/2020, 8:54:56 PM	  INFO	┌─────────────────┬───────┬─────┬────┬────┬────┬────┬────┐
2020-09-23T20:54:56.675368270Z                      	      	│ ip              │ ready │ dc  │ id │ 0  │ 1  │ 2  │ 3  │
2020-09-23T20:54:56.675377583Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┤
2020-09-23T20:54:56.675401967Z                      	      	│ /172.30.181.10  │ true  │ dc1 │ 0  │ UP │ UP │ UP │ UP │
2020-09-23T20:54:56.675410421Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┤
2020-09-23T20:54:56.675416370Z                      	      	│ /172.30.145.176 │ true  │ dc1 │ 1  │ UP │ UP │ UP │ UP │
2020-09-23T20:54:56.675422112Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┤
2020-09-23T20:54:56.675427908Z                      	      	│ /172.30.63.28   │ true  │ dc2 │ 2  │ UP │ UP │ UP │ UP │
2020-09-23T20:54:56.675436240Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┤
2020-09-23T20:54:56.675441918Z                      	      	│ /172.30.168.161 │ true  │ dc2 │ 3  │ UP │ UP │ UP │ UP │
2020-09-23T20:54:56.675447784Z                      	      	└─────────────────┴───────┴─────┴────┴────┴────┴────┴────┘ (updateNodesRequest @ server.js:103)
2020-09-23T20:55:03.534741503Z 9/23/2020, 8:55:03 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:55:03.534773182Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 1, ready: false } },
2020-09-23T20:55:03.534782840Z                      	      	  { dc2: { replicas: 3, readyReplicas: 1, ready: false } }  ] (server.js:212)
2020-09-23T20:55:09.798999869Z 9/23/2020, 8:55:09 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T20:55:09.868527888Z 9/23/2020, 8:55:09 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T20:55:11.857702470Z 9/23/2020, 8:55:11 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T20:55:13.764172032Z 9/23/2020, 8:55:13 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:55:13.764195344Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 2, ready: false } },
2020-09-23T20:55:13.764203544Z                      	      	  { dc2: { replicas: 3, readyReplicas: 1, ready: false } }  ] (server.js:212)
2020-09-23T20:55:24.034276283Z 9/23/2020, 8:55:24 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:55:24.034297802Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 2, ready: false } },
2020-09-23T20:55:24.034306176Z                      	      	  { dc2: { replicas: 3, readyReplicas: 1, ready: false } }  ] (server.js:212)
2020-09-23T20:55:26.631906395Z 9/23/2020, 8:55:26 PM	  INFO	STATUS MODIFIED:
2020-09-23T20:55:26.631949828Z                      	      	Status Counts: {  '/172.30.181.10': { UP: 5 },
2020-09-23T20:55:26.631967445Z                      	      	                   '/172.30.63.28': { UP: 5 },
2020-09-23T20:55:26.631974248Z                      	      	                 '/172.30.145.176': { UP: 5 },
2020-09-23T20:55:26.631980573Z                      	      	                 '/172.30.168.161': { UP: 5 },
2020-09-23T20:55:26.632002199Z                      	      	                   '/172.30.63.39': { undefined: 5 } } (updateNodesRequest @ server.js:102)
2020-09-23T20:55:26.639882013Z 9/23/2020, 8:55:26 PM	  INFO	┌─────────────────┬───────┬─────┬────┬────┬────┬────┬────┬────┐
2020-09-23T20:55:26.639900622Z                      	      	│ ip              │ ready │ dc  │ id │ 0  │ 1  │ 2  │ 3  │ 4  │
2020-09-23T20:55:26.639908426Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┼────┤
2020-09-23T20:55:26.639914326Z                      	      	│ /172.30.181.10  │ true  │ dc1 │ 0  │ UP │ UP │ UP │ UP │ UP │
2020-09-23T20:55:26.639921635Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┼────┤
2020-09-23T20:55:26.639927662Z                      	      	│ /172.30.145.176 │ true  │ dc1 │ 1  │ UP │ UP │ UP │ UP │ UP │
2020-09-23T20:55:26.639933403Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┼────┤
2020-09-23T20:55:26.639939576Z                      	      	│ /172.30.63.28   │ true  │ dc2 │ 2  │ UP │ UP │ UP │ UP │ UP │
2020-09-23T20:55:26.639944855Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┼────┤
2020-09-23T20:55:26.639950517Z                      	      	│ /172.30.168.161 │ true  │ dc2 │ 3  │ UP │ UP │ UP │ UP │ UP │
2020-09-23T20:55:26.639955797Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┼────┤
2020-09-23T20:55:26.639961746Z                      	      	│ /172.30.63.39   │ false │     │ 4  │    │    │    │    │    │
2020-09-23T20:55:26.639967558Z                      	      	└─────────────────┴───────┴─────┴────┴────┴────┴────┴────┴────┘ (updateNodesRequest @ server.js:103)
2020-09-23T20:55:31.495562557Z 9/23/2020, 8:55:31 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T20:55:34.280413203Z 9/23/2020, 8:55:34 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:55:34.280433556Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 2, ready: false } },
2020-09-23T20:55:34.280441671Z                      	      	  { dc2: { replicas: 3, readyReplicas: 1, ready: false } }  ] (server.js:212)
2020-09-23T20:55:36.700868923Z 9/23/2020, 8:55:36 PM	  INFO	STATUS MODIFIED:
2020-09-23T20:55:36.700908959Z                      	      	Status Counts: {  '/172.30.181.10': { UP: 5 },
2020-09-23T20:55:36.700918135Z                      	      	                   '/172.30.63.28': { UP: 5 },
2020-09-23T20:55:36.700926955Z                      	      	                 '/172.30.145.176': { UP: 5 },
2020-09-23T20:55:36.700932836Z                      	      	                 '/172.30.168.161': { UP: 5 },
2020-09-23T20:55:36.700954448Z                      	      	                   '/172.30.63.39': { UP: 5 }  } (updateNodesRequest @ server.js:102)
2020-09-23T20:55:36.708917615Z 9/23/2020, 8:55:36 PM	  INFO	┌─────────────────┬───────┬─────┬────┬────┬────┬────┬────┬────┐
2020-09-23T20:55:36.708939605Z                      	      	│ ip              │ ready │ dc  │ id │ 0  │ 1  │ 2  │ 3  │ 4  │
2020-09-23T20:55:36.708964174Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┼────┤
2020-09-23T20:55:36.708971310Z                      	      	│ /172.30.181.10  │ true  │ dc1 │ 0  │ UP │ UP │ UP │ UP │ UP │
2020-09-23T20:55:36.708977395Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┼────┤
2020-09-23T20:55:36.708983668Z                      	      	│ /172.30.145.176 │ true  │ dc1 │ 1  │ UP │ UP │ UP │ UP │ UP │
2020-09-23T20:55:36.708989674Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┼────┤
2020-09-23T20:55:36.708995245Z                      	      	│ /172.30.63.39   │ true  │ dc1 │ 2  │ UP │ UP │ UP │ UP │ UP │
2020-09-23T20:55:36.709000583Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┼────┤
2020-09-23T20:55:36.709006128Z                      	      	│ /172.30.63.28   │ true  │ dc2 │ 3  │ UP │ UP │ UP │ UP │ UP │
2020-09-23T20:55:36.709011601Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┼────┤
2020-09-23T20:55:36.709018661Z                      	      	│ /172.30.168.161 │ true  │ dc2 │ 4  │ UP │ UP │ UP │ UP │ UP │
2020-09-23T20:55:36.709023855Z                      	      	└─────────────────┴───────┴─────┴────┴────┴────┴────┴────┴────┘ (updateNodesRequest @ server.js:103)
2020-09-23T20:55:44.525373827Z 9/23/2020, 8:55:44 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:55:44.525399103Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 2, ready: false } },
2020-09-23T20:55:44.525408803Z                      	      	  { dc2: { replicas: 3, readyReplicas: 1, ready: false } }  ] (server.js:212)
2020-09-23T20:55:54.779188404Z 9/23/2020, 8:55:54 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:55:54.779208454Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 2, ready: false } },
2020-09-23T20:55:54.779217351Z                      	      	  { dc2: { replicas: 3, readyReplicas: 1, ready: false } }  ] (server.js:212)
2020-09-23T20:55:59.767803347Z 9/23/2020, 8:55:59 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T20:56:05.022003047Z 9/23/2020, 8:56:05 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:56:05.022027154Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 3, ready: true } },
2020-09-23T20:56:05.022048551Z                      	      	  { dc2: { replicas: 3, readyReplicas: 1, ready: false } } ] (server.js:212)
2020-09-23T20:56:15.278928516Z 9/23/2020, 8:56:15 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:56:15.278958181Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 3, ready: true } },
2020-09-23T20:56:15.278966023Z                      	      	  { dc2: { replicas: 3, readyReplicas: 1, ready: false } } ] (server.js:212)
2020-09-23T20:56:25.535194282Z 9/23/2020, 8:56:25 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:56:25.535220654Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 3, ready: true } },
2020-09-23T20:56:25.535229846Z                      	      	  { dc2: { replicas: 3, readyReplicas: 1, ready: false } } ] (server.js:212)
2020-09-23T20:56:35.773977920Z 9/23/2020, 8:56:35 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:56:35.774011790Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 3, ready: true } },
2020-09-23T20:56:35.774020328Z                      	      	  { dc2: { replicas: 3, readyReplicas: 1, ready: false } } ] (server.js:212)
2020-09-23T20:56:46.032135628Z 9/23/2020, 8:56:46 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:56:46.032175050Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 3, ready: true } },
2020-09-23T20:56:46.032185010Z                      	      	  { dc2: { replicas: 3, readyReplicas: 1, ready: false } } ] (server.js:212)
2020-09-23T20:56:56.283062577Z 9/23/2020, 8:56:56 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:56:56.283088391Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 3, ready: true } },
2020-09-23T20:56:56.283097620Z                      	      	  { dc2: { replicas: 3, readyReplicas: 1, ready: false } } ] (server.js:212)
2020-09-23T20:57:06.539430701Z 9/23/2020, 8:57:06 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:57:06.539455524Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 3, ready: true } },
2020-09-23T20:57:06.539463579Z                      	      	  { dc2: { replicas: 3, readyReplicas: 1, ready: false } } ] (server.js:212)
2020-09-23T20:57:16.803703788Z 9/23/2020, 8:57:16 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:57:16.803728860Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 3, ready: true } },
2020-09-23T20:57:16.803737915Z                      	      	  { dc2: { replicas: 3, readyReplicas: 1, ready: false } } ] (server.js:212)
2020-09-23T20:57:24.243765035Z 9/23/2020, 8:57:24 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T20:57:27.044539731Z 9/23/2020, 8:57:27 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:57:27.044562917Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 3, ready: true } },
2020-09-23T20:57:27.044573170Z                      	      	  { dc2: { replicas: 3, readyReplicas: 1, ready: false } } ] (server.js:212)
2020-09-23T20:57:31.245936461Z 9/23/2020, 8:57:31 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T20:57:31.286288559Z 9/23/2020, 8:57:31 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T20:57:37.297435245Z 9/23/2020, 8:57:37 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:57:37.297458651Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 3, ready: true } },
2020-09-23T20:57:37.297485240Z                      	      	  { dc2: { replicas: 3, readyReplicas: 1, ready: false } } ] (server.js:212)
2020-09-23T20:57:47.556951874Z 9/23/2020, 8:57:47 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:57:47.556978903Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 3, ready: true } },
2020-09-23T20:57:47.556987785Z                      	      	  { dc2: { replicas: 3, readyReplicas: 1, ready: false } } ] (server.js:212)
2020-09-23T20:57:57.804050922Z 9/23/2020, 8:57:57 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:57:57.804077562Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 3, ready: true } },
2020-09-23T20:57:57.804086170Z                      	      	  { dc2: { replicas: 3, readyReplicas: 1, ready: false } } ] (server.js:212)
2020-09-23T20:58:08.065497665Z 9/23/2020, 8:58:08 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:58:08.065539210Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 3, ready: true } },
2020-09-23T20:58:08.065548607Z                      	      	  { dc2: { replicas: 3, readyReplicas: 1, ready: false } } ] (server.js:212)
2020-09-23T20:58:16.007933579Z 9/23/2020, 8:58:16 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T20:58:18.292865965Z 9/23/2020, 8:58:18 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T20:58:18.336151966Z 9/23/2020, 8:58:18 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:58:18.336210145Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 3, ready: true } },
2020-09-23T20:58:18.336220220Z                      	      	  { dc2: { replicas: 3, readyReplicas: 2, ready: false } } ] (server.js:212)
2020-09-23T20:58:28.588873044Z 9/23/2020, 8:58:28 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:58:28.588911587Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 3, ready: true } },
2020-09-23T20:58:28.588922046Z                      	      	  { dc2: { replicas: 3, readyReplicas: 2, ready: false } } ] (server.js:212)
2020-09-23T20:58:36.677807265Z 9/23/2020, 8:58:36 PM	  INFO	STATUS MODIFIED:
2020-09-23T20:58:36.677849693Z                      	      	Status Counts: {  '/172.30.181.10': { UP: 6 },
2020-09-23T20:58:36.677858029Z                      	      	                   '/172.30.63.28': { UP: 6 },
2020-09-23T20:58:36.677864594Z                      	      	                 '/172.30.145.176': { UP: 6 },
2020-09-23T20:58:36.677870781Z                      	      	                 '/172.30.168.161': { UP: 6 },
2020-09-23T20:58:36.677879541Z                      	      	                   '/172.30.63.39': { UP: 6 },
2020-09-23T20:58:36.677886972Z                      	      	                 '/172.30.227.164': { undefined: 6 } } (updateNodesRequest @ server.js:102)
2020-09-23T20:58:36.685906112Z 9/23/2020, 8:58:36 PM	  INFO	┌─────────────────┬───────┬─────┬────┬────┬────┬────┬────┬────┬────┐
2020-09-23T20:58:36.685943870Z                      	      	│ ip              │ ready │ dc  │ id │ 0  │ 1  │ 2  │ 3  │ 4  │ 5  │
2020-09-23T20:58:36.685956562Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┼────┼────┤
2020-09-23T20:58:36.685982024Z                      	      	│ /172.30.181.10  │ true  │ dc1 │ 0  │ UP │ UP │ UP │ UP │ UP │ UP │
2020-09-23T20:58:36.685988439Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┼────┼────┤
2020-09-23T20:58:36.685994461Z                      	      	│ /172.30.145.176 │ true  │ dc1 │ 1  │ UP │ UP │ UP │ UP │ UP │ UP │
2020-09-23T20:58:36.685999913Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┼────┼────┤
2020-09-23T20:58:36.686005614Z                      	      	│ /172.30.63.39   │ true  │ dc1 │ 2  │ UP │ UP │ UP │ UP │ UP │ UP │
2020-09-23T20:58:36.686011375Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┼────┼────┤
2020-09-23T20:58:36.686016911Z                      	      	│ /172.30.63.28   │ true  │ dc2 │ 3  │ UP │ UP │ UP │ UP │ UP │ UP │
2020-09-23T20:58:36.686022441Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┼────┼────┤
2020-09-23T20:58:36.686027670Z                      	      	│ /172.30.168.161 │ true  │ dc2 │ 4  │ UP │ UP │ UP │ UP │ UP │ UP │
2020-09-23T20:58:36.686032838Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┼────┼────┤
2020-09-23T20:58:36.686037996Z                      	      	│ /172.30.227.164 │ false │     │ 5  │    │    │    │    │    │    │
2020-09-23T20:58:36.686043818Z                      	      	└─────────────────┴───────┴─────┴────┴────┴────┴────┴────┴────┴────┘ (updateNodesRequest @ server.js:103)
2020-09-23T20:58:38.847010074Z 9/23/2020, 8:58:38 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:58:38.847053312Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 3, ready: true } },
2020-09-23T20:58:38.847063162Z                      	      	  { dc2: { replicas: 3, readyReplicas: 2, ready: false } } ] (server.js:212)
2020-09-23T20:58:46.753746385Z 9/23/2020, 8:58:46 PM	  INFO	STATUS MODIFIED:
2020-09-23T20:58:46.753787282Z                      	      	Status Counts: {  '/172.30.181.10': { UP: 6 },
2020-09-23T20:58:46.753795742Z                      	      	                   '/172.30.63.28': { UP: 6 },
2020-09-23T20:58:46.753801737Z                      	      	                 '/172.30.145.176': { UP: 6 },
2020-09-23T20:58:46.753808034Z                      	      	                 '/172.30.168.161': { UP: 6 },
2020-09-23T20:58:46.753813929Z                      	      	                   '/172.30.63.39': { UP: 6 },
2020-09-23T20:58:46.753819552Z                      	      	                 '/172.30.227.164': { UP: 6 }  } (updateNodesRequest @ server.js:102)
2020-09-23T20:58:46.762056848Z 9/23/2020, 8:58:46 PM	  INFO	┌─────────────────┬───────┬─────┬────┬────┬────┬────┬────┬────┬────┐
2020-09-23T20:58:46.762097825Z                      	      	│ ip              │ ready │ dc  │ id │ 0  │ 1  │ 2  │ 3  │ 4  │ 5  │
2020-09-23T20:58:46.762106452Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┼────┼────┤
2020-09-23T20:58:46.762113828Z                      	      	│ /172.30.181.10  │ true  │ dc1 │ 0  │ UP │ UP │ UP │ UP │ UP │ UP │
2020-09-23T20:58:46.762120270Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┼────┼────┤
2020-09-23T20:58:46.762126808Z                      	      	│ /172.30.145.176 │ true  │ dc1 │ 1  │ UP │ UP │ UP │ UP │ UP │ UP │
2020-09-23T20:58:46.762132492Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┼────┼────┤
2020-09-23T20:58:46.762138500Z                      	      	│ /172.30.63.39   │ true  │ dc1 │ 2  │ UP │ UP │ UP │ UP │ UP │ UP │
2020-09-23T20:58:46.762163426Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┼────┼────┤
2020-09-23T20:58:46.762169377Z                      	      	│ /172.30.63.28   │ true  │ dc2 │ 3  │ UP │ UP │ UP │ UP │ UP │ UP │
2020-09-23T20:58:46.762175203Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┼────┼────┤
2020-09-23T20:58:46.762192019Z                      	      	│ /172.30.168.161 │ true  │ dc2 │ 4  │ UP │ UP │ UP │ UP │ UP │ UP │
2020-09-23T20:58:46.762197883Z                      	      	├─────────────────┼───────┼─────┼────┼────┼────┼────┼────┼────┼────┤
2020-09-23T20:58:46.762203727Z                      	      	│ /172.30.227.164 │ true  │ dc2 │ 5  │ UP │ UP │ UP │ UP │ UP │ UP │
2020-09-23T20:58:46.762209579Z                      	      	└─────────────────┴───────┴─────┴────┴────┴────┴────┴────┴────┴────┘ (updateNodesRequest @ server.js:103)
2020-09-23T20:58:49.113487024Z 9/23/2020, 8:58:49 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:58:49.113524807Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 3, ready: true } },
2020-09-23T20:58:49.113534658Z                      	      	  { dc2: { replicas: 3, readyReplicas: 2, ready: false } } ] (server.js:212)
2020-09-23T20:58:59.368665179Z 9/23/2020, 8:58:59 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:58:59.368708024Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 3, ready: true } },
2020-09-23T20:58:59.368716512Z                      	      	  { dc2: { replicas: 3, readyReplicas: 2, ready: false } } ] (server.js:212)
2020-09-23T20:59:09.634040258Z 9/23/2020, 8:59:09 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:59:09.634065570Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 3, ready: true } },
2020-09-23T20:59:09.634116762Z                      	      	  { dc2: { replicas: 3, readyReplicas: 2, ready: false } } ] (server.js:212)
2020-09-23T20:59:19.932327096Z 9/23/2020, 8:59:19 PM	  WARN	WAITING UNREADY DCS:
2020-09-23T20:59:19.932354424Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 3, ready: true } },
2020-09-23T20:59:19.932362759Z                      	      	  { dc2: { replicas: 3, readyReplicas: 2, ready: false } } ] (server.js:212)
2020-09-23T20:59:21.939193198Z 9/23/2020, 8:59:21 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T20:59:30.179722649Z 9/23/2020, 8:59:30 PM	  INFO	READY ALL DCS:
2020-09-23T20:59:30.179748332Z                      	      	[ { dc1: { replicas: 3, readyReplicas: 3, ready: true } },
2020-09-23T20:59:30.179756066Z                      	      	  { dc2: { replicas: 3, readyReplicas: 3, ready: true } }  ] (server.js:214)
2020-09-23T21:09:21.974583765Z 9/23/2020, 9:09:21 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:09:21.977451982Z 9/23/2020, 9:09:21 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:09:21.984010908Z 9/23/2020, 9:09:21 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:09:21.986764887Z 9/23/2020, 9:09:21 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:19:22.036952682Z 9/23/2020, 9:19:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:19:22.038566819Z 9/23/2020, 9:19:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:19:22.049347265Z 9/23/2020, 9:19:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:19:22.051048018Z 9/23/2020, 9:19:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:19:22.054184730Z 9/23/2020, 9:19:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:19:22.056859630Z 9/23/2020, 9:19:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:19:22.059648539Z 9/23/2020, 9:19:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:19:22.061361701Z 9/23/2020, 9:19:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:29:22.118022161Z 9/23/2020, 9:29:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:29:22.119741768Z 9/23/2020, 9:29:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:29:22.126649638Z 9/23/2020, 9:29:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:29:22.127720785Z 9/23/2020, 9:29:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:29:22.132000678Z 9/23/2020, 9:29:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:29:22.135546965Z 9/23/2020, 9:29:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:29:22.138351798Z 9/23/2020, 9:29:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:29:22.140156553Z 9/23/2020, 9:29:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:29:22.145166509Z 9/23/2020, 9:29:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:29:22.145878791Z 9/23/2020, 9:29:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:29:22.155956796Z 9/23/2020, 9:29:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:29:22.155970644Z 9/23/2020, 9:29:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:29:22.155976773Z 9/23/2020, 9:29:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:29:22.157095710Z 9/23/2020, 9:29:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:29:22.159935025Z 9/23/2020, 9:29:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:29:22.161487400Z 9/23/2020, 9:29:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.215342195Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.216505145Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.225751949Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.227296935Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.230399674Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.233437964Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.236473143Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.238021202Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.245076209Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.246718113Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.260965031Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.267528029Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.272730401Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.275088589Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.278521310Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.282007189Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.285835257Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.287948994Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.294847655Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.296564638Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.301090678Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.303577496Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.313336354Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.316177510Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.319029405Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.320575799Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.323328252Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.324976334Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.331333268Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.333983046Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.341870889Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:39:22.343431651Z 9/23/2020, 9:39:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.336063998Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.337702403Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.345434636Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.347058839Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.356019150Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.358585403Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.361289627Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.362875184Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.419231211Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.420906249Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.423745968Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.426621429Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.430225287Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.432017514Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.435840896Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.437478597Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.459297704Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.460933466Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.465114384Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.466868835Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.469748185Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.472778478Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.476593639Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.479265141Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.490270914Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.492281547Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.495712944Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.497893262Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.503356828Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.505514485Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.510521198Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.512709463Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.516115735Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.518316366Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.521666753Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.525541324Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.528661349Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.530685391Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.533796059Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.536500536Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.543456519Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.544988513Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.547733832Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.549025080Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.551539240Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.552914073Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.555363627Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.556689827Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.559163804Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.560719598Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.587682305Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.589150998Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.591973252Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.594677734Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.597325024Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.598882799Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.601664242Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.603246270Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.605967094Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.607522493Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.610271694Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.611792506Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.614601396Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:49:22.620436597Z 9/23/2020, 9:49:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.421758591Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.423556483Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.430362679Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.432083532Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.437384201Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.440112273Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.442827525Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.444498302Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.448550438Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.450208665Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.457360840Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.459084894Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.461781921Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.464431387Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.598036593Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.599701658Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.606287391Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.606567251Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.612845801Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.614464499Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.653192831Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.654846075Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.670404220Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.671871963Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.675194870Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.676557440Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.683070042Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.685413001Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.719801431Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.722335902Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.724880695Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.726359205Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.728850558Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.730261627Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.732770444Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.735409398Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.737976366Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.739354335Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.746386216Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.747691500Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.827513423Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.827538405Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.827545887Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.829382895Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.832872143Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.835082883Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.838555565Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.843023931Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.875787674Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.877953175Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.880578547Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.882122339Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.885463934Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.886832218Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.889355746Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.890888645Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.893397507Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.894903893Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.897471772Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.898880595Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.901512169Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.902960532Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.905463156Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.908107644Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.910794434Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.912398808Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.915223504Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.916866455Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.944822804Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.946317590Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.948778305Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.950291003Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.952713631Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.954149542Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.956650413Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.960774060Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.962367901Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.963742840Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.966393880Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.967774068Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.970267799Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.971736103Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.974473974Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.976038845Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.978722467Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.980344698Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.983046964Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.984621535Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.987515128Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.988987997Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.991712688Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.993257604Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.996002709Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:22.997606018Z 9/23/2020, 9:59:22 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.006707639Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.008361973Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.017931858Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.019363896Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.051323133Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.052945155Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.055782891Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.057355116Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.060090508Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.061696206Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.064481098Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.066133614Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.068814487Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.070398942Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.073160751Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.074710772Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.077612746Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.079219168Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.083062788Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.086636626Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.089755661Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.091163139Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.093788293Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.095167409Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.097715288Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.100038427Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.102584377Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.104040380Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.116368386Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.117833173Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.120246151Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.121715498Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.124178852Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)
2020-09-23T21:59:23.125603460Z 9/23/2020, 9:59:23 PM	  INFO	updateEndpointFn: [object Object] (updateEndpointsFn @ maintenance.js:376)

Here are the net stat logs:

➜  icm-cassandra git: ✗ date; k exec test-cassandra-prober-9cb6b5f9-pcgjd -c prober -- netstat -al | grep kube
Wed Sep 23 17:07:01 EDT 2020
tcp        0      0 test-cassandra-pr:49498 kubernetes.default.:443 ESTABLISHED
➜  icm-cassandra git: ✗ date; k exec test-cassandra-prober-9cb6b5f9-pcgjd -c prober -- netstat -al | grep kube
Wed Sep 23 17:57:26 EDT 2020
tcp        0      0 test-cassandra-pr:37816 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37828 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37896 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37888 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37836 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37872 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37864 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37672 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37800 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37852 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37796 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37708 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37880 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37856 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37868 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37704 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37808 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37848 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37860 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37876 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37676 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37824 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37844 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37884 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37804 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37892 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37900 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37792 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37812 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37820 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37832 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:37840 kubernetes.default.:443 ESTABLISHED
➜  icm-cassandra git: ✗ date; k exec test-cassandra-prober-9cb6b5f9-pcgjd -c prober -- netstat -al | grep kube
Wed Sep 23 18:01:32 EDT 2020
tcp        0      0 test-cassandra-pr:45022 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44686 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45114 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45122 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45014 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44970 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45130 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44682 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44982 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45154 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45026 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45086 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44966 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45054 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45034 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44998 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45098 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45010 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44986 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45062 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45018 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44722 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45058 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44694 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44726 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44730 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45126 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44702 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44842 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45146 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45006 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45142 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44990 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44834 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45150 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45094 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45138 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45118 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45134 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45070 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44958 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45066 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45050 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44782 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45090 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45082 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45106 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45110 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44690 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45078 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45046 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44698 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44974 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45042 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44678 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45030 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44978 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45102 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45038 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45074 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44994 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44838 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:44962 kubernetes.default.:443 ESTABLISHED
tcp        0      0 test-cassandra-pr:45002 kubernetes.default.:443 ESTABLISHED

@kscharm
Copy link

kscharm commented Sep 23, 2020

Also notice that all the port numbers change every time there is a burst of new connections.

@brendandburns
Copy link
Contributor Author

If you only have one pod, it's really weird that there are four different ip addresses in your API server logs.

I think at this point I really need to get a local repro to make progress, so I will focus on that.

@brendandburns
Copy link
Contributor Author

(and I'm afraid it may take a while given other obligations)

@k8s-ci-robot
Copy link
Contributor

@brendandburns: PR needs rebase.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@k8s-ci-robot k8s-ci-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Oct 12, 2020
// TODO: I don't love this, because both 'error' and 'close' call the done handler with the same error
// We should probably only do one or the other, but there's challenges because of async delivery and it's
// important to know if the close event is occurring because of an error. So for now, this needs to be
// handled in the client.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of leaving the code in watcher as it is and having workarounds for all potential users of the watcher that are IMHO unreliable anyway, I think it would have been better to fix it here. Would a boolean variable indicating that the done callback was called be sufficient? That way we could guarantee that the done callback is called at most once, that is exactly what users of the watcher expect.

// watch.ts
if (!this.stopped) {
this.stopped = true;
this.callbackCache[ERROR].forEach((elt: ObjectCallback<T>) => elt(err));
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see that we would set this.stopped to false again in the start() method. If I understand correctly it prevents the cache from being reused. And if we set stopped to false in start() method then it would create a race condition when doneHandler is called twice and stopped is set to false between those two calls. To me, that does not look like a good way to go. Fixing the watcher to call doneCallback just once sounds like a better option.

@brendandburns
Copy link
Contributor Author

@jkryl @kscharm

I merged in this PR:
#555

Which I think resolves the issue by splitting the callbacks.

Can you test that out and see if it resolves things?

I'm going to close this PR as I don't think it will ever merge.

@jkryl
Copy link

jkryl commented Nov 24, 2020

Your fix in other PR solves the problem with setting stopped that I mentioned here, though I think it could have been better. Adding another callback for error complicates the usage of watcher, while the only thing that we really need is to call done callback just once. That can be fixed in watcher without changing any of the code using the watcher. So 1. simple and 2. compatible:

https://github.com/jkryl/javascript/commit/40cb59c79223cfba30d8ab2b254d4aae148c3134

I took this PR and improved it further. The fix for connection leak is also part of those changes. It works for me and our product so far, though I would like to give it some more time to prove its stability and test it on other clouds than just AWS and Azure.

@jc-roman
Copy link
Contributor

jc-roman commented Dec 16, 2020

@jkryl Your referenced fork (jkryl@40cb59c) has what I suspected was the cause of the memory leak (#494) but didn't get to test it. It is one specific line in src/cache.ts:
image

It created a new watch referenced by no variable (hence my suspicion it was the source of the memory leak), instead of updating the cache's instance. If you haven't already, creating a PR of your fork would be a great contribution!

@jkryl
Copy link

jkryl commented Dec 17, 2020

@jc-roman : yes. That line but also the line where abort is called for the request ("destroy" does not really destroy the connection). I might have some time to prepare a PR before the end of this year. Basically, the fix is good as it is, but I just need to modify test cases.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
approved Indicates a PR has been approved by an approver from all required OWNERS files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. size/M Denotes a PR that changes 30-99 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Connection leak in informer?
6 participants