borgend/instance.py

changeset 95
41bd7025532f
parent 89
51cc2e25af38
child 97
96d5adbe0205
equal deleted inserted replaced
94:2a11fd29c192 95:41bd7025532f
76 # We don't do passphrase input etc. 76 # We don't do passphrase input etc.
77 self.proc.stdin.close() 77 self.proc.stdin.close()
78 78
79 def read_result(self): 79 def read_result(self):
80 stream=self.proc.stdout 80 stream=self.proc.stdout
81 line=stream.read(-1) 81 try:
82 line=stream.read(-1)
83 except Exception:
84 logger.exception('Borg stdout pipe read failed')
85
82 if line==b'': 86 if line==b'':
83 logger.debug('Borg stdout pipe EOF?') 87 #logger.debug('Borg stdout pipe EOF?')
84 return None 88 return None
85 89
86 try: 90 try:
87 return json.loads(line) 91 return json.loads(line.decode())
88 except Exception as err: 92 except Exception:
89 logger.warning('JSON parse failed on: "%s"' % line) 93 logger.exception('JSON parse failed on: %s' % str(line))
90 return None 94 return None
91 95
92 def read_log(self): 96 def read_log(self):
93 stream=self.proc.stderr 97 stream=self.proc.stderr
94 try: 98 try:
95 line=stream.readline() 99 line=stream.readline()
96 except err: 100 except Exception:
97 logger.debug('Pipe read failed: %s' % str(err)) 101 logger.exception('Pipe stderr pipe read failed')
98 102
99 return {'type': 'log_message', 103 return {'type': 'log_message',
100 'levelname': 'CRITICAL', 104 'levelname': 'CRITICAL',
101 'name': 'borgend.instance.BorgInstance', 105 'name': 'borgend.instance.BorgInstance',
102 'msgid': 'Borgend.Exception', 106 'msgid': 'Borgend.Exception',
103 'message': err} 107 'message': err}
104 108
105 if line==b'': 109 if line==b'':
106 110 #logger.debug('Borg stderr pipe EOF?')
107 logger.debug('Borg stderr pipe EOF?')
108
109 return None 111 return None
110 112
113
111 try: 114 try:
112 res=json.loads(line) 115 res=json.loads(line.decode())
113 if 'type' not in res: 116 if 'type' not in res:
114 res['type']='UNKNOWN' 117 res['type']='UNKNOWN'
115 return res 118 return res
116 except: 119 except:
117 logger.debug('JSON parse failed on: "%s"' % str(line)) 120 logger.exception('JSON parse failed on: %s' % str(line))
118 121
119 errmsg=line 122 errmsg=line
120 for line in iter(stream.readline, b''): 123 for line in iter(stream.readline, b''):
121 errmsg=errmsg+line 124 errmsg=errmsg+line
122 125

mercurial