Download | Plain Text | No Line Numbers


  1. diff -Naur sql/slave.cc sql/slave.cc
  2. --- sql/slave.cc 2011-08-31 19:22:46.000000000 +0200
  3. +++ sql/slave.cc 2011-10-22 18:18:02.000000000 +0200
  4. @@ -2034,7 +2034,10 @@
  5. slave threads, since a replication event can become this much larger
  6. than the corresponding packet (query) sent from client to master.
  7. */
  8. - thd->variables.max_allowed_packet= global_system_variables.max_allowed_packet
  9. + //thd->variables.max_allowed_packet= global_system_variables.max_allowed_packet
  10. + // + MAX_LOG_EVENT_HEADER; /* note, incr over the global not session var */
  11. + thd->variables.max_allowed_packet= max(global_system_variables.max_allowed_packet,
  12. + global_system_variables.replicate_max_allowed_packet)
  13. + MAX_LOG_EVENT_HEADER; /* note, incr over the global not session var */
  14. thd->slave_thread = 1;
  15. thd->enable_slow_log= opt_log_slow_slave_statements;
  16. @@ -2785,7 +2788,10 @@
  17. thread, since a replication event can become this much larger than
  18. the corresponding packet (query) sent from client to master.
  19. */
  20. - mysql->net.max_packet_size= thd->net.max_packet_size+= MAX_LOG_EVENT_HEADER;
  21. + //mysql->net.max_packet_size= thd->net.max_packet_size+= MAX_LOG_EVENT_HEADER;
  22. + mysql->net.max_packet_size = max(thd->net.max_packet_size,
  23. + global_system_variables.replicate_max_allowed_packet)
  24. + + MAX_LOG_EVENT_HEADER;
  25. }
  26. else
  27. {
  28. diff -Naur sql/sql_class.h sql/sql_class.h
  29. --- sql/sql_class.h 2011-08-31 19:22:46.000000000 +0200
  30. +++ sql/sql_class.h 2011-10-22 18:08:09.000000000 +0200
  31. @@ -460,6 +460,7 @@
  32. ulong join_buff_size;
  33. ulong lock_wait_timeout;
  34. ulong max_allowed_packet;
  35. + ulong replicate_max_allowed_packet;
  36. ulong max_error_count;
  37. ulong max_length_for_sort_data;
  38. ulong max_sort_length;
  39. diff -Naur sql/sql_repl.cc sql/sql_repl.cc
  40. --- sql/sql_repl.cc 2011-07-13 21:09:03.000000000 +0200
  41. +++ sql/sql_repl.cc 2011-10-22 18:19:37.000000000 +0200
  42. @@ -587,7 +587,10 @@
  43. this larger than the corresponding packet (query) sent
  44. from client to master.
  45. */
  46. - thd->variables.max_allowed_packet+= MAX_LOG_EVENT_HEADER;
  47. + //thd->variables.max_allowed_packet+= MAX_LOG_EVENT_HEADER;
  48. + thd->variables.max_allowed_packet = max(thd->variables.max_allowed_packet,
  49. + thd->variables.replicate_max_allowed_packet)
  50. + + MAX_LOG_EVENT_HEADER;
  51.  
  52. /*
  53. We can set log_lock now, it does not move (it's a member of
  54. @@ -1787,7 +1790,10 @@
  55. /*
  56. to account binlog event header size
  57. */
  58. - thd->variables.max_allowed_packet += MAX_LOG_EVENT_HEADER;
  59. + //thd->variables.max_allowed_packet += MAX_LOG_EVENT_HEADER;
  60. + thd->variables.max_allowed_packet = max(thd->variables.max_allowed_packet,
  61. + thd->variables.replicate_max_allowed_packet)
  62. + + MAX_LOG_EVENT_HEADER;
  63.  
  64. mysql_mutex_lock(log_lock);
  65.  
  66. diff -Naur sql/sys_vars.cc sql/sys_vars.cc
  67. --- sql/sys_vars.cc 2011-08-31 19:22:46.000000000 +0200
  68. +++ sql/sys_vars.cc 2011-10-22 18:05:27.000000000 +0200
  69. @@ -1058,6 +1058,31 @@
  70. BLOCK_SIZE(1024), NO_MUTEX_GUARD, NOT_IN_BINLOG,
  71. ON_CHECK(check_max_allowed_packet));
  72.  
  73. +static bool
  74. +check_replicate_max_allowed_packet(sys_var *self, THD *thd, set_var *var)
  75. +{
  76. + longlong val;
  77. + if (session_readonly(self, thd, var))
  78. + return true;
  79. +
  80. + val= var->save_result.ulonglong_value;
  81. + if (val < (longlong) global_system_variables.max_allowed_packet)
  82. + {
  83. + push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
  84. + WARN_OPTION_BELOW_LIMIT, ER(WARN_OPTION_BELOW_LIMIT),
  85. + "replicate_max_allowed_packet", "max_allowed_packet");
  86. + }
  87. + return false;
  88. +}
  89. +
  90. +static Sys_var_ulong Sys_replicate_max_allowed_packet(
  91. + "replicate_max_allowed_packet",
  92. + "Max packet length to send to or receive from the server for replication threads",
  93. + SESSION_VAR(replicate_max_allowed_packet), CMD_LINE(REQUIRED_ARG),
  94. + VALID_RANGE(1024, 1024*1024*1024), DEFAULT(1024*1024),
  95. + BLOCK_SIZE(1024), NO_MUTEX_GUARD, NOT_IN_BINLOG,
  96. + ON_CHECK(check_replicate_max_allowed_packet));
  97. +
  98. static Sys_var_ulonglong Sys_max_binlog_cache_size(
  99. "max_binlog_cache_size",
  100. "Sets the total size of the transactional cache",
  101.