From 04319dddabaa06d15407ab6f793b160d3b1c5edb Mon Sep 17 00:00:00 2001 From: dormando Date: Sat, 6 Sep 2008 15:14:41 -0700 Subject: [PATCH] Remove managed instance code. Extra options confuse newbies. We should come back and do this right, probably built on top of the binary protocol and SE stuff. --- ChangeLog | 6 ++ doc/memcached.1 | 3 - memcached.c | 134 +------------------------------------------- memcached.h | 7 --- t/managed-buckets.t | 11 ---- 5 files changed, 7 insertions(+), 154 deletions(-) delete mode 100755 t/managed-buckets.t diff --git a/ChangeLog b/ChangeLog index 966e6b4a26..f5f2fc7487 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-09-06 + + * Remove managed instance code. Incomplete/etc. (Dormando) + +2008-07-29 [Version 1.2.6 released] + 2008-07-24 [Version 1.2.6-rc1 released] * Add support for newer automake (Facebook) diff --git a/doc/memcached.1 b/doc/memcached.1 index 77a8ddcdcf..979a96f31f 100644 --- a/doc/memcached.1 +++ b/doc/memcached.1 @@ -61,9 +61,6 @@ Additions will not be possible until adequate space is freed up. .B \-r Raise the core file size limit to the maximum allowable. .TP -.B \-b -Run a managed instanced (mnemonic: buckets)\n". -.TP .B \-f Use as the multiplier for computing the sizes of memory chunks that items are stored in. A lower value may result in less wasted memory depending diff --git a/memcached.c b/memcached.c index ead1c735a5..38c778a73c 100644 --- a/memcached.c +++ b/memcached.c @@ -112,8 +112,6 @@ static struct event_base *main_base; #define TRANSMIT_SOFT_ERROR 2 #define TRANSMIT_HARD_ERROR 3 -static int *buckets = 0; /* bucket->generation array for a managed instance */ - #define REALTIME_MAXDELTA 60*60*24*30 /* * given time value that's either unix time or delta from current unix time, return @@ -174,7 +172,6 @@ static void settings_init(void) { settings.oldest_live = 0; settings.evict_to_free = 1; /* push old items out of cache when memory runs out */ settings.socketpath = NULL; /* by default, not using a unix socket */ - settings.managed = false; settings.factor = 1.25; settings.chunk_size = 48; /* space for a modest key and value */ #ifdef USE_THREADS @@ -366,8 +363,6 @@ conn *conn_new(const int sfd, const int init_state, const int event_flags, c->write_and_go = conn_read; c->write_and_free = 0; c->item = 0; - c->bucket = -1; - c->gen = 0; c->noreply = false; @@ -1240,19 +1235,6 @@ static inline void process_get_command(conn *c, token_t *tokens, size_t ntokens, int stats_get_misses = 0; assert(c != NULL); - if (settings.managed) { - int bucket = c->bucket; - if (bucket == -1) { - out_string(c, "CLIENT_ERROR no BG data in managed mode"); - return; - } - c->bucket = -1; - if (buckets[bucket] != c->gen) { - out_string(c, "ERROR_NOT_OWNER"); - return; - } - } - do { while(key_token->length != 0) { @@ -1454,19 +1436,6 @@ static void process_update_command(conn *c, token_t *tokens, const size_t ntoken stats_prefix_record_set(key); } - if (settings.managed) { - int bucket = c->bucket; - if (bucket == -1) { - out_string(c, "CLIENT_ERROR no BG data in managed mode"); - return; - } - c->bucket = -1; - if (buckets[bucket] != c->gen) { - out_string(c, "ERROR_NOT_OWNER"); - return; - } - } - it = item_alloc(key, nkey, flags, realtime(exptime), vlen+2); if (it == 0) { @@ -1519,19 +1488,6 @@ static void process_arithmetic_command(conn *c, token_t *tokens, const size_t nt key = tokens[KEY_TOKEN].value; nkey = tokens[KEY_TOKEN].length; - if (settings.managed) { - int bucket = c->bucket; - if (bucket == -1) { - out_string(c, "CLIENT_ERROR no BG data in managed mode"); - return; - } - c->bucket = -1; - if (buckets[bucket] != c->gen) { - out_string(c, "ERROR_NOT_OWNER"); - return; - } - } - delta = strtoll(tokens[2].value, NULL, 10); if(errno == ERANGE) { @@ -1612,19 +1568,6 @@ static void process_delete_command(conn *c, token_t *tokens, const size_t ntoken set_noreply_maybe(c, tokens, ntokens); - if (settings.managed) { - int bucket = c->bucket; - if (bucket == -1) { - out_string(c, "CLIENT_ERROR no BG data in managed mode"); - return; - } - c->bucket = -1; - if (buckets[bucket] != c->gen) { - out_string(c, "ERROR_NOT_OWNER"); - return; - } - } - key = tokens[KEY_TOKEN].value; nkey = tokens[KEY_TOKEN].length; @@ -1767,67 +1710,6 @@ static void process_command(conn *c, char *command) { process_delete_command(c, tokens, ntokens); - } else if (ntokens == 3 && strcmp(tokens[COMMAND_TOKEN].value, "own") == 0) { - unsigned int bucket, gen; - if (!settings.managed) { - out_string(c, "CLIENT_ERROR not a managed instance"); - return; - } - - if (sscanf(tokens[1].value, "%u:%u", &bucket,&gen) == 2) { - if ((bucket < 0) || (bucket >= MAX_BUCKETS)) { - out_string(c, "CLIENT_ERROR bucket number out of range"); - return; - } - buckets[bucket] = gen; - out_string(c, "OWNED"); - return; - } else { - out_string(c, "CLIENT_ERROR bad format"); - return; - } - - } else if (ntokens == 3 && (strcmp(tokens[COMMAND_TOKEN].value, "disown")) == 0) { - - int bucket; - if (!settings.managed) { - out_string(c, "CLIENT_ERROR not a managed instance"); - return; - } - if (sscanf(tokens[1].value, "%u", &bucket) == 1) { - if ((bucket < 0) || (bucket >= MAX_BUCKETS)) { - out_string(c, "CLIENT_ERROR bucket number out of range"); - return; - } - buckets[bucket] = 0; - out_string(c, "DISOWNED"); - return; - } else { - out_string(c, "CLIENT_ERROR bad format"); - return; - } - - } else if (ntokens == 3 && (strcmp(tokens[COMMAND_TOKEN].value, "bg")) == 0) { - int bucket, gen; - if (!settings.managed) { - out_string(c, "CLIENT_ERROR not a managed instance"); - return; - } - if (sscanf(tokens[1].value, "%u:%u", &bucket, &gen) == 2) { - /* we never write anything back, even if input's wrong */ - if ((bucket < 0) || (bucket >= MAX_BUCKETS) || (gen <= 0)) { - /* do nothing, bad input */ - } else { - c->bucket = bucket; - c->gen = gen; - } - conn_set_state(c, conn_read); - return; - } else { - out_string(c, "CLIENT_ERROR bad format"); - return; - } - } else if (ntokens >= 2 && (strcmp(tokens[COMMAND_TOKEN].value, "stats") == 0)) { process_stat(c, tokens, ntokens); @@ -2755,7 +2637,6 @@ static void usage(void) { "-vv very verbose (also print client commands/reponses)\n" "-h print this help and exit\n" "-i print memcached and libevent license\n" - "-b run a managed instanced (mnemonic: buckets)\n" "-P save PID in , only used with -d option\n" "-f chunk size growth factor, default 1.25\n" "-n minimum space allocated for key+value+flags, default 48\n" @@ -2952,7 +2833,7 @@ int main (int argc, char **argv) { setbuf(stderr, NULL); /* process arguments */ - while ((c = getopt(argc, argv, "a:bp:s:U:m:Mc:khirvdl:u:P:f:s:n:t:D:LR:")) != -1) { + while ((c = getopt(argc, argv, "a:p:s:U:m:Mc:khirvdl:u:P:f:s:n:t:D:LR:")) != -1) { switch (c) { case 'a': /* access for unix domain socket, as octal mask (like chmod)*/ @@ -2962,9 +2843,6 @@ int main (int argc, char **argv) { case 'U': settings.udpport = atoi(optarg); break; - case 'b': - settings.managed = true; - break; case 'p': settings.port = atoi(optarg); break; @@ -3154,16 +3032,6 @@ int main (int argc, char **argv) { suffix_init(); slabs_init(settings.maxbytes, settings.factor, preallocate); - /* managed instance? alloc and zero a bucket array */ - if (settings.managed) { - buckets = malloc(sizeof(int) * MAX_BUCKETS); - if (buckets == 0) { - fprintf(stderr, "failed to allocate the bucket array"); - exit(EXIT_FAILURE); - } - memset(buckets, 0, sizeof(int) * MAX_BUCKETS); - } - /* * ignore SIGPIPE signals; we can use errno==EPIPE if we * need that information diff --git a/memcached.h b/memcached.h index 0cf0e0bf97..512df276c1 100644 --- a/memcached.h +++ b/memcached.h @@ -87,7 +87,6 @@ struct settings { char *inter; int verbose; rel_time_t oldest_live; /* ignore existing items older than this */ - bool managed; /* if 1, a tracker manages virtual buckets */ int evict_to_free; char *socketpath; /* path to unix socket if using local socket */ int access; /* access mask (a la chmod) for unix domain socket */ @@ -219,16 +218,10 @@ struct conn { int hdrsize; /* number of headers' worth of space is allocated */ int binary; /* are we in binary mode */ - int bucket; /* bucket number for the next command, if running as - a managed instance. -1 (_not_ 0) means invalid. */ - int gen; /* generation requested for the bucket */ bool noreply; /* True if the reply should not be sent. */ conn *next; /* Used for generating a list of conn structures */ }; -/* number of virtual buckets for a managed instance */ -#define MAX_BUCKETS 32768 - /* current time of day (updated periodically) */ extern volatile rel_time_t current_time; diff --git a/t/managed-buckets.t b/t/managed-buckets.t deleted file mode 100755 index 99e07d5c9d..0000000000 --- a/t/managed-buckets.t +++ /dev/null @@ -1,11 +0,0 @@ -#!/usr/bin/perl - -use strict; -use Test::More skip_all => "Tests not written."; # tests => 1 -use FindBin qw($Bin); -use lib "$Bin/lib"; -use MemcachedTest; - -my $server = new_memcached(); -my $sock = $server->sock; -