summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <tomas@poseidon.ndb.mysql.com>2005-01-25 13:08:21 +0100
committerunknown <tomas@poseidon.ndb.mysql.com>2005-01-25 13:08:21 +0100
commitaa500975558344daf1c7952a31d20a505ec06ec3 (patch)
tree44b9f010c60e04de7d11e835465f4351e380b08e
parent1bf3186732c9fcc2015d1ebd146f131650f2cf4b (diff)
downloadmariadb-git-aa500975558344daf1c7952a31d20a505ec06ec3.tar.gz
updated logevent example
added handling of Arbit log events ndb/examples/mgmapi_logevent_example/mgmapi_logevent.cpp: updated logevent example ndb/include/mgmapi/ndb_logevent.h: added comments added handling af aritration events ndb/src/mgmapi/ndb_logevent.cpp: added handling of Arit log events
-rw-r--r--ndb/examples/mgmapi_logevent_example/mgmapi_logevent.cpp76
-rw-r--r--ndb/include/mgmapi/ndb_logevent.h60
-rw-r--r--ndb/src/mgmapi/ndb_logevent.cpp10
3 files changed, 124 insertions, 22 deletions
diff --git a/ndb/examples/mgmapi_logevent_example/mgmapi_logevent.cpp b/ndb/examples/mgmapi_logevent_example/mgmapi_logevent.cpp
index abd8089a286..5ec1fba6314 100644
--- a/ndb/examples/mgmapi_logevent_example/mgmapi_logevent.cpp
+++ b/ndb/examples/mgmapi_logevent_example/mgmapi_logevent.cpp
@@ -42,8 +42,13 @@
int main()
{
NdbMgmHandle h;
- NdbLogEventHandle l;
- int filter[] = { 15, NDB_MGM_EVENT_CATEGORY_BACKUP, 0 };
+ NdbLogEventHandle le;
+ int filter[] = { 15, NDB_MGM_EVENT_CATEGORY_BACKUP,
+ 15, NDB_MGM_EVENT_CATEGORY_CONNECTION,
+ 15, NDB_MGM_EVENT_CATEGORY_NODE_RESTART,
+ 15, NDB_MGM_EVENT_CATEGORY_STARTUP,
+ 15, NDB_MGM_EVENT_CATEGORY_ERROR,
+ 0 };
struct ndb_logevent event;
ndb_init();
@@ -56,48 +61,79 @@ int main()
}
if (ndb_mgm_connect(h,0,0,0)) MGMERROR(h);
- l= ndb_mgm_create_logevent_handle(h, filter);
- if ( l == 0 ) MGMERROR(h);
+ le= ndb_mgm_create_logevent_handle(h, filter);
+ if ( le == 0 ) MGMERROR(h);
while (1)
{
int timeout= 5000;
- int r= ndb_logevent_get_next(l,&event,timeout);
+ int r= ndb_logevent_get_next(le,&event,timeout);
if (r == 0)
printf("No event within %d milliseconds\n", timeout);
else if (r < 0)
- LOGEVENTERROR(l)
+ LOGEVENTERROR(le)
else
{
- printf("Event %d from node ID %d\n",
- event.type,
- event.source_nodeid);
- printf("Category %d, severity %d, level %d\n",
- event.category,
- event.severity,
- event.level);
switch (event.type) {
case NDB_LE_BackupStarted:
- printf("BackupStartded\n");
- printf("Starting node ID: %d\n", event.BackupStarted.starting_node);
- printf("Backup ID: %d\n", event.BackupStarted.backup_id);
+ printf("Node %d: BackupStarted\n", event.source_nodeid);
+ printf(" Starting node ID: %d\n", event.BackupStarted.starting_node);
+ printf(" Backup ID: %d\n", event.BackupStarted.backup_id);
break;
case NDB_LE_BackupCompleted:
- printf("BackupCompleted\n");
- printf("Backup ID: %d\n", event.BackupStarted.backup_id);
+ printf("Node %d: BackupCompleted\n", event.source_nodeid);
+ printf(" Backup ID: %d\n", event.BackupStarted.backup_id);
break;
case NDB_LE_BackupAborted:
+ printf("Node %d: BackupAborted\n", event.source_nodeid);
break;
case NDB_LE_BackupFailedToStart:
+ printf("Node %d: BackupFailedToStart\n", event.source_nodeid);
break;
+
+ case NDB_LE_NodeFailCompleted:
+ printf("Node %d: NodeFailCompleted\n", event.source_nodeid);
+ break;
+ case NDB_LE_ArbitResult:
+ printf("Node %d: ArbitResult\n", event.source_nodeid);
+ printf(" code %d, arbit_node %d\n",
+ event.ArbitResult.code & 0xffff,
+ event.ArbitResult.arbit_node);
+ break;
+ case NDB_LE_DeadDueToHeartbeat:
+ printf("Node %d: DeadDueToHeartbeat\n", event.source_nodeid);
+ printf(" node %d\n", event.DeadDueToHeartbeat.node);
+ break;
+
+ case NDB_LE_Connected:
+ printf("Node %d: Connected\n", event.source_nodeid);
+ printf(" node %d\n", event.Connected.node);
+ break;
+ case NDB_LE_Disconnected:
+ printf("Node %d: Disconnected\n", event.source_nodeid);
+ printf(" node %d\n", event.Disconnected.node);
+ break;
+ case NDB_LE_NDBStartCompleted:
+ printf("Node %d: StartCompleted\n", event.source_nodeid);
+ printf(" version %d.%d.%d\n",
+ event.NDBStartCompleted.version >> 16 & 0xff,
+ event.NDBStartCompleted.version >> 8 & 0xff,
+ event.NDBStartCompleted.version >> 0 & 0xff);
+ break;
+ case NDB_LE_ArbitState:
+ printf("Node %d: ArbitState\n", event.source_nodeid);
+ printf(" code %d, arbit_node %d\n",
+ event.ArbitState.code & 0xffff,
+ event.ArbitResult.arbit_node);
+ break;
+
default:
- printf("Unexpected event\n");
break;
}
}
}
- ndb_mgm_destroy_logevent_handle(&l);
+ ndb_mgm_destroy_logevent_handle(&le);
ndb_mgm_destroy_handle(&h);
ndb_end(0);
return 0;
diff --git a/ndb/include/mgmapi/ndb_logevent.h b/ndb/include/mgmapi/ndb_logevent.h
index 3ca744bcc2e..d5744b0fffe 100644
--- a/ndb/include/mgmapi/ndb_logevent.h
+++ b/ndb/include/mgmapi/ndb_logevent.h
@@ -286,101 +286,125 @@ extern "C" {
*/
union {
/* CONNECT */
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned node;
} Connected;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned node;
} Disconnected;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned node;
} CommunicationClosed;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned node;
} CommunicationOpened;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned node;
unsigned version;
} ConnectedApiVersion;
/* CHECKPOINT */
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned gci;
} GlobalCheckpointStarted;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned gci;
} GlobalCheckpointCompleted;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned lci;
unsigned keep_gci;
unsigned restore_gci;
} LocalCheckpointStarted;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned lci;
} LocalCheckpointCompleted;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned data;
} LCPStoppedInCalcKeepGci;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned node;
unsigned table_id;
unsigned fragment_id;
} LCPFragmentCompleted;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned acc_count;
unsigned tup_count;
} UndoLogBlocked;
/* STARTUP */
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned version;
} NDBStartStarted;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned version;
} NDBStartCompleted;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
} STTORRYRecieved;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned phase;
unsigned starttype;
} StartPhaseCompleted;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned own_id;
unsigned president_id;
unsigned dynamic_id;
} CM_REGCONF;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned own_id;
unsigned other_id;
unsigned cause;
} CM_REGREF;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned own_id;
unsigned left_id;
unsigned right_id;
unsigned dynamic_id;
} FIND_NEIGHBOURS;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned stoptype;
} NDBStopStarted;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
} NDBStopAborted;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned node;
unsigned keep_gci;
unsigned completed_gci;
unsigned restorable_gci;
} StartREDOLog;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned log_part;
unsigned start_mb;
unsigned stop_mb;
unsigned gci;
} StartLog;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned block;
unsigned data1;
@@ -396,48 +420,70 @@ extern "C" {
} UNDORecordsExecuted;
/* NODERESTART */
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
} NR_CopyDict;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
} NR_CopyDistr;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned dest_node;
} NR_CopyFragsStarted;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned dest_node;
unsigned table_id;
unsigned fragment_id;
} NR_CopyFragDone;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned dest_node;
} NR_CopyFragsCompleted;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned block; /* 0 = all */
unsigned failed_node;
unsigned completing_node; /* 0 = all */
} NodeFailCompleted;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned failed_node;
unsigned failure_state;
} NODE_FAILREP;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
+ unsigned code; /* code & state << 16 */
+ unsigned arbit_node;
+ unsigned ticket_0;
+ unsigned ticket_1;
/* TODO */
} ArbitState;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
+ unsigned code; /* code & state << 16 */
+ unsigned arbit_node;
+ unsigned ticket_0;
+ unsigned ticket_1;
/* TODO */
} ArbitResult;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
} GCP_TakeoverStarted;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
} GCP_TakeoverCompleted;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
} LCP_TakeoverStarted;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned state;
} LCP_TakeoverCompleted;
/* STATISTIC */
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned trans_count;
unsigned commit_count;
@@ -450,23 +496,29 @@ extern "C" {
unsigned scan_count;
unsigned range_scan_count;
} TransReportCounters;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned ops;
} OperationReportCounters;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned table_id;
} TableCreated;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned mean_loop_count;
} JobStatistic;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned to_node;
unsigned mean_sent_bytes;
} SendBytesStatistic;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned from_node;
unsigned mean_received_bytes;
} ReceiveBytesStatistic;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
int gth;
unsigned page_size_kb;
@@ -476,32 +528,40 @@ extern "C" {
} MemoryUsage;
/* ERROR */
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned to_node;
unsigned code;
} TransporterError;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned to_node;
unsigned code;
} TransporterWarning;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned node;
unsigned count;
} MissedHeartbeat;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned node;
} DeadDueToHeartbeat;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
/* TODO */
} WarningEvent;
/* INFO */
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned node;
} SentHeartbeat;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
unsigned node;
} CreateLogBytes;
+ /** Log event specific data for for corresponding NDB_LE_ log event */
struct {
/* TODO */
} InfoEvent;
diff --git a/ndb/src/mgmapi/ndb_logevent.cpp b/ndb/src/mgmapi/ndb_logevent.cpp
index 89ca9a50883..2817abcfdbb 100644
--- a/ndb/src/mgmapi/ndb_logevent.cpp
+++ b/ndb/src/mgmapi/ndb_logevent.cpp
@@ -197,10 +197,16 @@ struct Ndb_logevent_body_row ndb_logevent_body[]= {
ROW( NODE_FAILREP, "failure_state", 2, failure_state),
/* TODO */
-// ROW( ArbitState),
+ ROW( ArbitState, "code", 1, code),
+ ROW( ArbitState, "arbit_node", 2, arbit_node),
+ ROW( ArbitState, "ticket_0", 3, ticket_0),
+ ROW( ArbitState, "ticket_1", 4, ticket_1),
/* TODO */
-// ROW( ArbitResult),
+ ROW( ArbitResult, "code", 1, code),
+ ROW( ArbitResult, "arbit_node", 2, arbit_node),
+ ROW( ArbitResult, "ticket_0", 3, ticket_0),
+ ROW( ArbitResult, "ticket_1", 4, ticket_1),
// ROW( GCP_TakeoverStarted),