r23863: handle NT_STATUS_RETRY and always print out the NTSTATUS string
authorStefan Metzmacher <metze@samba.org>
Fri, 13 Jul 2007 10:40:53 +0000 (10:40 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:28:35 +0000 (12:28 -0500)
before calling ctdb_fatal()

metze
(This used to be commit 48ece3c21e3a5e9aa434c847eefaab59274a4e6f)

source3/lib/ctdbd_conn.c

index 7862a4265221c808f46bf45edea1f2dde589b9cd..d9d3421fa7c66ffc6edb4a45e8a8a741f4a107e8 100644 (file)
@@ -278,10 +278,13 @@ static NTSTATUS ctdb_read_req(struct ctdbd_connection *conn, uint32 reqid,
        if (NT_STATUS_EQUAL(status, NT_STATUS_NETWORK_BUSY)) {
                /* EAGAIN */
                goto again;
+       } else if (NT_STATUS_EQUAL(status, NT_STATUS_RETRY)) {
+               /* EAGAIN */
+               goto again;
        }
 
        if (!NT_STATUS_IS_OK(status)) {
-               DEBUG(3, ("packet_fd_read failed: %s\n", nt_errstr(status)));
+               DEBUG(0, ("packet_fd_read failed: %s\n", nt_errstr(status)));
                cluster_fatal("ctdbd died\n");
        }
 
@@ -297,7 +300,7 @@ static NTSTATUS ctdb_read_req(struct ctdbd_connection *conn, uint32 reqid,
        }
 
        if (!NT_STATUS_IS_OK(status)) {
-               DEBUG(3, ("Could not read packet: %s\n", nt_errstr(status)));
+               DEBUG(0, ("Could not read packet: %s\n", nt_errstr(status)));
                cluster_fatal("ctdbd died\n");
        }
 
@@ -1088,11 +1091,19 @@ NTSTATUS ctdbd_traverse(uint32 db_id,
 
                status = packet_fd_read_sync(conn->pkt);
 
+               if (NT_STATUS_EQUAL(status, NT_STATUS_RETRY)) {
+                       /*
+                        * There might be more in the queue
+                        */
+                       continue;
+               }
+
                if (NT_STATUS_EQUAL(status, NT_STATUS_END_OF_FILE)) {
                        status = NT_STATUS_OK;
                }
 
                if (!NT_STATUS_IS_OK(status)) {
+                       DEBUG(0, ("packet_fd_read_sync failed: %s\n", nt_errstr(status)));
                        cluster_fatal("ctdbd died\n");
                }
        }