[SCM] Samba Shared Repository - branch master updated
Martin Schwenke
martins at samba.org
Wed Jan 20 06:29:03 UTC 2016
The branch, master has been updated
via d905179 ctdb-client: Use ctdb_rec_buffer_init() to initialize ctdb_rec_buffer
via a7d54bb ctdb-client: Add missing initialization for h->ev in transaction_start
via 5d5d88e ctdb-client: Do not delete reqid explicitly
via 8ca76ad ctdb-client: Add a disconnect callback for ctdb client
via 555237f ctdb-client: Close ctdb socket connection when client context goes away
via e59712b ctdb-client: Use ctdb_ltdb_header_extract()
via 0ed60d7 ctdb-protocol: Fix marshaling of seqnum
from 006d4c1 docs: Bump version up to 4.4.
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit d90517912712f2e8021733ecaabed903cb2d0aed
Author: Amitay Isaacs <amitay at gmail.com>
Date: Fri Nov 6 17:08:18 2015 +1100
ctdb-client: Use ctdb_rec_buffer_init() to initialize ctdb_rec_buffer
... instead of talloc_zero(). This sets the db_id correctly.
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
Autobuild-User(master): Martin Schwenke <martins at samba.org>
Autobuild-Date(master): Wed Jan 20 07:28:42 CET 2016 on sn-devel-144
commit a7d54bb2c15e280143455289236884be1a402dda
Author: Amitay Isaacs <amitay at gmail.com>
Date: Fri Nov 6 15:20:15 2015 +1100
ctdb-client: Add missing initialization for h->ev in transaction_start
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
commit 5d5d88e0bb082cc82fab355b687b7cb34a8bd059
Author: Amitay Isaacs <amitay at gmail.com>
Date: Thu Nov 5 17:09:11 2015 +1100
ctdb-client: Do not delete reqid explicitly
The reqid will be deleted when the client control state is freed.
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
commit 8ca76adaeaa284601424e2d3ec4cc4bd044ed0de
Author: Amitay Isaacs <amitay at gmail.com>
Date: Wed Oct 14 15:36:55 2015 +1100
ctdb-client: Add a disconnect callback for ctdb client
This allows the client code to optionally clean up and/or re-connect to
CTDB daemon when it the daemon goes away. If no disconnect callback is
registered and CTDB daemon goes away, then the client will terminate.
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
commit 555237f2a8bd42f7223397f73e62a2a3786484c5
Author: Amitay Isaacs <amitay at gmail.com>
Date: Wed Oct 14 15:30:14 2015 +1100
ctdb-client: Close ctdb socket connection when client context goes away
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
commit e59712b2c311c4d5fff82bc62f86a83ea4e86cbd
Author: Amitay Isaacs <amitay at gmail.com>
Date: Tue Nov 10 18:32:05 2015 +1100
ctdb-client: Use ctdb_ltdb_header_extract()
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
commit 0ed60d757d3cb134eb74e559bc3288b44cf74a6f
Author: Amitay Isaacs <amitay at gmail.com>
Date: Thu Nov 26 13:50:14 2015 +1100
ctdb-protocol: Fix marshaling of seqnum
Signed-off-by: Amitay Isaacs <amitay at gmail.com>
Reviewed-by: Martin Schwenke <martin at meltin.net>
-----------------------------------------------------------------------
Summary of changes:
ctdb/client/client.h | 6 ++++++
ctdb/client/client_connect.c | 30 +++++++++++++++++++++++++++++-
ctdb/client/client_control.c | 1 -
ctdb/client/client_db.c | 11 +++--------
ctdb/client/client_private.h | 3 +++
ctdb/protocol/protocol_control.c | 2 +-
6 files changed, 42 insertions(+), 11 deletions(-)
Changeset truncated at 500 lines:
diff --git a/ctdb/client/client.h b/ctdb/client/client.h
index 3a16069..bce0c6b 100644
--- a/ctdb/client/client.h
+++ b/ctdb/client/client.h
@@ -30,11 +30,17 @@ struct ctdb_client_context;
struct ctdb_db_context;
struct ctdb_record_handle;
+typedef void (*ctdb_client_callback_func_t)(void *private_data);
+
/* from client/client_connect.c */
int ctdb_client_init(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
const char *sockpath, struct ctdb_client_context **ret);
+void ctdb_client_set_disconnect_callback(struct ctdb_client_context *client,
+ ctdb_client_callback_func_t func,
+ void *private_data);
+
uint32_t ctdb_client_pnn(struct ctdb_client_context *client);
void ctdb_client_wait(struct tevent_context *ev, bool *done);
diff --git a/ctdb/client/client_connect.c b/ctdb/client/client_connect.c
index 0c92485..d433f7d 100644
--- a/ctdb/client/client_connect.c
+++ b/ctdb/client/client_connect.c
@@ -43,6 +43,8 @@ static int ctdb_client_connect(struct ctdb_client_context *client,
struct tevent_context *ev,
const char *sockpath);
+static int ctdb_client_context_destructor(struct ctdb_client_context *client);
+
int ctdb_client_init(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
const char *sockpath, struct ctdb_client_context **out)
{
@@ -78,10 +80,21 @@ int ctdb_client_init(TALLOC_CTX *mem_ctx, struct tevent_context *ev,
return ret;
}
+ talloc_set_destructor(client, ctdb_client_context_destructor);
+
*out = client;
return 0;
}
+static int ctdb_client_context_destructor(struct ctdb_client_context *client)
+{
+ if (client->fd != -1) {
+ close(client->fd);
+ client->fd = -1;
+ }
+ return 0;
+}
+
static void client_read_handler(uint8_t *buf, size_t buflen,
void *private_data);
static void client_dead_handler(void *private_data);
@@ -193,12 +206,27 @@ static void client_dead_handler(void *private_data)
{
struct ctdb_client_context *client = talloc_get_type_abort(
private_data, struct ctdb_client_context);
+ ctdb_client_callback_func_t callback = client->callback;
+ void *callback_data = client->private_data;
- DEBUG(DEBUG_NOTICE, ("connection to daemon closed, exiting\n"));
talloc_free(client);
+ if (callback != NULL) {
+ callback(callback_data);
+ return;
+ }
+
+ DEBUG(DEBUG_NOTICE, ("connection to daemon closed, exiting\n"));
exit(1);
}
+void ctdb_client_set_disconnect_callback(struct ctdb_client_context *client,
+ ctdb_client_callback_func_t callback,
+ void *private_data)
+{
+ client->callback = callback;
+ client->private_data = private_data;
+}
+
uint32_t ctdb_client_pnn(struct ctdb_client_context *client)
{
return client->pnn;
diff --git a/ctdb/client/client_control.c b/ctdb/client/client_control.c
index 4249bfb..b25ff40 100644
--- a/ctdb/client/client_control.c
+++ b/ctdb/client/client_control.c
@@ -141,7 +141,6 @@ static void ctdb_client_control_done(struct tevent_req *subreq)
/* Daemon will not reply, so we set status to 0 */
if (state->flags & CTDB_CTRL_FLAG_NOREPLY) {
- reqid_remove(state->client->idr, state->reqid);
state->reply->status = 0;
tevent_req_done(req);
}
diff --git a/ctdb/client/client_db.c b/ctdb/client/client_db.c
index 6af607a..287efd6 100644
--- a/ctdb/client/client_db.c
+++ b/ctdb/client/client_db.c
@@ -591,19 +591,13 @@ static int ctdb_db_traverse_handler(struct tdb_context *tdb, TDB_DATA key,
if (state->extract_header) {
struct ctdb_ltdb_header header;
- size_t len;
- ret = ctdb_ltdb_header_pull(data.dptr, data.dsize, &header);
+ ret = ctdb_ltdb_header_extract(&data, &header);
if (ret != 0) {
state->error = ret;
return 1;
}
- len = ctdb_ltdb_header_len(&header);
-
- data.dptr += len;
- data.dsize -= len;
-
ret = state->parser(0, &header, key, data, state->private_data);
} else {
ret = state->parser(0, NULL, key, data, state->private_data);
@@ -1616,6 +1610,7 @@ struct tevent_req *ctdb_transaction_start_send(TALLOC_CTX *mem_ctx,
return tevent_req_post(req, ev);
}
+ h->ev = ev;
h->client = client;
h->db = db;
h->readonly = readonly;
@@ -1629,7 +1624,7 @@ struct tevent_req *ctdb_transaction_start_send(TALLOC_CTX *mem_ctx,
h->sid.unique_id = h->sid.task_id;
h->sid.unique_id = (h->sid.unique_id << 32) | h->sid.pid;
- h->recbuf = talloc_zero(h, struct ctdb_rec_buffer);
+ h->recbuf = ctdb_rec_buffer_init(h, db->db_id);
if (tevent_req_nomem(h->recbuf, req)) {
return tevent_req_post(req, ev);
}
diff --git a/ctdb/client/client_private.h b/ctdb/client/client_private.h
index b1d8d4b..7ea9b12 100644
--- a/ctdb/client/client_private.h
+++ b/ctdb/client/client_private.h
@@ -21,6 +21,7 @@
#define __CTDB_CLIENT_PRIVATE_H__
#include "protocol/protocol.h"
+#include "client/client.h"
struct ctdb_db_context {
struct ctdb_db_context *prev, *next;
@@ -35,6 +36,8 @@ struct ctdb_client_context {
struct reqid_context *idr;
struct srvid_context *srv;
struct comm_context *comm;
+ ctdb_client_callback_func_t callback;
+ void *private_data;
int fd;
uint32_t pnn;
struct ctdb_db_context *db;
diff --git a/ctdb/protocol/protocol_control.c b/ctdb/protocol/protocol_control.c
index 95edc1a..1c8364e 100644
--- a/ctdb/protocol/protocol_control.c
+++ b/ctdb/protocol/protocol_control.c
@@ -713,7 +713,7 @@ static void ctdb_req_control_data_push(struct ctdb_req_control_data *cd,
case CTDB_CONTROL_GET_DB_SEQNUM:
u64 = cd->data.db_id;
- ctdb_uint32_push(u64, buf);
+ ctdb_uint64_push(u64, buf);
break;
case CTDB_CONTROL_DB_SET_HEALTHY:
--
Samba Shared Repository
More information about the samba-cvs
mailing list