The branch, master has been updated
       via  764f2f9 s3-ctdb: return proper exit code
       via  0a45e9c s3-ctdb: adjust a loglevel
       via  6cfe6e9 s3-ctdb: Fix ctdb_serverids_exist for target nodes that died
       via  6d83e35 s3-ctdb: Add debugs to ctdb_serverids_exist
      from  cff3ad4 lib/dbwrap: rewrite lock order check to ease debugging

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 764f2f99e0a5df0112031bc6f13f8d752a6a302d
Author: Christian Ambach <[email protected]>
Date:   Fri Aug 3 12:42:41 2012 +0200

    s3-ctdb: return proper exit code
    
    do not loose the result from ctdbd_messaging_send_blob()
    
    Autobuild-User(master): Christian Ambach <[email protected]>
    Autobuild-Date(master): Fri Aug  3 14:49:01 CEST 2012 on sn-devel-104

commit 0a45e9c4d2333192945eb7ba3100b78c1f1c07f0
Author: Christian Ambach <[email protected]>
Date:   Fri Aug 3 12:29:10 2012 +0200

    s3-ctdb: adjust a loglevel

commit 6cfe6e92a1f962040a22f107086b19159bb7c605
Author: Volker Lendecke <[email protected]>
Date:   Mon Jul 16 16:18:19 2012 +0200

    s3-ctdb: Fix ctdb_serverids_exist for target nodes that died
    
    Signed-off-by: Christian Ambach <[email protected]>

commit 6d83e35410eb852b36678277085726992dc32f98
Author: Volker Lendecke <[email protected]>
Date:   Mon Jul 16 15:50:06 2012 +0200

    s3-ctdb: Add debugs to ctdb_serverids_exist
    
    Signed-off-by: Christian Ambach <[email protected]>

-----------------------------------------------------------------------

Summary of changes:
 source3/lib/ctdbd_conn.c |   54 ++++++++++++++++++++++++++++++++++------------
 1 files changed, 40 insertions(+), 14 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/lib/ctdbd_conn.c b/source3/lib/ctdbd_conn.c
index 4bad3f0..84f26e0 100644
--- a/source3/lib/ctdbd_conn.c
+++ b/source3/lib/ctdbd_conn.c
@@ -760,7 +760,7 @@ NTSTATUS ctdbd_messaging_send(struct ctdbd_connection *conn,
        status = ctdbd_messaging_send_blob(conn, dst_vnn, dst_srvid,
                                           blob.data, blob.length);
        TALLOC_FREE(blob.data);
-       return NT_STATUS_OK;
+       return status;
 }
 
 NTSTATUS ctdbd_messaging_send_blob(struct ctdbd_connection *conn,
@@ -1055,6 +1055,7 @@ static bool ctdb_collect_vnns(TALLOC_CTX *mem_ctx,
 
        vnn_indexes = talloc_array(mem_ctx, unsigned, num_pids);
        if (vnn_indexes == NULL) {
+               DEBUG(1, ("talloc_array failed\n"));
                goto fail;
        }
 
@@ -1079,6 +1080,7 @@ static bool ctdb_collect_vnns(TALLOC_CTX *mem_ctx,
                vnns = talloc_realloc(mem_ctx, vnns, struct ctdb_vnn_list,
                                      num_vnns+1);
                if (vnns == NULL) {
+                       DEBUG(1, ("talloc_realloc failed\n"));
                        goto fail;
                }
                vnns[num_vnns].vnn = vnn;
@@ -1091,11 +1093,13 @@ static bool ctdb_collect_vnns(TALLOC_CTX *mem_ctx,
 
                vnn->srvids = talloc_array(vnns, uint64_t, vnn->num_srvids);
                if (vnn->srvids == NULL) {
+                       DEBUG(1, ("talloc_array failed\n"));
                        goto fail;
                }
                vnn->pid_indexes = talloc_array(vnns, unsigned,
                                                vnn->num_srvids);
                if (vnn->pid_indexes == NULL) {
+                       DEBUG(1, ("talloc_array failed\n"));
                        goto fail;
                }
        }
@@ -1130,6 +1134,7 @@ bool ctdb_serverids_exist(struct ctdbd_connection *conn,
 
        if (!ctdb_collect_vnns(talloc_tos(), pids, num_pids,
                               &vnns, &num_vnns)) {
+               DEBUG(1, ("ctdb_collect_vnns failed\n"));
                goto fail;
        }
 
@@ -1166,16 +1171,16 @@ bool ctdb_serverids_exist(struct ctdbd_connection *conn,
                                               data)),
                        data_blob_const(vnn->srvids, req.datalen));
                if (!NT_STATUS_IS_OK(status)) {
-                       DEBUG(10, ("ctdb_packet_send failed: %s\n",
-                                  nt_errstr(status)));
+                       DEBUG(1, ("ctdb_packet_send failed: %s\n",
+                                 nt_errstr(status)));
                        goto fail;
                }
        }
 
        status = ctdb_packet_flush(conn->pkt);
        if (!NT_STATUS_IS_OK(status)) {
-               DEBUG(10, ("ctdb_packet_flush failed: %s\n",
-                          nt_errstr(status)));
+               DEBUG(1, ("ctdb_packet_flush failed: %s\n",
+                         nt_errstr(status)));
                goto fail;
        }
 
@@ -1185,16 +1190,18 @@ bool ctdb_serverids_exist(struct ctdbd_connection *conn,
                struct ctdb_reply_control *reply = NULL;
                struct ctdb_vnn_list *vnn;
                uint32_t reqid;
+               uint8_t *reply_data;
 
                status = ctdb_read_req(conn, 0, talloc_tos(), (void *)&reply);
                if (!NT_STATUS_IS_OK(status)) {
-                       DEBUG(10, ("ctdb_read_req failed: %s\n",
-                                  nt_errstr(status)));
+                       DEBUG(1, ("ctdb_read_req failed: %s\n",
+                                 nt_errstr(status)));
                        goto fail;
                }
 
                if (reply->hdr.operation != CTDB_REPLY_CONTROL) {
-                       DEBUG(10, ("Received invalid reply\n"));
+                       DEBUG(1, ("Received invalid reply %u\n",
+                                 (unsigned)reply->hdr.operation));
                        goto fail;
                }
 
@@ -1208,8 +1215,8 @@ bool ctdb_serverids_exist(struct ctdbd_connection *conn,
                        }
                }
                if (i == num_vnns) {
-                       DEBUG(10, ("Received unknown reqid number %u\n",
-                                  (unsigned)reqid));
+                       DEBUG(1, ("Received unknown reqid number %u\n",
+                                 (unsigned)reqid));
                        goto fail;
                }
 
@@ -1221,9 +1228,26 @@ bool ctdb_serverids_exist(struct ctdbd_connection *conn,
                           (unsigned)vnn->vnn, vnn->num_srvids,
                           (unsigned)reply->datalen));
 
-               if (reply->datalen < ((vnn->num_srvids+7)/8)) {
-                       DEBUG(10, ("Received short reply\n"));
-                       goto fail;
+               if (reply->datalen >= ((vnn->num_srvids+7)/8)) {
+                       /*
+                        * Got a real reply
+                        */
+                       reply_data = reply->data;
+               } else {
+                       /*
+                        * Got an error reply
+                        */
+                       DEBUG(5, ("Received short reply len %d, status %u, "
+                                 "errorlen %u\n",
+                                 (unsigned)reply->datalen,
+                                 (unsigned)reply->status,
+                                 (unsigned)reply->errorlen));
+                       dump_data(5, reply->data, reply->errorlen);
+
+                       /*
+                        * This will trigger everything set to false
+                        */
+                       reply_data = NULL;
                }
 
                for (i=0; i<vnn->num_srvids; i++) {
@@ -1234,7 +1258,9 @@ bool ctdb_serverids_exist(struct ctdbd_connection *conn,
                                results[idx] = true;
                                continue;
                        }
-                       results[idx] = ((reply->data[i/8] & (1<<(i%8))) != 0);
+                       results[idx] =
+                               (reply_data != NULL) &&
+                               ((reply_data[i/8] & (1<<(i%8))) != 0);
                }
 
                TALLOC_FREE(reply);


-- 
Samba Shared Repository

Reply via email to