Hi,
Please find attached patch to fix RM2811
Issue was caused due to assumption made when current position in log file
while reading it reaches to last line then
we were assuming process is finished. However this is not the case.
Background process may be busy performing
some other task and logs might not be logged to file immediately. So we
should also check process exit code along
with above condition.
Apart from above this patch also includes minor fix related to status text
colour.
--
*Harshal Dhumal*
*Sr. Software Engineer*
EnterpriseDB India: 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 0b94775..209c2a1 100644
--- a/web/pgadmin/misc/bgprocess/processes.py
+++ b/web/pgadmin/misc/bgprocess/processes.py
@@ -365,7 +365,7 @@ class BatchProcess(object):
if enc is None or enc == 'ascii':
enc = 'utf-8'
- def read_log(logfile, log, pos, ctime):
+ def read_log(logfile, log, pos, ctime, ecode=None):
completed = True
idx = 0
c = re.compile(r"(\d+),(.*$)")
@@ -376,6 +376,9 @@ class BatchProcess(object):
with open(logfile, 'rb') as f:
eofs = os.fstat(f.fileno()).st_size
f.seek(pos, 0)
+ if pos == eofs and ecode is None:
+ completed = False
+
while pos < eofs:
idx += 1
line = f.readline()
@@ -394,15 +397,12 @@ class BatchProcess(object):
completed = False
break
if pos == eofs:
- completed = True
+ if ecode is None:
+ completed = False
break
return pos, completed
- if process_output:
- out, out_completed = read_log(self.stdout, stdout, out, ctime)
- err, err_completed = read_log(self.stderr, stderr, err, ctime)
-
j = Process.query.filter_by(
pid=self.id, user_id=current_user.id
).first()
@@ -423,11 +423,11 @@ class BatchProcess(object):
execution_time = (etime - stime).total_seconds()
- if process_output and self.ecode is not None and (
- len(stdout) + len(stderr) < 1024
- ):
- out, out_completed = read_log(self.stdout, stdout, out, ctime)
- err, err_completed = read_log(self.stderr, stderr, err, ctime)
+ if process_output:
+ out, out_completed = read_log(self.stdout, stdout, out, ctime,
+ self.ecode)
+ err, err_completed = read_log(self.stderr, stderr, err, ctime,
+ self.ecode)
else:
out_completed = err_completed = False
diff --git a/web/pgadmin/misc/bgprocess/static/js/bgprocess.js b/web/pgadmin/misc/bgprocess/static/js/bgprocess.js
index a4506b5..bc61733 100644
--- a/web/pgadmin/misc/bgprocess/static/js/bgprocess.js
+++ b/web/pgadmin/misc/bgprocess/static/js/bgprocess.js
@@ -301,9 +301,16 @@ define('misc.bgprocess', [
).append(
$('<span></span>').text(' ' + gettext('seconds'))
);
- self.container.find('.pg-bg-status').empty().append(
+ var $status_bar = $(self.container.find('.pg-bg-status'));
+ $status_bar.empty().append(
self.curr_status
);
+
+ if (self.exit_code === 0) {
+ $status_bar.addClass('bg-success');
+ } else if (self.exit_code == 1){
+ $status_bar.addClass('bg-failed');
+ }
} else {
self.show_detailed_view.apply(self)
}