Skip to content

Commit 87d36c8

Browse files
authored
Merge pull request #33 from radondb/main-optimize-pod_exec_command
keep pod_exec_command stdout double quite
2 parents e9eafc9 + f903b3c commit 87d36c8

File tree

1 file changed

+17
-7
lines changed
  • platforms/kubernetes/postgres-operator/postgres

1 file changed

+17
-7
lines changed

Diff for: platforms/kubernetes/postgres-operator/postgres/handle.py

+17-7
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import json
12
import logging
23
import kopf
34
import paramiko
@@ -9,7 +10,6 @@
910
import random
1011
import tempfile
1112
import re
12-
import ast
1313
from kubernetes import client, config
1414
from kubernetes.stream import stream
1515
from config import operator_config
@@ -2125,7 +2125,13 @@ def backup_postgresql_to_s3(
21252125
"backup_postgresql_to_s3 get backup info failed.")
21262126
logger.warning(
21272127
f"backup_postgresql_to_s3 get backup verbose info = {output}")
2128-
backup_info = ast.literal_eval(output)
2128+
2129+
# process backup status
2130+
backup_info = {BARMAN_BACKUP_LISTS: ""}
2131+
try:
2132+
backup_info = json.loads(output)
2133+
except json.JSONDecodeError as e:
2134+
logger.error(f"decode backup_info with error, {e}")
21292135
new_backup_status = get_backup_status_from_backup_info(backup_info)
21302136

21312137
logger.warning(f"old_backup_status = {old_backup_status}")
@@ -2186,7 +2192,9 @@ def backup_postgresql_to_s3(
21862192
backup_list_status.append(new_status)
21872193

21882194
# set backup status
2189-
set_cluster_status(meta, CLUSTER_STATUS_BACKUP, backup_list_status, logger)
2195+
if len(backup_list_status) > 0:
2196+
set_cluster_status(meta, CLUSTER_STATUS_BACKUP, backup_list_status,
2197+
logger)
21902198

21912199
# free conns
21922200
conns.free_conns()
@@ -2496,8 +2504,12 @@ def pod_exec_command(name: str,
24962504
container=PODSPEC_CONTAINERS_POSTGRESQL_CONTAINER,
24972505
stdin=False,
24982506
stdout=True,
2499-
tty=False)
2500-
return resp.replace('\n', '')
2507+
tty=False,
2508+
_preload_content=False)
2509+
# in order to keep json format.
2510+
# more information please visit https://github.com/kubernetes-client/python/issues/811#issuecomment-663458763
2511+
resp.run_forever()
2512+
return resp.read_stdout().replace('\n', '')
25012513
except Exception as e:
25022514
if interrupt:
25032515
raise kopf.PermanentError(
@@ -2506,8 +2518,6 @@ def pod_exec_command(name: str,
25062518
logger.error(f"pod {name} exec command({cmd}) failed {e}")
25072519
return FAILED
25082520

2509-
return resp.replace('\n', '')
2510-
25112521

25122522
def docker_exec_command(role: str,
25132523
ssh: paramiko.SSHClient,

0 commit comments

Comments
 (0)