Skip to content

Commit b8c4e18

Browse files
anrsanrs
and
anrs
authored
fix: too large response (#278)
Co-authored-by: anrs <anders.hu@shopee.com>
1 parent cfd0482 commit b8c4e18

File tree

1 file changed

+41
-3
lines changed

1 file changed

+41
-3
lines changed

scripts/meta_transfer_as_rename2workload.py

+41-3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,43 @@ def remove_prefix(s, prefix):
1212
return s[len(prefix):].lstrip('/') if s.startswith(prefix) else s
1313

1414
def range_prefix(meta, obj_prefix, fn):
15+
etcd = meta.etcd
16+
orig_prefix = os.path.join(meta.orig_root_prefix, obj_prefix)
17+
range_start = orig_prefix
18+
range_end = etcd3.utils.increment_last_byte(
19+
etcd3.utils.to_bytes(range_start)
20+
)
21+
22+
while True:
23+
range_request = etcd3.etcdrpc.RangeRequest()
24+
range_request.key = etcd3.utils.to_bytes(range_start)
25+
range_request.keys_only = False
26+
range_request.range_end = etcd3.utils.to_bytes(range_end)
27+
range_request.sort_order = etcd3.etcdrpc.RangeRequest.ASCEND
28+
range_request.sort_target = etcd3.etcdrpc.RangeRequest.KEY
29+
range_request.serializable = True
30+
range_request.limit = 1000
31+
32+
range_response = etcd.kvstub.Range(
33+
range_request,
34+
etcd.timeout,
35+
credentials=etcd.call_credentials,
36+
metadata=etcd.metadata,
37+
)
38+
39+
for kv in range_response.kvs:
40+
orig_key = kv.key.decode('utf-8')
41+
objname = remove_prefix(orig_key, orig_prefix)
42+
new_key = fn(objname, kv.value.decode('utf-8'))
43+
if new_key:
44+
print('convert %s to %s' % (orig_key, new_key))
45+
46+
if not range_response.more:
47+
break
48+
49+
range_start = etcd3.utils.increment_last_byte(kv.key)
50+
51+
def range_prefix2(meta, obj_prefix, fn):
1552
orig_prefix = os.path.join(meta.orig_root_prefix, obj_prefix)
1653

1754
for orig_value, orig_meta in meta.etcd.get_prefix(orig_prefix):
@@ -151,7 +188,8 @@ def _trans_container(self, wrk_id, orig_value):
151188
def _trans_deploy(self, deploy_key, orig_value):
152189
parts = deploy_key.split('/')
153190
if len(parts) != 4:
154-
raise ValueError('invalid deploy key: %s' % deploy_key)
191+
print('invalid deploy key: %s' % deploy_key)
192+
return
155193

156194
appname, entrypoint, nodename, wrk_id = parts
157195

@@ -200,8 +238,8 @@ def get(new_field, orig_field, transit_field, default=None):
200238
cpu_quota_limit=get('cpu_quota_limit', 'quota', 'CPUQuotaLimit'),
201239
memory_request=get('memory_request', 'memory', 'MemoryRequest'),
202240
memory_limit=get('memory_limit', 'memory', 'MemoryLimit'),
203-
volume_request=get('volume_request', 'volumes', 'VolumeRequest'),
204-
volume_limit=get('volume_limit', 'volumes', 'VolumeLimit'),
241+
volume_request=get('volume_request', 'volumes', 'VolumeRequest', default=[]),
242+
volume_limit=get('volume_limit', 'volumes', 'VolumeLimit', default=[]),
205243
volume_plan_request=get('volume_plan_request', 'volume_plan', 'VolumePlanRequest', default={}),
206244
volume_plan_limit=get('volume_plan_limit', 'volume_plan', 'VolumePlanLimit', default={}),
207245
volume_changed=dic.get('volume_changed', False),

0 commit comments

Comments
 (0)