Skip to content

Commit 825e1ba

Browse files
authored
Merge pull request #815 from helgi/rc_ready
ref(scheduler): use observedGeneration instead of resourceVersion for RC readiness
2 parents 3d901bf + 035eba6 commit 825e1ba

1 file changed

Lines changed: 9 additions & 17 deletions

File tree

rootfs/scheduler/__init__.py

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -930,20 +930,7 @@ def _scale_rc(self, namespace, name, desired):
930930
logger.info("scaling RC {} in Namespace {} from {} to {} replicas".format(name, namespace, current, desired)) # noqa
931931

932932
self._update_rc(namespace, name, rc)
933-
934-
resource_ver = rc['metadata']['resourceVersion']
935-
logger.info("waiting for RC {} to get a newer resource version than {} (30s timeout)".format(name, resource_ver)) # noqa
936-
for waited in range(30):
937-
js_template = self._get_rc(namespace, name).json()
938-
if js_template["metadata"]["resourceVersion"] != resource_ver:
939-
break
940-
941-
if waited > 0 and (waited % 10) == 0:
942-
logger.info("waited {}s so far for a new resource version".format(waited))
943-
944-
time.sleep(1)
945-
946-
logger.info("RC {} has a new resource version {}".format(name, js_template["metadata"]["resourceVersion"])) # noqa
933+
self._wait_for_rc_ready(namespace, name)
947934

948935
# Get application container
949936
container_name = '{}-{}'.format(
@@ -1032,16 +1019,21 @@ def _create_rc(self, namespace, name, image, command, **kwargs): # noqa
10321019

10331020
def _wait_for_rc_ready(self, namespace, name):
10341021
"""
1035-
Waits for status/observedGeneration and metadata/generation to match
1036-
Indicates RC is ready
1022+
Looks at status/observedGeneration and metadata/generation and
1023+
waits for observedGeneration >= generation to happen, indicates RC is ready
1024+
1025+
More information is also available at:
1026+
https://github.com/kubernetes/kubernetes/blob/master/docs/devel/api-conventions.md#metadata
10371027
"""
1028+
logger.debug("waiting for ReplicationController {} to get a newer generation (30s timeout)".format(name)) # noqa
10381029
for _ in range(30):
10391030
try:
10401031
rc = self._get_rc(namespace, name).json()
10411032
if (
10421033
"observedGeneration" in rc["status"] and
1043-
rc["metadata"]["generation"] == rc["status"]["observedGeneration"]
1034+
rc["status"]["observedGeneration"] >= rc["metadata"]["generation"]
10441035
):
1036+
logger.debug("ReplicationController {} got a newer generation (30s timeout)".format(name)) # noqa
10451037
break
10461038

10471039
time.sleep(1)

0 commit comments

Comments
 (0)