Code

Add error handling to the create_table function of the DBsqlite module,
[gosa.git] / trunk / gosa-si / server / events / gosaTriggered.pm
index 8742aec166f18e1ee7ba6854a05dda85dcde8924..d7ef85131a5be55d105bf993c19044a0a3b85ada 100644 (file)
@@ -162,12 +162,14 @@ sub recreate_fai_server_db {
         my $res = $main::job_db->exec_statement($sql_statement);
     }
 
-    $main::fai_server_db->create_table("new_fai_server", \@main::fai_server_col_names);
+    my $res = $main::fai_server_db->create_table("new_fai_server", \@main::fai_server_col_names);
+    if ($res) {
+        return ( $out_msg );
+    }
     &main::create_fai_server_db("new_fai_server",undef,"dont", $session_id);
     $main::fai_server_db->move_table("new_fai_server", $main::fai_server_tn);
-    
-    my @out_msg_l = ( $out_msg );
-    return @out_msg_l;
+
+    return ( $out_msg );
 }
 
 
@@ -182,12 +184,14 @@ sub recreate_fai_release_db {
         my $res = $main::job_db->exec_statement($sql_statement);
     }
 
-    $main::fai_release_db->create_table("new_fai_release", \@main::fai_release_col_names);
+    my $res = $main::fai_release_db->create_table("new_fai_release", \@main::fai_release_col_names);
+    if ($res) {
+        return ( $out_msg );
+    }
     &main::create_fai_release_db("new_fai_release", $session_id);
     $main::fai_release_db->move_table("new_fai_release", $main::fai_release_tn);
 
-    my @out_msg_l = ( $out_msg );
-    return @out_msg_l;
+    return ( $out_msg );
 }
 
 
@@ -202,7 +206,7 @@ sub recreate_packages_list_db {
                my $res = $main::job_db->exec_statement($sql_statement);
        }
 
-       &main::create_packages_list_db;
+       &main::create_packages_list_db(undef, undef, $session_id);
 
        my @out_msg_l = ( $out_msg );
        return @out_msg_l;
@@ -851,13 +855,11 @@ sub trigger_activate_new {
         &main::daemon_log("$session_id DEBUG: A GosaGroupOfNames with cn '$ogroup' was found in base '".$main::ldap_base."'!", 5);
       } elsif ($ldap_mesg->count == 0) {
         &main::daemon_log("$session_id ERROR: A GosaGroupOfNames with cn '$ogroup' was not found in base '".$main::ldap_base."'!", 1);
-        $main::job_db->exec_statement("UPDATE ".$main::job_queue_tn." SET status = 'waiting' WHERE id = $jobdb_id");
-        $main::job_db->exec_statement("UPDATE ".$main::job_queue_tn." SET timestamp = '".(&calc_timestamp(&get_time(), 'plus', 10))."' WHERE id = $jobdb_id");
+        $main::job_db->exec_statement("UPDATE ".$main::job_queue_tn." SET status = 'waiting', timestamp = '".(&calc_timestamp(&get_time(), 'plus', 60))."' WHERE id = $jobdb_id");
         return undef;
       } else {
         &main::daemon_log("$session_id ERROR: More than one ObjectGroups with cn '$ogroup' was found in base '".$main::ldap_base."'!", 1);
-        $main::job_db->exec_statement("UPDATE ".$main::job_queue_tn." SET status = 'waiting' WHERE id = $jobdb_id");
-        $main::job_db->exec_statement("UPDATE ".$main::job_queue_tn." SET timestamp = '".(&calc_timestamp(&get_time(), 'plus', 10))."' WHERE id = $jobdb_id");
+        $main::job_db->exec_statement("UPDATE ".$main::job_queue_tn." SET status = 'waiting', timestamp = '".(&calc_timestamp(&get_time(), 'plus', 60))."' WHERE id = $jobdb_id");
         return undef;
       }
 
@@ -1035,6 +1037,11 @@ sub trigger_activate_new {
 
         # Set job to done
         $main::job_db->exec_statement("UPDATE jobs SET status = 'done' WHERE id = $jobdb_id");
+    
+        # If a client gets a 'set_activated_for_installation' msg, always deliver a fresh 'new_ldap_config'
+        # just for backup and robustness purposes
+        my $ldap_out_msg = &ClientPackages::new_ldap_config($mac, $session_id);
+        push(@out_msg_l, $ldap_out_msg);
 
         # create set_activated_for_installation message for delivery
         my $out_hash = &create_xml_hash("set_activated_for_installation", $source, $target);