On Wed, Jan 3, 2018 at 8:54 PM, Dave Page <dp...@pgadmin.org> wrote: > Hi > > On Mon, Dec 25, 2017 at 11:03 AM, Khushboo Vashi < > khushboo.va...@enterprisedb.com> wrote: > >> Hi, >> >> Please find the attached patch to fix RM #2963: Backup database, Restore >> database and Maintenance Database failed for é object. >> > > With the patch applied, I get: > > 2018-01-03 15:23:00,110: INFO pgadmin: Executing the process executor > with the arguments: ['/Users/dpage/.virtualenvs/pgadmin4/bin/python', > '/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/process_executor.py', > '/usr/local/pgsql/bin/pg_dump', u'--file', u'/Users/dpage/e.sql', > u'--host', u'localhost', u'--port', '5432', u'--username', u'postgres', > u'--no-password', u'--verbose', u'--format=c', u'--blobs', u'\xe9'] > 2018-01-03 15:23:00,117: INFO werkzeug: 127.0.0.1 - - [03/Jan/2018 > 15:23:00] "POST /backup/job/1/object HTTP/1.1" 200 - > Exception in thread Thread-6: > Traceback (most recent call last): > File > "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", > line 810, in __bootstrap_inner > self.run() > File > "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", > line 763, in run > self.__target(*self.__args, **self.__kwargs) > File "/System/Library/Frameworks/Python.framework/Versions/2.7/ > lib/python2.7/SocketServer.py", line 602, in process_request_thread > self.handle_error(request, client_address) > File "/System/Library/Frameworks/Python.framework/Versions/2.7/ > lib/python2.7/SocketServer.py", line 599, in process_request_thread > self.finish_request(request, client_address) > File "/System/Library/Frameworks/Python.framework/Versions/2.7/ > lib/python2.7/SocketServer.py", line 334, in finish_request > self.RequestHandlerClass(request, client_address, self) > File "/System/Library/Frameworks/Python.framework/Versions/2.7/ > lib/python2.7/SocketServer.py", line 655, in __init__ > self.handle() > File > "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/serving.py", > line 200, in handle > rv = BaseHTTPRequestHandler.handle(self) > File "/System/Library/Frameworks/Python.framework/Versions/2.7/ > lib/python2.7/BaseHTTPServer.py", line 340, in handle > self.handle_one_request() > File > "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/serving.py", > line 235, in handle_one_request > return self.run_wsgi() > File > "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/serving.py", > line 177, in run_wsgi > execute(self.server.app) > File > "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/werkzeug/serving.py", > line 165, in execute > application_iter = app(environ, start_response) > File > "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 2000, in __call__ > return self.wsgi_app(environ, start_response) > File > "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1991, in wsgi_app > response = self.make_response(self.handle_exception(e)) > File > "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1567, in handle_exception > reraise(exc_type, exc_value, tb) > File > "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1988, in wsgi_app > response = self.full_dispatch_request() > File > "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1641, in full_dispatch_request > rv = self.handle_user_exception(e) > File > "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1544, in handle_user_exception > reraise(exc_type, exc_value, tb) > File > "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1639, in full_dispatch_request > rv = self.dispatch_request() > File > "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask/app.py", > line 1625, in dispatch_request > return self.view_functions[rule.endpoint](**req.view_args) > File > "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/flask_login.py", > line 792, in decorated_view > return func(*args, **kwargs) > File "/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/__init__.py", > line 62, in index > return make_response(response=BatchProcess.list()) > File "/Users/dpage/git/pgadmin4/web/pgadmin/misc/bgprocess/processes.py", > line 512, in list > desc = loads(p.desc) > File > "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/pickle.py", > line 1381, in loads > file = StringIO(str) > UnicodeEncodeError: 'ascii' codec can't encode character u'\ufffd' in > position 138: ordinal not in range(128) > > Fixed. Please find the attached updated patch.
> -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company >
diff --git a/web/pgadmin/misc/bgprocess/processes.py b/web/pgadmin/misc/bgprocess/processes.py index 39bb8e3..3f23a99 100644 --- a/web/pgadmin/misc/bgprocess/processes.py +++ b/web/pgadmin/misc/bgprocess/processes.py @@ -164,12 +164,13 @@ class BatchProcess(object): csv_writer.writerow(_args) args_val = args_csv_io.getvalue().strip(str('\r\n')) + desc_str = dumps(self.desc) j = Process( pid=int(id), command=_cmd, - arguments=args_val.decode('utf-8', 'replace') if IS_PY2 and hasattr(args_val, 'decode') \ - else args_val, - logdir=log_dir, desc=dumps(self.desc), user_id=current_user.id + arguments=args_val.decode('utf-8', 'replace') if IS_PY2 and hasattr(args_val, 'decode') else args_val, + logdir=log_dir, desc=desc_str.decode('utf-8', 'ignore') if IS_PY2 and hasattr(desc_str, 'decode') + else desc_str, user_id=current_user.id ) db.session.add(j) db.session.commit() @@ -508,6 +509,7 @@ class BatchProcess(object): etime = parser.parse(p.end_time or get_current_time()) execution_time = (etime - stime).total_seconds() + p.desc = p.desc.encode('utf-8', 'ignore') if IS_PY2 and hasattr(p.desc, 'decode') else p.desc desc = loads(p.desc) details = desc