[prev in list] [next in list] [prev in thread] [next in thread] 

List:       bacula-commits
Subject:    [Bacula-commits] SF.net SVN: bacula: [6159]
From:       ricozz () users ! sourceforge ! net
Date:       2007-12-29 19:42:04
Message-ID: E1J8hZM-0005yV-M2 () sc8-pr-svn2 ! sourceforge ! net
[Download RAW message or body]

Revision: 6159
          http://bacula.svn.sourceforge.net/bacula/?rev=6159&view=rev
Author:   ricozz
Date:     2007-12-29 11:42:03 -0800 (Sat, 29 Dec 2007)

Log Message:
-----------
ebl  Add a job stat table into the catalog

Added Paths:
-----------
    trunk/bacula/patches/testing/jobstat.patch

Added: trunk/bacula/patches/testing/jobstat.patch
===================================================================
--- trunk/bacula/patches/testing/jobstat.patch	                        (rev 0)
+++ trunk/bacula/patches/testing/jobstat.patch	2007-12-29 19:42:03 UTC (rev 6159)
@@ -0,0 +1,258 @@
+Index: src/dird/job.c
+===================================================================
+--- src/dird/job.c	(r\xE9vision 6151)
++++ src/dird/job.c	(copie de travail)
+@@ -734,7 +734,7 @@
+    jcr->jr.VolSessionId = jcr->VolSessionId;
+    jcr->jr.VolSessionTime = jcr->VolSessionTime;
+    jcr->jr.JobErrors = jcr->Errors;
+-   if (!db_update_job_end_record(jcr, jcr->db, &jcr->jr)) {
++   if (!db_update_job_end_record(jcr, jcr->db, &jcr->jr, jcr->job->stats_enabled)) \
{ +       Jmsg(jcr, M_WARNING, 0, _("Error updating job record. %s"),
+          db_strerror(jcr->db));
+    }
+Index: src/dird/ua_prune.c
+===================================================================
+--- src/dird/ua_prune.c	(r\xE9vision 6151)
++++ src/dird/ua_prune.c	(copie de travail)
+@@ -107,6 +107,7 @@
+  *    prune files (from) client=xxx
+  *    prune jobs (from) client=xxx
+  *    prune volume=xxx
++ *    prune stats
+  */
+ int prunecmd(UAContext *ua, const char *cmd)
+ {
+@@ -119,6 +120,7 @@
+       NT_("Files"),
+       NT_("Jobs"),
+       NT_("Volume"),
++      NT_("Stats"),
+       NULL};
+ 
+    if (!open_client_db(ua)) {
+@@ -127,7 +129,7 @@
+ 
+    /* First search args */
+    kw = find_arg_keyword(ua, keywords);
+-   if (kw < 0 || kw > 2) {
++   if (kw < 0 || kw > 3) {
+       /* no args, so ask user */
+       kw = do_keyword_prompt(ua, _("Choose item to prune"), keywords);
+    }
+@@ -162,6 +164,9 @@
+       }
+       prune_volume(ua, &mr);
+       return true;
++   case 3:  /* prune stats */
++      /* TODO: prune JobStat table */
++      return true;
+    default:
+       break;
+    }
+Index: src/dird/dird_conf.c
+===================================================================
+--- src/dird/dird_conf.c	(r\xE9vision 6151)
++++ src/dird/dird_conf.c	(copie de travail)
+@@ -133,6 +133,7 @@
+    {"tlskey",               store_dir,       ITEM(res_dir.tls_keyfile), 0, 0, 0},
+    {"tlsdhfile",            store_dir,       ITEM(res_dir.tls_dhfile), 0, 0, 0},
+    {"tlsallowedcn",         store_alist_str, ITEM(res_dir.tls_allowed_cns), 0, 0, \
0}, ++   {"statisticsretention",  store_time,      ITEM(res_dir.stats_retention),  0, \
ITEM_DEFAULT, 60*60*24*31*12*5}, +    {NULL, NULL, {0}, 0, 0, 0}
+ };
+ 
+@@ -318,6 +319,7 @@
+    {"selectionpattern", store_str, ITEM(res_job.selection_pattern), 0, 0, 0},
+    {"runscript", store_runscript, ITEM(res_job.RunScripts), 0, ITEM_NO_EQUALS, 0},
+    {"selectiontype", store_migtype, ITEM(res_job.selection_type), 0, 0, 0},
++   {"usestatistics", store_bool,  ITEM(res_job.stats_enabled), 0, 0, 0},
+    {NULL, NULL, {0}, 0, 0, 0}
+ };
+ 
+@@ -637,6 +639,9 @@
+       if (res->res_job.RegexWhere) {
+            sendit(sock, _("  --> RegexWhere=%s\n"), NPRT(res->res_job.RegexWhere));
+       }
++      if (res->res_job.stats_enabled) {
++           sendit(sock, _("  --> StatsEnabled=%d\n"), res->res_job.stats_enabled);
++      }
+       if (res->res_job.RestoreBootstrap) {
+          sendit(sock, _("  --> Bootstrap=%s\n"), \
NPRT(res->res_job.RestoreBootstrap)); +       }
+Index: src/dird/dird_conf.h
+===================================================================
+--- src/dird/dird_conf.h	(r\xE9vision 6151)
++++ src/dird/dird_conf.h	(copie de travail)
+@@ -129,6 +129,7 @@
+    bool tls_enable;                   /* Enable TLS */
+    bool tls_require;                  /* Require TLS */
+    bool tls_verify_peer;              /* TLS Verify Client Certificate */
++   utime_t stats_retention;           /* Stats retention period in seconds */
+ 
+    /* Methods */
+    char *name() const;
+@@ -399,6 +400,7 @@
+    bool write_part_after_job;         /* Set to write part after job in SD */
+    bool enabled;                      /* Set if job enabled */
+    bool OptimizeJobScheduling;        /* Set if we should optimize Job scheduling \
*/ ++   bool stats_enabled;                /* Keep job records in a table for long \
term statistics */ +    
+    MSGS      *messages;               /* How and where to send messages */
+    SCHED     *schedule;               /* When -- Automatic schedule */
+Index: src/cats/sql_update.c
+===================================================================
+--- src/cats/sql_update.c	(r\xE9vision 6151)
++++ src/cats/sql_update.c	(copie de travail)
+@@ -142,7 +142,7 @@
+  *           1 on success
+  */
+ int
+-db_update_job_end_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr)
++db_update_job_end_record(JCR *jcr, B_DB *mdb, JOB_DBR *jr, bool stats_enabled)
+ {
+    char dt[MAX_TIME_LENGTH];
+    char rdt[MAX_TIME_LENGTH];
+@@ -192,11 +192,17 @@
+       edit_int64(jr->JobId, ed3));
+ 
+    stat = UPDATE_DB(jcr, mdb, mdb->cmd);
++
++   if (stat && stats_enabled) {
++      Mmsg(mdb->cmd,
++	   "INSERT INTO JobStat (SELECT * FROM Job WHERE JobId=%s)",
++	   edit_int64(jr->JobId, ed3));
++      INSERT_DB(jcr, mdb, mdb->cmd); /* TODO: get a message ? */
++   }
+    db_unlock(mdb);
+    return stat;
+ }
+ 
+-
+ /*
+  * Update Client record
+  *   Returns: 0 on failure
+Index: src/cats/make_sqlite3_tables.in
+===================================================================
+--- src/cats/make_sqlite3_tables.in	(r\xE9vision 6151)
++++ src/cats/make_sqlite3_tables.in	(copie de travail)
+@@ -75,6 +75,9 @@
+    );
+ CREATE INDEX inx6 ON Job (Name);
+ 
++-- Create a table like Job for long term statistics 
++CREATE TABLE JobStat (LIKE Job);
++
+ CREATE TABLE Location (
+    LocationId INTEGER,
+    Location TEXT NOT NULL,
+Index: src/cats/make_postgresql_tables.in
+===================================================================
+--- src/cats/make_postgresql_tables.in	(r\xE9vision 6151)
++++ src/cats/make_postgresql_tables.in	(copie de travail)
+@@ -79,6 +79,9 @@
+ 
+ CREATE INDEX job_name_idx on job (name);
+ 
++-- Create a table like Job for long term statistics 
++CREATE TABLE jobstat (LIKE job);
++
+ CREATE TABLE Location (
+    LocationId	      serial	  not null,
+    Location	      text	  not null,
+Index: src/cats/protos.h
+===================================================================
+--- src/cats/protos.h	(r\xE9vision 6151)
++++ src/cats/protos.h	(copie de travail)
+@@ -117,7 +117,7 @@
+ 
+ /* sql_update.c */
+ bool db_update_job_start_record(JCR *jcr, B_DB *db, JOB_DBR *jr);
+-int  db_update_job_end_record(JCR *jcr, B_DB *db, JOB_DBR *jr);
++int  db_update_job_end_record(JCR *jcr, B_DB *db, JOB_DBR *jr, bool stats_enabled);
+ int  db_update_client_record(JCR *jcr, B_DB *mdb, CLIENT_DBR *cr);
+ int  db_update_pool_record(JCR *jcr, B_DB *db, POOL_DBR *pr);
+ bool db_update_storage_record(JCR *jcr, B_DB *mdb, STORAGE_DBR *sr);
+Index: src/cats/make_sqlite_tables.in
+===================================================================
+--- src/cats/make_sqlite_tables.in	(r\xE9vision 6151)
++++ src/cats/make_sqlite_tables.in	(copie de travail)
+@@ -75,6 +75,9 @@
+    );
+ CREATE INDEX inx6 ON Job (Name);
+ 
++-- Create a table like Job for long term statistics 
++CREATE TABLE JobStat (LIKE Job);
++
+ CREATE TABLE Location (
+    LocationId INTEGER,
+    Location TEXT NOT NULL,
+Index: src/cats/sql_create.c
+===================================================================
+--- src/cats/sql_create.c	(r\xE9vision 6151)
++++ src/cats/sql_create.c	(copie de travail)
+@@ -112,7 +112,7 @@
+ bool
+ db_create_jobmedia_record(JCR *jcr, B_DB *mdb, JOBMEDIA_DBR *jm)
+ {
+-   bool ok = true;;
++   bool ok = true;
+    int count;
+    char ed1[50], ed2[50];
+ 
+@@ -162,8 +162,6 @@
+    return ok;
+ }
+ 
+-
+-
+ /* Create Unique Pool record
+  * Returns: false on failure
+  *          true  on success
+Index: src/cats/make_mysql_tables.in
+===================================================================
+--- src/cats/make_mysql_tables.in	(r\xE9vision 6151)
++++ src/cats/make_mysql_tables.in	(copie de travail)
+@@ -115,6 +115,8 @@
+    INDEX (Name(128))
+    );
+ 
++-- Create a table like Job for long term statistics 
++CREATE TABLE JobStat (LIKE Job);
+ 
+ CREATE TABLE Location (
+    LocationId INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
+Index: src/stored/bscan.c
+===================================================================
+--- src/stored/bscan.c	(r\xE9vision 6151)
++++ src/stored/bscan.c	(copie de travail)
+@@ -622,7 +622,7 @@
+                jr.VolSessionTime = mjcr->VolSessionTime;
+                jr.JobTDate = (utime_t)mjcr->start_time;
+                jr.ClientId = mjcr->ClientId;
+-               if (!db_update_job_end_record(bjcr, db, &jr)) {
++               if (!db_update_job_end_record(bjcr, db, &jr, false)) {
+                   Pmsg1(0, _("Could not update job record. ERR=%s\n"), \
db_strerror(db)); +                }
+                mjcr->read_dcr = NULL;
+@@ -1112,7 +1112,7 @@
+       return 1;
+    }
+ 
+-   if (!db_update_job_end_record(bjcr, db, jr)) {
++   if (!db_update_job_end_record(bjcr, db, jr, false)) {
+       Pmsg2(0, _("Could not update JobId=%u record. ERR=%s\n"), jr->JobId,  \
db_strerror(db)); +       free_jcr(mjcr);
+       return 0;
+Index: src/jcr.h
+===================================================================
+--- src/jcr.h	(r\xE9vision 6156)
++++ src/jcr.h	(copie de travail)
+@@ -260,6 +260,7 @@
+    bool unlink_bsr;                   /* Unlink bsr file created */
+    bool VSS;                          /* VSS used by FD */
+    bool Encrypt;                      /* Encryption used by FD */
++   bool stats_enabled;                /* Keep all job records in a table for long \
term statistics */ + #endif /* DIRECTOR_DAEMON */
+ 
+ 


This was sent by the SourceForge.net collaborative development platform, the world's \
largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Bacula-commits mailing list
Bacula-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-commits


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic