]> git.pld-linux.org Git - packages/cacti-spine.git/commitdiff
- add to CVS
authorElan Ruusamäe <glen@pld-linux.org>
Mon, 27 Mar 2006 14:05:28 +0000 (14:05 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    mysql_max_packet_size.patch -> 1.1

mysql_max_packet_size.patch [new file with mode: 0644]

diff --git a/mysql_max_packet_size.patch b/mysql_max_packet_size.patch
new file mode 100644 (file)
index 0000000..736b1a6
--- /dev/null
@@ -0,0 +1,93 @@
+diff -ruBbd cacti-cactid-0.8.6g/cactid.h cacti-cactid-0.8.6g-patched/cactid.h
+--- cacti-cactid-0.8.6g/cactid.h       2006-01-11 19:25:55.000000000 -0500
++++ cacti-cactid-0.8.6g-patched/cactid.h       2006-01-22 18:57:38.000000000 -0500
+@@ -121,6 +121,7 @@
+ #define STAT_DESCRIP_ERROR 99
+ #define CACTID_PARENT 1
+ #define CACTID_FORK 0
++#define MAX_MYSQL_BUF_SIZE 1400
+ /* locations to search for the config file */
+ #define CONFIG_PATHS 2
+Only in cacti-cactid-0.8.6g-patched: mysql_max_packet_size.patch
+diff -ruBbd cacti-cactid-0.8.6g/poller.c cacti-cactid-0.8.6g-patched/poller.c
+--- cacti-cactid-0.8.6g/poller.c       2006-01-11 19:25:55.000000000 -0500
++++ cacti-cactid-0.8.6g-patched/poller.c       2006-01-22 18:57:38.000000000 -0500
+@@ -109,13 +109,12 @@
+       int j;
+       int num_oids = 0;
+       int snmp_poller_items = 0;
+-      int buffer;
++      int out_buffer;
+       int php_process;
+       char *poll_result = NULL;
+       char update_sql[BUFSIZE];
+       char temp_result[BUFSIZE];
+-      char delim = ' ';
+       int last_snmp_version = 0;
+       int last_snmp_port = 0;
+@@ -681,26 +680,52 @@
+                       }
+               }
+-              /* format database insert */
+-              buffer = 600*rows_processed+100;
+-
+-              if (!(query3 = (char *)malloc(buffer))) {
++              /* insert the query results into the database */
++              if (!(query3 = (char *)malloc(MAX_MYSQL_BUF_SIZE))) {
+                       die("ERROR: Fatal malloc error: poller.c query3 oids!\n");
+               }
+-              memset(query3, 0, buffer);
++              query3[0] = '\0';
+-              snprintf(query3, buffer-1, "INSERT INTO poller_output (local_data_id,rrd_name,time,output) VALUES");
++              int new_buffer = TRUE;
++              
++              snprintf(query3, MAX_MYSQL_BUF_SIZE-1, "INSERT INTO poller_output (local_data_id,rrd_name,time,output) VALUES");
++              out_buffer = strlen(query3);
+               i = 0;
+               while (i < rows_processed) {
+-                      snprintf(result_string, sizeof(result_string)-1, "%c(%i,'%s','%s','%s')", delim, poller_items[i].local_data_id, poller_items[i].rrd_name, start_datetime, poller_items[i].result);
++                      snprintf(result_string, sizeof(result_string)-1, " (%i,'%s','%s','%s')", poller_items[i].local_data_id, poller_items[i].rrd_name, start_datetime, poller_items[i].result);
++                      
++                      /* if the next element to the buffer will overflow it, write to the database */
++                      if ((out_buffer + strlen(result_string)) >= MAX_MYSQL_BUF_SIZE) {
++                              /* insert the record */
++                              db_insert(&mysql, query3);
++
++                              /* re-initialize the query buffer */
++                              snprintf(query3, MAX_MYSQL_BUF_SIZE-1, "INSERT INTO poller_output (local_data_id,rrd_name,time,output) VALUES");
++
++                              /* reset the output buffer length */
++                              out_buffer = strlen(query3);
++
++                              /* set binary, let the system know we are a new buffer */
++                              new_buffer = TRUE;
++                      }
++                      
++                      /* if this is our first pass, or we just outputted to the database, need to change the delimeter */
++                      if (new_buffer) {
++                              result_string[0] = ' ';
++                      }else{
++                              result_string[0] = ',';
++                      }
++                                                      
++                      out_buffer = out_buffer + strlen(result_string);
+                       strncat(query3, result_string, strlen(result_string));
+-                      delim = ',';
++
++                      new_buffer = FALSE;
+                       i++;
+               }
+-              /* only perform and insert if there is something to insert */
+-              if (rows_processed > 0) {
++              /* perform the last insert if required */
++              if (out_buffer > 0) {
+                       /* insert records into database */
+                       db_insert(&mysql, query3);
+               }
This page took 0.051164 seconds and 4 git commands to generate.