Skip to content

Commit

Permalink
Remove explicitly-labeled unsafe ops.
Browse files Browse the repository at this point in the history
  • Loading branch information
rescrv committed Apr 4, 2017
1 parent 431deb6 commit ace57ea
Show file tree
Hide file tree
Showing 18 changed files with 66 additions and 1,170 deletions.
7 changes: 0 additions & 7 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,6 @@ man/consus-coordinator.1: man/consus-coordinator.1.h2m | consus-coordinator${EXE

include_HEADERS += include/consus.h
include_HEADERS += include/consus-admin.h
include_HEADERS += include/consus-unsafe.h
pkgconfig_DATA += libconsus.pc

lib_LTLIBRARIES += libconsus.la
Expand All @@ -315,9 +314,6 @@ noinst_HEADERS += client/pending_transaction_abort.h
noinst_HEADERS += client/pending_transaction_commit.h
noinst_HEADERS += client/pending_transaction_read.h
noinst_HEADERS += client/pending_transaction_write.h
noinst_HEADERS += client/pending_unsafe_lock_op.h
noinst_HEADERS += client/pending_unsafe_read.h
noinst_HEADERS += client/pending_unsafe_write.h
noinst_HEADERS += client/server_selector.h
noinst_HEADERS += client/transaction.h

Expand Down Expand Up @@ -350,9 +346,6 @@ libconsus_la_SOURCES += client/pending_transaction_abort.cc
libconsus_la_SOURCES += client/pending_transaction_commit.cc
libconsus_la_SOURCES += client/pending_transaction_read.cc
libconsus_la_SOURCES += client/pending_transaction_write.cc
libconsus_la_SOURCES += client/pending_unsafe_lock_op.cc
libconsus_la_SOURCES += client/pending_unsafe_read.cc
libconsus_la_SOURCES += client/pending_unsafe_write.cc
libconsus_la_SOURCES += client/server_selector.cc
libconsus_la_SOURCES += client/transaction.cc
libconsus_la_CXXFLAGS = $(AM_CXXFLAGS) $(CXXFLAGS)
Expand Down
1 change: 0 additions & 1 deletion TODO
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,3 @@ List of major "TODO" items left:
- Don't send commit record repeatedly
- change global voter retransmission (take durability into account so a message
isn't resent before it ever passes the durability barrier).
- remove unsafe
81 changes: 0 additions & 81 deletions bindings/python/consus.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -99,27 +99,6 @@ cdef extern from "consus.h":
const char* value, size_t value_sz,
consus_returncode* status)

cdef extern from "consus-unsafe.h":

int64_t consus_unsafe_get(consus_client* client,
const char* table,
const char* key, size_t key_sz,
consus_returncode* status,
char** value, size_t* value_sz)
int64_t consus_unsafe_put(consus_client* client,
const char* table,
const char* key, size_t key_sz,
const char* value, size_t value_sz,
consus_returncode* status)
int64_t consus_unsafe_lock(consus_client* client,
const char* table,
const char* key, size_t key_sz,
consus_returncode* status)
int64_t consus_unsafe_unlock(consus_client* client,
const char* table,
const char* key, size_t key_sz,
consus_returncode* status)


class ConsusException(Exception):

Expand Down Expand Up @@ -188,66 +167,6 @@ cdef class Client:
def begin_transaction(self):
return Transaction(self)

def unsafe_get(self, str table, key):
cdef bytes tmp = table.encode('ascii')
cdef bytes jkey = json.dumps(key).encode('utf8')
cdef consus_returncode status
cdef const char* t = tmp
cdef const char* k = jkey
cdef size_t k_sz = len(jkey)
cdef char* value
cdef size_t value_sz
req = consus_unsafe_get(self.client, t, k, k_sz, &status, &value, &value_sz)
self.finish(req, &status)
if status == CONSUS_SUCCESS:
x = json.loads(value[:value_sz].decode('utf8'))
free(value)
return x
else:
return None

def unsafe_put(self, str table, key, value):
cdef bytes tmp = table.encode('ascii')
cdef bytes jkey = json.dumps(key).encode('utf8')
cdef bytes jvalue = json.dumps(value).encode('utf8')
cdef consus_returncode status
cdef const char* t = tmp
cdef const char* k = jkey
cdef size_t k_sz = len(jkey)
cdef const char* v = jvalue
cdef size_t v_sz = len(jvalue)
req = consus_unsafe_put(self.client, t, k, k_sz, v, v_sz, &status)
self.finish(req, &status)
return True

def unsafe_lock(self, str table, key):
cdef bytes tmp = table.encode('ascii')
cdef bytes jkey = json.dumps(key).encode('utf8')
cdef consus_returncode status
cdef const char* t = tmp
cdef const char* k = jkey
cdef size_t k_sz = len(jkey)
req = consus_unsafe_lock(self.client, t, k, k_sz, &status)
self.finish(req, &status)
if status == CONSUS_SUCCESS:
return True
else:
return False

def unsafe_unlock(self, str table, key):
cdef bytes tmp = table.encode('ascii')
cdef bytes jkey = json.dumps(key).encode('utf8')
cdef consus_returncode status
cdef const char* t = tmp
cdef const char* k = jkey
cdef size_t k_sz = len(jkey)
req = consus_unsafe_unlock(self.client, t, k, k_sz, &status)
self.finish(req, &status)
if status == CONSUS_SUCCESS:
return True
else:
return False

cdef finish(self, int64_t req, consus_returncode* rstatus):
cdef consus_returncode lstatus
if req < 0:
Expand Down
46 changes: 0 additions & 46 deletions client/c.cc
Original file line number Diff line number Diff line change
Expand Up @@ -233,52 +233,6 @@ consus_destroy_transaction(consus_transaction* xact)
delete reinterpret_cast<consus::transaction*>(xact);
}

CONSUS_API int64_t
consus_unsafe_get(consus_client* client,
const char* table,
const char* key, size_t key_sz,
consus_returncode* status,
char** value, size_t* value_sz)
{
C_WRAP_EXCEPT(
return cl->unsafe_get(table, key, key_sz, status, value, value_sz);
);
}

CONSUS_API int64_t
consus_unsafe_put(consus_client* client,
const char* table,
const char* key, size_t key_sz,
const char* value, size_t value_sz,
consus_returncode* status)
{
C_WRAP_EXCEPT(
return cl->unsafe_put(table, key, key_sz, value, value_sz, status);
);
}

CONSUS_API int64_t
consus_unsafe_lock(struct consus_client* client,
const char* table,
const char* key, size_t key_sz,
enum consus_returncode* status)
{
C_WRAP_EXCEPT(
return cl->unsafe_lock(table, key, key_sz, status);
);
}

CONSUS_API int64_t
consus_unsafe_unlock(struct consus_client* client,
const char* table,
const char* key, size_t key_sz,
enum consus_returncode* status)
{
C_WRAP_EXCEPT(
return cl->unsafe_unlock(table, key, key_sz, status);
);
}

CONSUS_API int64_t
consus_get(consus_transaction* xact,
const char* table,
Expand Down
123 changes: 0 additions & 123 deletions client/client.cc
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,6 @@
#include "client/pending.h"
#include "client/pending_begin_transaction.h"
#include "client/pending_string.h"
#include "client/pending_unsafe_lock_op.h"
#include "client/pending_unsafe_read.h"
#include "client/pending_unsafe_write.h"

using consus::client;

Expand Down Expand Up @@ -196,126 +193,6 @@ client :: begin_transaction(consus_returncode* status,
return client_id;
}

int64_t
client :: unsafe_get(const char* table,
const char* key, size_t key_sz,
consus_returncode* status,
char** value, size_t* value_sz)
{
if (!maintain_coord_connection(status))
{
return -1;
}

unsigned char* binkey = NULL;
size_t binkey_sz = 0;

if (treadstone_json_sz_to_binary(key, key_sz, &binkey, &binkey_sz) < 0)
{
ERROR(INVALID) << "key contains invalid JSON";
return -1;
}

int64_t client_id = generate_new_client_id();
pending* p = new pending_unsafe_read(client_id, status,
table, binkey, binkey_sz, value, value_sz);
free(binkey);
p->kickstart_state_machine(this);
return client_id;
}

int64_t
client :: unsafe_put(const char* table,
const char* key, size_t key_sz,
const char* value, size_t value_sz,
consus_returncode* status)
{
if (!maintain_coord_connection(status))
{
return -1;
}

unsigned char* binkey = NULL;
size_t binkey_sz = 0;
unsigned char* binval = NULL;
size_t binval_sz = 0;

if (treadstone_json_sz_to_binary(key, key_sz, &binkey, &binkey_sz) < 0)
{
ERROR(INVALID) << "key contains invalid JSON";
return -1;
}

if (treadstone_json_sz_to_binary(value, value_sz, &binval, &binval_sz) < 0)
{
ERROR(INVALID) << "value contains invalid JSON";
free(binkey);
return -1;
}

int64_t client_id = generate_new_client_id();
pending* p = new pending_unsafe_write(client_id, status,
table, binkey, binkey_sz, binval, binval_sz);
free(binkey);
free(binval);
p->kickstart_state_machine(this);
return client_id;
}

int64_t
client :: unsafe_lock(const char* table,
const char* key, size_t key_sz,
consus_returncode* status)
{
if (!maintain_coord_connection(status))
{
return -1;
}

unsigned char* binkey = NULL;
size_t binkey_sz = 0;

if (treadstone_json_sz_to_binary(key, key_sz, &binkey, &binkey_sz) < 0)
{
ERROR(INVALID) << "key contains invalid JSON";
return -1;
}

int64_t client_id = generate_new_client_id();
pending* p = new pending_unsafe_lock_op(client_id, status,
table, binkey, binkey_sz, LOCK_LOCK);
free(binkey);
p->kickstart_state_machine(this);
return client_id;
}

int64_t
client :: unsafe_unlock(const char* table,
const char* key, size_t key_sz,
consus_returncode* status)
{
if (!maintain_coord_connection(status))
{
return -1;
}

unsigned char* binkey = NULL;
size_t binkey_sz = 0;

if (treadstone_json_sz_to_binary(key, key_sz, &binkey, &binkey_sz) < 0)
{
ERROR(INVALID) << "key contains invalid JSON";
return -1;
}

int64_t client_id = generate_new_client_id();
pending* p = new pending_unsafe_lock_op(client_id, status,
table, binkey, binkey_sz, LOCK_UNLOCK);
free(binkey);
p->kickstart_state_machine(this);
return client_id;
}

int
client :: create_data_center(const char* name, consus_returncode* status)
{
Expand Down
14 changes: 0 additions & 14 deletions client/client.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,20 +69,6 @@ class client
int64_t wait(int64_t id, int timeout, consus_returncode* status);
int64_t begin_transaction(consus_returncode* status,
consus_transaction** xact);
int64_t unsafe_get(const char* table,
const char* key, size_t key_sz,
consus_returncode* status,
char** value, size_t* value_sz);
int64_t unsafe_put(const char* table,
const char* key, size_t key_sz,
const char* value, size_t value_sz,
consus_returncode* status);
int64_t unsafe_lock(const char* table,
const char* key, size_t key_sz,
consus_returncode* status);
int64_t unsafe_unlock(const char* table,
const char* key, size_t key_sz,
consus_returncode* status);
// admin API
int create_data_center(const char* name, consus_returncode* status);
int set_default_data_center(const char* name, consus_returncode* status);
Expand Down
Loading

0 comments on commit ace57ea

Please sign in to comment.