Index: /branches/release-40/lib/MT/CMS/Comment.pm
===================================================================
--- /branches/release-40/lib/MT/CMS/Comment.pm (revision 2001)
+++ /branches/release-40/lib/MT/CMS/Comment.pm (revision 2575)
@@ -1460,9 +1460,17 @@
     my $eh = shift;
     my ( $app, $obj, $original ) = @_;
+
     if ( $obj->visible
         || ( ( $obj->visible || 0 ) != ( $original->visible || 0 ) ) )
     {
-        $app->rebuild_entry( Entry => $obj->entry_id, BuildIndexes => 1 )
-            or return $app->publish_error();
+        return MT::Util::start_background_task(
+            sub {
+                my $app = MT->instance;
+                if ( !$app->rebuild_entry( Entry => $obj->entry_id, BuildIndexes => 1 ) ) {
+                    $app->publish_error(); # logs error as well.
+                    return $eh->error( MT->translate( "Publish failed: [_1]", $app->errstr ) );
+                }
+            }
+        );
     }
     1;
Index: /branches/release-40/lib/MT/App/CMS.pm
===================================================================
--- /branches/release-40/lib/MT/App/CMS.pm (revision 2425)
+++ /branches/release-40/lib/MT/App/CMS.pm (revision 2575)
@@ -3174,5 +3174,5 @@
         require MT::Log;
         $app->log({
-            message => $app->translate("Error during publishing: [_1]", (defined $msg ? $msg : $app->errstr)),
+            message => (defined $msg ? $msg : $app->translate("Error during publishing: [_1]", $app->errstr)),
             class => "system",
             level => MT::Log::ERROR(),
