summaryrefslogtreecommitdiff
path: root/sql/rpl_reporting.h
diff options
context:
space:
mode:
authormats@kindahl-laptop.dnsalias.net <>2007-06-09 07:19:37 +0200
committermats@kindahl-laptop.dnsalias.net <>2007-06-09 07:19:37 +0200
commit9094e97aed8536e628cb6c5a81b79ecc6521be7a (patch)
treecdc21b3b7f0f7811d04f8bafebcee2697b8a7d3b /sql/rpl_reporting.h
parentbba84e754d61918dd147f1926b338f5f82ee3150 (diff)
downloadmariadb-git-9094e97aed8536e628cb6c5a81b79ecc6521be7a.tar.gz
BUG#24954 (Last_errno and Last_error not set after master_retry_count was reached):
Adding new fields Last_{IO,SQL}_Errno and Last_{IO,SQL}_Error to output of SHOW SLAVE STATUS to hold errors from I/O and SQL thread respectively. Old fields Last_Error and Last_Errno are aliases for Last_SQL_Error and Last_SQL_Errno respectively. Fields are added last to output of SHOW SLAVE STATUS to allow old applications to use the same positional arguments into the row, while allowing new application to benefit from the added information. In addition, some new error codes are added (especially for the I/O thread) to be able to provide sensible error message.
Diffstat (limited to 'sql/rpl_reporting.h')
-rw-r--r--sql/rpl_reporting.h78
1 files changed, 78 insertions, 0 deletions
diff --git a/sql/rpl_reporting.h b/sql/rpl_reporting.h
new file mode 100644
index 00000000000..e3cd44d16c6
--- /dev/null
+++ b/sql/rpl_reporting.h
@@ -0,0 +1,78 @@
+#ifndef RPL_REPORTING_H
+#define RPL_REPORTING_H
+
+/**
+ Mix-in to handle the message logging and reporting for relay log
+ info and master log info structures.
+
+ By inheriting from this class, the class is imbued with
+ capabilities to do slave reporting.
+ */
+class Slave_reporting_capability
+{
+public:
+ /**
+ Constructor.
+
+ @param thread_name Printable name of the slave thread that is reporting.
+ */
+ Slave_reporting_capability(char const *thread_name)
+ : m_thread_name(thread_name)
+ {
+ }
+
+ /**
+ Writes a message and, if it's an error message, to Last_Error
+ (which will be displayed by SHOW SLAVE STATUS).
+
+ @param level The severity level
+ @param err_code The error code
+ @param msg The message (usually related to the error
+ code, but can contain more information), in
+ printf() format.
+ */
+ void report(loglevel level, int err_code, const char *msg, ...)
+ ATTRIBUTE_FORMAT(printf, 4, 5);
+
+ /**
+ Clear errors. They will not show up under <code>SHOW SLAVE
+ STATUS</code>.
+ */
+ void clear_error() {
+ last_error.clear();
+ }
+
+ /**
+ Error information structure.
+ */
+ class Error {
+ friend class Slave_reporting_capability;
+ public:
+ Error()
+ {
+ clear();
+ }
+
+ void clear()
+ {
+ number= 0;
+ message[0]= '\0';
+ }
+
+ /** Error code */
+ uint32 number;
+ /** Error message */
+ char message[MAX_SLAVE_ERRMSG];
+ };
+
+ /**
+ Last error produced by the I/O or SQL thread respectively.
+ */
+ Error last_error;
+
+private:
+ char const *const m_thread_name;
+};
+
+#endif // RPL_REPORTING_H
+