diff --git a/modules/Bio/EnsEMBL/Hive/RunnableDB/SystemCmd.pm b/modules/Bio/EnsEMBL/Hive/RunnableDB/SystemCmd.pm
index 8df4cd1681f6c2be39c2fe262ebc5fc448a99038..14a8eb8c002cac3647a04c4e6860f493220dcd35 100755
--- a/modules/Bio/EnsEMBL/Hive/RunnableDB/SystemCmd.pm
+++ b/modules/Bio/EnsEMBL/Hive/RunnableDB/SystemCmd.pm
@@ -88,10 +88,15 @@ sub run {
     my $self = shift;
  
     my $cmd = $self->param('cmd');
+
+    $self->dbc->disconnect_when_inactive(1);    # release this connection for the duration of system() call
+
     if(my $return_value = system($cmd)) {
         $return_value >>= 8;
         die "system( $cmd ) failed: $return_value";
     }
+
+    $self->dbc->disconnect_when_inactive(0);    # allow the worker to keep the connection open again
 }
 
 =head2 write_output