struct ctdb_call_state *state;
state = idr_find(ctdb->idr, hdr->reqid);
- if (state == NULL) return;
+ if (state == NULL) {
+ DEBUG(0, ("reqid %d not found\n", hdr->reqid));
+ return;
+ }
if (!talloc_get_type(state, struct ctdb_call_state)) {
DEBUG(0,("ctdb idr type error at %s\n", __location__));
if (ret != 0) return NULL;
if (header.dmaster == ctdb->vnn && !(ctdb->flags & CTDB_FLAG_SELF_CONNECT)) {
- return ctdb_call_local_send(ctdb_db, call, &header, &data);
+ struct ctdb_call_state *result;
+ result = ctdb_call_local_send(ctdb_db, call, &header, &data);
+ talloc_free(data.dptr);
+ return result;
}
talloc_free(data.dptr);
struct ctdb_fetch_lock_state *state;
state = idr_find(ctdb->idr, hdr->reqid);
- if (state == NULL) return;
+ if (state == NULL) {
+ DEBUG(0, ("reqid %d not found at %s\n", hdr->reqid,
+ __location__));
+ return;
+ }
if (!talloc_get_type(state, struct ctdb_fetch_lock_state)) {
- DEBUG(0, ("ctdb idr type error at %s\n", __location__));
+ DEBUG(0, ("ctdb idr type error at %s, it's a %s\n",
+ __location__, talloc_get_name(state)));
return;
}
talloc_set_destructor(h, fetch_lock_destructor);
- ret = ctdb_ltdb_fetch(ctdb_db, key, &h->header, ctdb_db, data);
+ ret = ctdb_ltdb_fetch(ctdb_db, key, &h->header, h, data);
if (ret != 0) {
talloc_free(h);
return NULL;
/*
report on any memory hanging off the null context
*/
-static void talloc_report_null_full(void)
+void talloc_report_null_full(void)
{
if (talloc_total_size(null_context) != 0) {
talloc_report_full(null_context, stderr);
printf("Event loop failed!\n");
break;
}
+
+ talloc_report_null_full();
}
printf("Fetch: %.2f msgs/sec\n", msg_count/end_timer());
}
}
+ talloc_enable_leak_report_full();
+
/* setup the remaining options for the main program to use */
extra_argv = poptGetArgs(pc);
if (extra_argv) {