1. Summary
  2. Files
  3. Support
  4. Report Spam
  5. Create account
  6. Log in

Changeset 11230

Show
Ignore:
Timestamp:
05/30/13 03:25:33 (11 months ago)
Author:
svn-sync
Message:

Synchronized with https://dev.naver.com/svn/cubrid/trunk
Source Revision: 8473, Author: xkyu, Msg:
[CUBRIDUS-11299][CR]merge CUBRIDSUS-9847 into trunk to add SQL logging module for log_applier

Location:
cubrid/trunk
Files:
2 added
4 modified

Legend:

Unmodified
Added
Removed
  • cubrid/trunk/cs/Makefile.am

    r6325 r11230  
    240240        $(TRANSACTION_DIR)/transaction_cl.c \ 
    241241        $(TRANSACTION_DIR)/log_writer.c \ 
    242         $(TRANSACTION_DIR)/log_applier.c 
     242        $(TRANSACTION_DIR)/log_applier.c \ 
     243        $(TRANSACTION_DIR)/log_applier_sql_log.c 
    243244 
    244245STORAGE_SOURCES = \ 
  • cubrid/trunk/src/base/system_parameter.c

    r11202 r11230  
    361361#define PRM_NAME_HA_APPLYLOGDB_LOG_WAIT_TIME_IN_SECS "ha_applylogdb_log_wait_time_in_secs" 
    362362 
     363#define PRM_NAME_HA_SQL_LOGGING "ha_enable_sql_logging" 
     364 
     365#define PRM_NAME_HA_SQL_LOG_MAX_SIZE_IN_MB "ha_sql_log_max_size_in_mbytes" 
     366 
    363367#define PRM_NAME_JAVA_STORED_PROCEDURE "java_stored_procedure" 
    364368 
     
    10921096static int prm_ha_applylogdb_log_wait_time_in_secs_lower = -1; 
    10931097 
     1098bool PRM_HA_SQL_LOGGING = false; 
     1099static bool prm_ha_sql_logging_default = false; 
     1100 
     1101int PRM_HA_SQL_LOG_MAX_SIZE_IN_MB = INT_MIN; 
     1102static int prm_ha_sql_log_max_size_in_mb_default = 50; 
     1103static int prm_ha_sql_log_max_size_in_mb_upper = 2048; 
     1104static int prm_ha_sql_log_max_size_in_mb_lower = 1; 
     1105 
    10941106bool PRM_JAVA_STORED_PROCEDURE = false; 
    10951107static bool prm_java_stored_procedure_default = false; 
     
    22452257   (void *) &PRM_HA_APPLYLOGDB_LOG_WAIT_TIME_IN_SECS, 
    22462258   (void *) NULL, (void *) &prm_ha_applylogdb_log_wait_time_in_secs_lower, 
     2259   (char *) NULL}, 
     2260  {PRM_NAME_HA_SQL_LOGGING, 
     2261   (PRM_FOR_CLIENT | PRM_FOR_HA), 
     2262   PRM_BOOLEAN, 
     2263   (void *) &prm_ha_sql_logging_default, 
     2264   (void *) &PRM_HA_SQL_LOGGING, 
     2265   (void *) NULL, (void *) NULL, 
     2266   (char *) NULL}, 
     2267  {PRM_NAME_HA_SQL_LOG_MAX_SIZE_IN_MB, 
     2268   (PRM_FOR_CLIENT | PRM_FOR_HA), 
     2269   PRM_INTEGER, 
     2270   (void *) &prm_ha_sql_log_max_size_in_mb_default, 
     2271   (void *) &PRM_HA_SQL_LOG_MAX_SIZE_IN_MB, 
     2272   (void *) &prm_ha_sql_log_max_size_in_mb_upper, 
     2273   (void *) &prm_ha_sql_log_max_size_in_mb_lower, 
    22472274   (char *) NULL}, 
    22482275  {PRM_NAME_JAVA_STORED_PROCEDURE, 
  • cubrid/trunk/src/base/system_parameter.h

    r11202 r11230  
    227227  PRM_ID_HA_APPLYLOGDB_IGNORE_ERROR_LIST, 
    228228  PRM_ID_HA_APPLYLOGDB_LOG_WAIT_TIME_IN_SECS, 
     229  PRM_ID_HA_SQL_LOGGING, 
     230  PRM_ID_HA_SQL_LOG_MAX_SIZE_IN_MB, 
    229231  PRM_ID_JAVA_STORED_PROCEDURE, 
    230232  PRM_ID_COMPAT_PRIMARY_KEY, 
  • cubrid/trunk/src/transaction/log_applier.c

    r11206 r11230  
    5252#include "memory_hash.h" 
    5353#include "schema_manager.h" 
     54#include "log_applier_sql_log.h" 
    5455#if !defined(WINDOWS) 
    5556#include "heartbeat.h" 
     
    358359static bool la_applier_shutdown_by_signal = false; 
    359360static char la_slave_db_name[DB_MAX_IDENTIFIER_LENGTH + 1]; 
     361 
     362static bool la_enable_sql_logging = false; 
    360363 
    361364static void la_shutdown_by_signal (); 
     
    46284631{ 
    46294632  DB_OBJECT *class_obj; 
     4633  MOBJ mclass; 
    46304634  int error; 
    46314635  char buf[256]; 
     4636  char sql_log_err[LINE_MAX]; 
    46324637 
    46334638  error = la_flush_unflushed_insert (NULL); 
     
    46454650  else 
    46464651    { 
     4652      /* get class info */ 
     4653      mclass = locator_fetch_class (class_obj, DB_FETCH_CLREAD_INSTREAD); 
     4654 
     4655      if (la_enable_sql_logging) 
     4656        { 
     4657          if (sl_write_delete_sql (item->class_name, mclass, &item->key) != 
     4658              NO_ERROR) 
     4659            { 
     4660              help_sprint_value (&item->key, buf, 255); 
     4661              snprintf (sql_log_err, sizeof (sql_log_err), 
     4662                        "failed to write SQL log. class: %s, key: %s", 
     4663                        item->class_name, buf); 
     4664 
     4665              er_stack_push (); 
     4666              er_set (ER_ERROR_SEVERITY, ARG_FILE_LINE, ER_HA_GENERIC_ERROR, 
     4667                      1, sql_log_err); 
     4668              er_stack_pop (); 
     4669            } 
     4670        } 
     4671 
    46474672      error = obj_repl_delete_object_by_pkey (class_obj, &item->key); 
    46484673      if (error == NO_ERROR) 
     
    47034728  LOG_PAGEID old_pageid = -1; 
    47044729  char buf[256]; 
     4730  char sql_log_err[LINE_MAX]; 
    47054731 
    47064732  /* get the target log page */ 
     
    47934819    { 
    47944820      goto error_rtn; 
     4821    } 
     4822 
     4823  /* write sql log */ 
     4824  if (la_enable_sql_logging) 
     4825    { 
     4826      if (sl_write_update_sql (inst_tp, &item->key) != NO_ERROR) 
     4827        { 
     4828          help_sprint_value (&item->key, buf, 255); 
     4829          snprintf (sql_log_err, sizeof (sql_log_err), 
     4830                    "failed to write SQL log. class: %s, key: %s", 
     4831                    item->class_name, buf); 
     4832 
     4833          er_stack_push (); 
     4834          er_set (ER_ERROR_SEVERITY, ARG_FILE_LINE, ER_HA_GENERIC_ERROR, 
     4835                  1, sql_log_err); 
     4836          er_stack_pop (); 
     4837        } 
    47954838    } 
    47964839 
     
    49124955  static char last_inserted_class_name[DB_MAX_IDENTIFIER_LENGTH] = { 0, }; 
    49134956  DB_OBJECT *last_inserted_class_obj; 
     4957  char sql_log_err[LINE_MAX]; 
    49144958 
    49154959  /* get the target log page */ 
     
    49925036    } 
    49935037 
    4994   /* make object using the record rescription */ 
     5038  /* make object using the record description */ 
    49955039  error = la_disk_to_obj (mclass, &recdes, inst_tp, &item->key); 
    49965040  if (error != NO_ERROR) 
    49975041    { 
    49985042      goto error_rtn; 
     5043    } 
     5044 
     5045  /* write sql log */ 
     5046  if (la_enable_sql_logging) 
     5047    { 
     5048      if (sl_write_insert_sql (inst_tp, &item->key) != NO_ERROR) 
     5049        { 
     5050          help_sprint_value (&item->key, buf, 255); 
     5051          snprintf (sql_log_err, sizeof (sql_log_err), 
     5052                    "failed to write SQL log. class: %s, key: %s", 
     5053                    item->class_name, buf); 
     5054 
     5055          er_stack_push (); 
     5056          er_set (ER_ERROR_SEVERITY, ARG_FILE_LINE, ER_HA_GENERIC_ERROR, 
     5057                  1, sql_log_err); 
     5058          er_stack_pop (); 
     5059        } 
    49995060    } 
    50005061 
     
    51705231  DB_OBJECT *user = NULL, *save_user = NULL; 
    51715232  char buf[256]; 
     5233  char sql_log_err[LINE_MAX]; 
    51725234 
    51735235  error = la_flush_unflushed_insert (NULL); 
     
    52555317 
    52565318      ddl = db_get_string (&item->key); 
     5319 
     5320      /* write sql log */ 
     5321      if (la_enable_sql_logging) 
     5322        { 
     5323          if (sl_write_schema_sql 
     5324              (item->class_name, item->db_user, item->item_type, 
     5325               ddl) != NO_ERROR) 
     5326            { 
     5327              help_sprint_value (&item->key, buf, 255); 
     5328              snprintf (sql_log_err, sizeof (sql_log_err), 
     5329                        "failed to write SQL log. class: %s, key: %s", 
     5330                        item->class_name, buf); 
     5331 
     5332              er_stack_push (); 
     5333              er_set (ER_ERROR_SEVERITY, ARG_FILE_LINE, ER_HA_GENERIC_ERROR, 
     5334                      1, sql_log_err); 
     5335              er_stack_pop (); 
     5336            } 
     5337        } 
     5338 
    52575339      if (la_update_query_execute (ddl, false) != NO_ERROR) 
    52585340        { 
     
    71427224  la_init (log_path, max_mem_size); 
    71437225 
     7226  if (prm_get_bool_value (PRM_ID_HA_SQL_LOGGING)) 
     7227    { 
     7228      if (sl_init (la_slave_db_name, log_path) != NO_ERROR) 
     7229        { 
     7230          er_stack_push (); 
     7231          er_set (ER_ERROR_SEVERITY, ARG_FILE_LINE, ER_HA_GENERIC_ERROR, 
     7232                  1, "Failed to initialize SQL logger"); 
     7233          er_stack_pop (); 
     7234        } 
     7235      else 
     7236        { 
     7237          la_enable_sql_logging = true; 
     7238        } 
     7239    } 
     7240 
    71447241  error = la_check_duplicated (la_Info.log_path, la_slave_db_name, 
    71457242                               &la_Info.log_path_lockf_vdes,