← Back to team overview

openerp-community team mailing list archive

lp:~openerp-community/openobject-server/stefan-therp_lp879872-6.1 into lp:openobject-server

 

Stefan Rijnhart (Therp) has proposed merging lp:~openerp-community/openobject-server/stefan-therp_lp879872-6.1 into lp:openobject-server.

Requested reviews:
  Olivier Dony (OpenERP) (odo-openerp)
Related bugs:
  Bug #879872 in OpenERP Server: "Does not check return value of pg_restore"
  https://bugs.launchpad.net/openobject-server/+bug/879872

For more details, see:
https://code.launchpad.net/~openerp-community/openobject-server/stefan-therp_lp879872-6.1/+merge/80125

This branch slightly modifies the code around the pg_restore command, so that any error condition is properly signalled.

-- 
https://code.launchpad.net/~openerp-community/openobject-server/stefan-therp_lp879872-6.1/+merge/80125
Your team OpenERP Community is subscribed to branch lp:~openerp-community/openobject-server/stefan-therp_lp879872-6.1.
=== modified file 'openerp/service/web_services.py'
--- openerp/service/web_services.py	2011-10-13 10:47:50 +0000
+++ openerp/service/web_services.py	2011-10-22 12:02:24 +0000
@@ -213,10 +213,10 @@
             cmd.append('--port=' + str(tools.config['db_port']))
         cmd.append(db_name)
 
-        stdin, stdout = tools.exec_pg_command_pipe(*tuple(cmd))
-        stdin.close()
-        data = stdout.read()
-        res = stdout.close()
+        pop = tools.exec_pg_command_pipe(*tuple(cmd))
+        pop.stdin.close()
+        data = pop.stdout.read()
+        res = pop.wait()
         if res:
             logger.notifyChannel("web-services", netsvc.LOG_ERROR,
                     'DUMP DB: %s failed\n%s' % (db_name, data))
@@ -257,11 +257,11 @@
             args2=list(args2)
             args2.append(' ' + tmpfile)
             args2=tuple(args2)
-        stdin, stdout = tools.exec_pg_command_pipe(*args2)
+        pop = tools.exec_pg_command_pipe(*args2)
         if not os.name == "nt":
-            stdin.write(base64.decodestring(data))
-        stdin.close()
-        res = stdout.close()
+            pop.stdin.write(base64.decodestring(data))
+        pop.stdin.close()
+        res = pop.wait()
         if res:
             raise Exception, "Couldn't restore database"
         logger.notifyChannel("web-services", netsvc.LOG_INFO,

=== modified file 'openerp/tools/misc.py'
--- openerp/tools/misc.py	2011-09-22 09:54:43 +0000
+++ openerp/tools/misc.py	2011-10-22 12:02:24 +0000
@@ -103,10 +103,9 @@
         raise Exception('Couldn\'t find %s' % name)
     # on win32, passing close_fds=True is not compatible
     # with redirecting std[in/err/out]
-    pop = subprocess.Popen((prog,) + args, bufsize= -1,
+    return subprocess.Popen((prog,) + args, bufsize= -1,
           stdin=subprocess.PIPE, stdout=subprocess.PIPE,
           close_fds=(os.name=="posix"))
-    return (pop.stdin, pop.stdout)
 
 def exec_command_pipe(name, *args):
     prog = find_in_path(name)


Follow ups