From 8bffc4a3e045169b12a8c38c7c2e4c99161ac788 Mon Sep 17 00:00:00 2001 From: Fred Hebert Date: Wed, 23 Jan 2013 10:03:02 -0800 Subject: [PATCH 1/9] Updating to Redis replication protocol vsn 0006 Adds support for zipmaps, ziplists, intsets, sorted sets as ziplists, and hashmaps in ziplist encodings. Also adds support for millisecond key timeouts based on https://github.com/sripathikrishnan/redis-rdb-tools/wiki/Redis-RDB-Dump-File-Format --- src/nsync.hrl | 9 ++- src/rdb_load.erl | 140 +++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 143 insertions(+), 6 deletions(-) diff --git a/src/nsync.hrl b/src/nsync.hrl index 13acf8c..909d2d8 100644 --- a/src/nsync.hrl +++ b/src/nsync.hrl @@ -4,7 +4,14 @@ -define(REDIS_ZSET, 3). -define(REDIS_HASH, 4). --define(REDIS_EXPIRETIME, 253). +-define(REDIS_ZMAP, 9). +-define(REDIS_ZLIST, 10). +-define(REDIS_INTSET, 11). +-define(REDIS_SSZLIST, 12). +-define(REDIS_HMAPZLIST, 13). + +-define(REDIS_EXPIRETIME_MS, 252). +-define(REDIS_EXPIRETIME_SEC, 253). -define(REDIS_SELECTDB, 254). -define(REDIS_EOF, 255). diff --git a/src/rdb_load.erl b/src/rdb_load.erl index 4090918..27cab6c 100644 --- a/src/rdb_load.erl +++ b/src/rdb_load.erl @@ -41,7 +41,9 @@ packet(State, Data, Callback) when State == undefined orelse State#state.first = {ok, _Len, Rest1} -> case parse_rdb_version(Rest1) of {ok, Rest2, Vsn} -> - Vsn /= <<"0001">> andalso exit({error, vsn_not_supported}), + lists:member(Vsn, [<<"0001">>,<<"0002">>,<<"0003">>, + <<"0004">>,<<"0005">>,<<"0006">>]) + orelse exit({error, vsn_not_supported}), packet(#state{buffer = <<>>, first = false}, Rest2, Callback); {error, eof} -> #state{buffer = Data} @@ -115,12 +117,19 @@ parse(Data, Callback) -> {ok, Type, Rest} = rdb_type(Data), parse(Type, Rest, Callback). -parse(?REDIS_EXPIRETIME, Data, Callback) -> +parse(?REDIS_EXPIRETIME_MS, Data, Callback) -> + case Data of + <<_Time:64/unsigned-integer, Rest/binary>> -> + parse(Rest, Callback); + _ -> + {ok, <>} + end; +parse(?REDIS_EXPIRETIME_SEC, Data, Callback) -> case Data of <<_Time:32/unsigned-integer, Rest/binary>> -> parse(Rest, Callback); _ -> - {ok, <>} + {ok, <>} end; parse(?REDIS_EOF, Rest, _Callback) -> @@ -215,7 +224,7 @@ rdb_generic_string_object(Data, _Encode) -> ?REDIS_RDB_ENC_LZF -> rdb_lzf_string_object(Rest); _ -> - exit("Unknown RDB encoding type") + exit({"Unknown RDB encoding type", Len}) end; false -> case Rest of @@ -289,8 +298,28 @@ rdb_load_object(?REDIS_HASH, Data) -> {ok, _Enc, Size, Rest} = rdb_len(Data), parse_hash_props(Size, Rest, dict:new()); +rdb_load_object(?REDIS_ZMAP, Data) -> + {ok, List, Rest} = parse_zmap_vals(Data), + Dict = to_hash(List), + {ok, Dict, Rest}; + +rdb_load_object(?REDIS_ZLIST, Data) -> + parse_zlist_vals(Data); + +rdb_load_object(?REDIS_INTSET, Data) -> + parse_intset_vals(Data); + +rdb_load_object(?REDIS_SSZLIST, Data) -> + {ok, List, Rest} = parse_zlist_vals(Data), + Set = to_sorted_set(List), + {ok, Set, Rest}; + +rdb_load_object(?REDIS_HMAPZLIST, Data) -> + {ok, List, Rest} = parse_zlist_vals(Data), + Dict = to_hash(List), + {ok, Dict, Rest}; + rdb_load_object(_Type, _Data) -> - io:format("unknown object type: ~p~n", [_Type]), exit("Unknown object type"). parse_list_vals(0, Rest, Acc) -> @@ -315,3 +344,104 @@ parse_hash_props(Size, Rest, Acc) -> {ok, Key, Rest1} = rdb_encoded_string_object(Rest), {ok, Val, Rest2} = rdb_encoded_string_object(Rest1), parse_hash_props(Size-1, Rest2, dict:store(Key, Val, Acc)). + + +parse_zmap_vals(Data) -> + {ok, Str, Rest1} = rdb_encoded_string_object(Data), + <<_:8/unsigned-little, Rest/binary>> = Str, + {ok, parse_zmap_entry(Rest), Rest1}. + +parse_zmap_entry(<<255>>) -> + []; +parse_zmap_entry(<<253, Len:32/little-unsigned, Entries/binary>>) -> + <> = Entries, + <<_:Free/binary, Rest/binary>> = ToSkip, + [maybe_int(Entry) | parse_zmap_entry(Rest)]; +parse_zmap_entry(<>) -> + <> = Entries, + <<_:Free/binary, Rest/binary>> = ToSkip, + [maybe_int(Entry) | parse_zmap_entry(Rest)]. + + +maybe_int(Bin) -> + try + _ = list_to_integer(L = binary_to_list(Bin)), + L + catch + error:badarg -> + Bin + end. + +parse_zlist_vals(Data) -> + {ok, Str, Rest1} = rdb_encoded_string_object(Data), + <<_ZlBytes:32/little-unsigned, + _ZlTail:32/little-unsigned, + ZlLen:16/little-unsigned, + Entries/binary>> = Str, + {ok, parse_zlist_entries(ZlLen, Entries), Rest1}. + +parse_zlist_entries(0, <<255>>) -> + []; +parse_zlist_entries(Len, <<254:8/unsigned, _Prev:32, Entries/binary>>) -> + {Entry, Rest} = parse_zlist_entry(Entries), + [Entry | parse_zlist_entries(Len-1, Rest)]; +parse_zlist_entries(Len, <<_Prev:8/unsigned, Entries/binary>>) -> + {Entry, Rest} = parse_zlist_entry(Entries), + [Entry | parse_zlist_entries(Len-1, Rest)]. + +%% String value with length less than or equal to 63 bytes (6 bits). +parse_zlist_entry(<<0:2, Len:6/little-unsigned, Entries/binary>>) -> + <> = Entries, + {Entry, Rest}; +%% String value with length less than or equal to 16383 bytes (14 bits). +parse_zlist_entry(<<0:1,1:1, Len:14/little-unsigned, Entries/binary>>) -> + <> = Entries, + {Entry, Rest}; +%% String value with length greater than or equal to 16384 bytes. +parse_zlist_entry(<<1:1,0:1,_:6, Len:32/little-unsigned, Entries/binary>>) -> + <> = Entries, + {Entry, Rest}; +%% Read next 2 bytes as a 16 bit signed integer +parse_zlist_entry(<<1:1,1:1,0:2,_:4, Int:16/little-signed, Rest/binary>>) -> + {integer_to_list(Int), Rest}; +%% Read next 4 bytes as a 32 bit signed integer +parse_zlist_entry(<<1:1,1:1,0:1,1:1,_:4, Int:32/little-signed, Rest/binary>>) -> + {integer_to_list(Int), Rest}; +%% Read next 8 bytes as a 64 bit signed integer +parse_zlist_entry(<<1:1,1:1,1:1,0:1,_:4, Int:64/little-signed, Rest/binary>>) -> + {integer_to_list(Int), Rest}; +%% Read next 3 bytes as a 24 bit signed integer +parse_zlist_entry(<<1:1,1:1,1:1,1:1,0:4, Int:24/little-signed, Rest/binary>>) -> + {integer_to_list(Int), Rest}; +%% Read next byte as an 8 bit signed integer +parse_zlist_entry(<<1:1, 1:1, 1:1, 1:1, 1:1, 1:1, 1:1, 0:1, Int:8/little-signed, Rest/binary>>) -> + {integer_to_list(Int), Rest}; +%% immediate 4 bit integer. Unsigned integer from 0 to 12. +%% The encoded value is actually from 1 to 13 because 0000 and 1111 can not +%% be used, so 1 should be subtracted from the encoded 4 bit value to +%% obtain the right value +parse_zlist_entry(<<1:1,1:1,1:1,1:1, Val:4/little-unsigned, Rest/binary>>) -> + {integer_to_list(Val-1), Rest}. + +parse_intset_vals(Data) -> + {ok, Str, Rest1} = rdb_encoded_string_object(Data), + <> = Str, + {ok, parse_intset_entries(Encoding*8,Length,Entries), Rest1}. + +parse_intset_entries(_Size, 0, <<>>) -> + []; +parse_intset_entries(Size, N, Entries) -> + <> = Entries, + [integer_to_list(Int) | parse_intset_entries(Size, N-1, Rest)]. + +to_hash(L) -> to_hash(L, dict:new()). + +to_hash([], Dict) -> Dict; +to_hash([K,V|L], Dict) -> to_hash(L, dict:store(K,V,Dict)). + +to_sorted_set(L) -> lists:sort(to_set(L)). + +to_set([]) -> []; +to_set([Val,Weight|L]) -> [{Weight, Val} | to_set(L)]. From 8f9e267c838eb6073a198880ca26ec297b6af270 Mon Sep 17 00:00:00 2001 From: Geoff Cant Date: Mon, 28 Jan 2013 12:47:15 -0800 Subject: [PATCH 2/9] whitespace-cleanup src/rdb_load.erl --- src/rdb_load.erl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/rdb_load.erl b/src/rdb_load.erl index 27cab6c..4fa2f6b 100644 --- a/src/rdb_load.erl +++ b/src/rdb_load.erl @@ -1,5 +1,5 @@ %% Copyright (c) 2011 Jacob Vorreuter -%% +%% %% Permission is hereby granted, free of charge, to any person %% obtaining a copy of this software and associated documentation %% files (the "Software"), to deal in the Software without @@ -8,10 +8,10 @@ %% copies of the Software, and to permit persons to whom the %% Software is furnished to do so, subject to the following %% conditions: -%% +%% %% The above copyright notice and this permission notice shall be %% included in all copies or substantial portions of the Software. -%% +%% %% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, %% EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES %% OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND @@ -39,7 +39,7 @@ packet(State, Data, Callback) when State == undefined orelse State#state.first = {ok, Rest} -> case parse_len(Rest) of {ok, _Len, Rest1} -> - case parse_rdb_version(Rest1) of + case parse_rdb_version(Rest1) of {ok, Rest2, Vsn} -> lists:member(Vsn, [<<"0001">>,<<"0002">>,<<"0003">>, <<"0004">>,<<"0005">>,<<"0006">>]) @@ -205,7 +205,7 @@ rdb_len(<>) -> end. rdb_string_object(Data) -> - rdb_generic_string_object(Data, false). + rdb_generic_string_object(Data, false). rdb_encoded_string_object(Data) -> rdb_generic_string_object(Data, true). @@ -277,7 +277,7 @@ rdb_lzf_string_object(Data) -> end. rdb_load_object(_Type, <<>>) -> - exit({error, eof}); + exit({error, eof}); rdb_load_object(?REDIS_STRING, Data) -> rdb_encoded_string_object(Data); From 3d8cb6d95d0ce27916915de31c2c434e311598c2 Mon Sep 17 00:00:00 2001 From: Geoff Cant Date: Mon, 28 Jan 2013 18:55:25 -0800 Subject: [PATCH 3/9] Bump (de)compression tries up to 6* expansion. Fixes lzf decompression bug with highly compressed strings. --- c_src/nsync_nifs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/c_src/nsync_nifs.c b/c_src/nsync_nifs.c index ef15453..9d982c1 100644 --- a/c_src/nsync_nifs.c +++ b/c_src/nsync_nifs.c @@ -33,7 +33,7 @@ int decompress1(ErlNifEnv *env, ErlNifBinary *source, ErlNifBinary *target) { int bufsize; double expansion_factor = 1.1; unsigned int result; - while(expansion_factor < 2.5) { + while(expansion_factor < 6) { bufsize = (int) source->size * expansion_factor; bufsize = bufsize < 66 ? 66 : bufsize; enif_alloc_binary_compat(env, bufsize, target); @@ -56,7 +56,7 @@ int compress1(ErlNifEnv *env, ErlNifBinary *source, ErlNifBinary *target) { int bufsize; double expansion_factor = 1.1; int result; - while(expansion_factor < 2.5) { + while(expansion_factor < 6) { bufsize = (int) source->size * expansion_factor; bufsize = bufsize < 66 ? 66 : bufsize; enif_alloc_binary_compat(env, bufsize, target); From 5ff83a6441764ef54e692ec550c67241cba650d3 Mon Sep 17 00:00:00 2001 From: Geoff Cant Date: Tue, 29 Jan 2013 14:47:15 -0800 Subject: [PATCH 4/9] Adds lzf:decompress/2. --- c_src/nsync_nifs.c | 31 +++++++++++++++++++++++++++++-- src/lzf.erl | 6 +++++- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/c_src/nsync_nifs.c b/c_src/nsync_nifs.c index ef15453..2a97cb4 100644 --- a/c_src/nsync_nifs.c +++ b/c_src/nsync_nifs.c @@ -33,7 +33,7 @@ int decompress1(ErlNifEnv *env, ErlNifBinary *source, ErlNifBinary *target) { int bufsize; double expansion_factor = 1.1; unsigned int result; - while(expansion_factor < 2.5) { + while(expansion_factor < 6) { bufsize = (int) source->size * expansion_factor; bufsize = bufsize < 66 ? 66 : bufsize; enif_alloc_binary_compat(env, bufsize, target); @@ -56,7 +56,7 @@ int compress1(ErlNifEnv *env, ErlNifBinary *source, ErlNifBinary *target) { int bufsize; double expansion_factor = 1.1; int result; - while(expansion_factor < 2.5) { + while(expansion_factor < 6) { bufsize = (int) source->size * expansion_factor; bufsize = bufsize < 66 ? 66 : bufsize; enif_alloc_binary_compat(env, bufsize, target); @@ -89,6 +89,32 @@ static ERL_NIF_TERM decompress_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM } return retval; } + +static ERL_NIF_TERM decompress2_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM argv[]) { + ERL_NIF_TERM retval; + ErlNifBinary source; + ErlNifBinary target; + ErlNifUInt64 decompressed_length; + unsigned int final_length; + + if (argc != 2 || + !enif_inspect_binary(env, argv[0], &source) || + !enif_get_uint64(env, argv[1], &decompressed_length) || + decompressed_length < source.size || + !enif_alloc_binary_compat(env, decompressed_length, &target)) { + return enif_make_badarg(env); + } + + final_length = lzf_compress(source.data, source.size, target.data, target.size); + if (final_length > 0) { + enif_realloc_binary_compat(env, &target, final_length); + retval = enif_make_binary(env, &target); + } else { + enif_release_binary_compat(env, &target); + retval = enif_make_badarg(env); + } + return retval; +} ERL_NIF_TERM compress_nif(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) { ERL_NIF_TERM retval; @@ -109,6 +135,7 @@ ERL_NIF_TERM compress_nif(ErlNifEnv *env, int argc, const ERL_NIF_TERM argv[]) { static ErlNifFunc nif_funcs[] = { {"decompress", 1, decompress_nif}, + {"decompress", 2, decompress2_nif}, {"compress", 1, compress_nif} }; diff --git a/src/lzf.erl b/src/lzf.erl index 5d1e103..7dd400b 100644 --- a/src/lzf.erl +++ b/src/lzf.erl @@ -21,7 +21,9 @@ %% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR %% OTHER DEALINGS IN THE SOFTWARE. -module(lzf). --export([compress/1, decompress/1]). +-export([compress/1 + ,decompress/1 + ,decompress/2]). -on_load(init/0). @@ -39,3 +41,5 @@ compress(_X) -> decompress(_X) -> exit(nif_library_not_loaded). +decompress(_, _) -> + exit(nif_library_not_loaded). From 037023569a23796221c1bec50f0b4fb2aa19d4b2 Mon Sep 17 00:00:00 2001 From: Geoff Cant Date: Tue, 29 Jan 2013 15:16:39 -0800 Subject: [PATCH 5/9] Call decompress function in decompress routine. ZOMG. :/ --- c_src/nsync_nifs.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/c_src/nsync_nifs.c b/c_src/nsync_nifs.c index 2a97cb4..541c43b 100644 --- a/c_src/nsync_nifs.c +++ b/c_src/nsync_nifs.c @@ -94,19 +94,20 @@ static ERL_NIF_TERM decompress2_nif(ErlNifEnv* env, int argc, const ERL_NIF_TERM ERL_NIF_TERM retval; ErlNifBinary source; ErlNifBinary target; - ErlNifUInt64 decompressed_length; + unsigned int decompressed_length; unsigned int final_length; if (argc != 2 || !enif_inspect_binary(env, argv[0], &source) || - !enif_get_uint64(env, argv[1], &decompressed_length) || + !enif_get_uint(env, argv[1], &decompressed_length) || decompressed_length < source.size || !enif_alloc_binary_compat(env, decompressed_length, &target)) { return enif_make_badarg(env); } - final_length = lzf_compress(source.data, source.size, target.data, target.size); - if (final_length > 0) { + final_length = lzf_decompress(source.data, source.size, target.data, target.size); + if (final_length > 0 && + final_length == decompressed_length) { enif_realloc_binary_compat(env, &target, final_length); retval = enif_make_binary(env, &target); } else { From 4c980889d42f6591cfacf9b54c6ea4408bc81261 Mon Sep 17 00:00:00 2001 From: Geoff Cant Date: Tue, 29 Jan 2013 15:16:50 -0800 Subject: [PATCH 6/9] Adds rdb_load:load_file/2. --- src/rdb_load.erl | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/rdb_load.erl b/src/rdb_load.erl index 4fa2f6b..637c752 100644 --- a/src/rdb_load.erl +++ b/src/rdb_load.erl @@ -21,12 +21,20 @@ %% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR %% OTHER DEALINGS IN THE SOFTWARE. -module(rdb_load). --export([packet/3]). +-export([packet/3 + ,load_file/2 + ]). -record(state, {first = true, buffer = <<>>}). -include("nsync.hrl"). +load_file(FileName, Callback) -> + {ok, File} = file:read_file(FileName), + Data = iolist_to_binary(["$", integer_to_list(byte_size(File)), + "\r\n", File]), + packet(undefined, Data, Callback). + packet(State, Data, Callback) when State == undefined orelse State#state.first == true -> Data1 = case State of @@ -262,12 +270,12 @@ rdb_double_value(Data) -> rdb_lzf_string_object(Data) -> {ok, _Enc1, LzfLen, Rest} = rdb_len(Data), - {ok, _Enc2, _UncompLen, Rest1} = rdb_len(Rest), + {ok, _Enc2, UncompLen, Rest1} = rdb_len(Rest), case Rest1 of <> -> - case (catch lzf:decompress(LzfEnc)) of + case (catch lzf:decompress(LzfEnc, UncompLen)) of {'EXIT', _Err} -> - error_logger:error_msg("failed lzf_decompress(~p)~n", [LzfEnc]), + error_logger:error_msg("failed lzf_decompress(~p, ~p)~n", [LzfEnc, UncompLen]), {ok, <<"">>, Rest2}; Str -> {ok, Str, Rest2} From 946a5bdfa1767e7c3a95434f9f2137f82d1fccb9 Mon Sep 17 00:00:00 2001 From: Geoff Cant Date: Tue, 29 Jan 2013 15:16:59 -0800 Subject: [PATCH 7/9] Adds ct ignore patterns. --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index a335113..31be8b6 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ src/*.swp src/*/*.swp c_src/*.o priv/*.so +logs/* +test/*.beam \ No newline at end of file From 4f673362db3cf79bb13074f9ef7a1e75194dbdf0 Mon Sep 17 00:00:00 2001 From: Geoff Cant Date: Tue, 29 Jan 2013 15:18:51 -0800 Subject: [PATCH 8/9] Adds rdb_load test suite. --- test/rdb_load_SUITE.erl | 65 ++++++++++++++++++ test/rdb_load_SUITE_data/dictionary.rdb | Bin 0 -> 102032 bytes .../easily_compressible_string_key.rdb | Bin 0 -> 64 bytes test/rdb_load_SUITE_data/empty_database.rdb | 1 + test/rdb_load_SUITE_data/hash_as_ziplist.rdb | Bin 0 -> 85 bytes test/rdb_load_SUITE_data/integer_keys.rdb | Bin 0 -> 182 bytes test/rdb_load_SUITE_data/intset_16.rdb | Bin 0 -> 38 bytes test/rdb_load_SUITE_data/intset_32.rdb | Bin 0 -> 44 bytes test/rdb_load_SUITE_data/intset_64.rdb | Bin 0 -> 56 bytes test/rdb_load_SUITE_data/keys_with_expiry.rdb | Bin 0 -> 71 bytes test/rdb_load_SUITE_data/linkedlist.rdb | Bin 0 -> 51032 bytes .../multiple_databases.rdb | Bin 0 -> 74 bytes test/rdb_load_SUITE_data/parser_filters.rdb | Bin 0 -> 1152 bytes .../rdb_version_5_with_checksum.rdb | Bin 0 -> 128 bytes test/rdb_load_SUITE_data/regular_set.rdb | Bin 0 -> 59 bytes .../regular_sorted_set.rdb | Bin 0 -> 33471 bytes .../sorted_set_as_ziplist.rdb | Bin 0 -> 178 bytes .../uncompressible_string_keys.rdb | Bin 0 -> 32604 bytes .../ziplist_that_compresses_easily.rdb | Bin 0 -> 103 bytes .../ziplist_that_doesnt_compress.rdb | Bin 0 -> 125 bytes .../ziplist_with_integers.rdb | Bin 0 -> 130 bytes .../zipmap_that_compresses_easily.rdb | Bin 0 -> 73 bytes .../zipmap_that_doesnt_compress.rdb | Bin 0 -> 60 bytes .../zipmap_with_big_values.rdb | Bin 0 -> 20923 bytes 24 files changed, 66 insertions(+) create mode 100644 test/rdb_load_SUITE.erl create mode 100644 test/rdb_load_SUITE_data/dictionary.rdb create mode 100644 test/rdb_load_SUITE_data/easily_compressible_string_key.rdb create mode 100644 test/rdb_load_SUITE_data/empty_database.rdb create mode 100644 test/rdb_load_SUITE_data/hash_as_ziplist.rdb create mode 100644 test/rdb_load_SUITE_data/integer_keys.rdb create mode 100644 test/rdb_load_SUITE_data/intset_16.rdb create mode 100644 test/rdb_load_SUITE_data/intset_32.rdb create mode 100644 test/rdb_load_SUITE_data/intset_64.rdb create mode 100644 test/rdb_load_SUITE_data/keys_with_expiry.rdb create mode 100644 test/rdb_load_SUITE_data/linkedlist.rdb create mode 100644 test/rdb_load_SUITE_data/multiple_databases.rdb create mode 100644 test/rdb_load_SUITE_data/parser_filters.rdb create mode 100644 test/rdb_load_SUITE_data/rdb_version_5_with_checksum.rdb create mode 100644 test/rdb_load_SUITE_data/regular_set.rdb create mode 100644 test/rdb_load_SUITE_data/regular_sorted_set.rdb create mode 100644 test/rdb_load_SUITE_data/sorted_set_as_ziplist.rdb create mode 100644 test/rdb_load_SUITE_data/uncompressible_string_keys.rdb create mode 100644 test/rdb_load_SUITE_data/ziplist_that_compresses_easily.rdb create mode 100644 test/rdb_load_SUITE_data/ziplist_that_doesnt_compress.rdb create mode 100644 test/rdb_load_SUITE_data/ziplist_with_integers.rdb create mode 100644 test/rdb_load_SUITE_data/zipmap_that_compresses_easily.rdb create mode 100644 test/rdb_load_SUITE_data/zipmap_that_doesnt_compress.rdb create mode 100644 test/rdb_load_SUITE_data/zipmap_with_big_values.rdb diff --git a/test/rdb_load_SUITE.erl b/test/rdb_load_SUITE.erl new file mode 100644 index 0000000..4bca2fa --- /dev/null +++ b/test/rdb_load_SUITE.erl @@ -0,0 +1,65 @@ +-module(rdb_load_SUITE). +-include_lib("common_test/include/ct.hrl"). +-include_lib("eunit/include/eunit.hrl"). + +-compile(export_all). + +init_per_suite(Config) -> + application:load(nsync), + Config. + +all() -> + [dictionary + ,easily_compressible_string_key + ,empty_database + ,hash_as_ziplist + ,integer_keys + ,intset_16 + ,intset_32 + ,intset_64 + ,keys_with_expiry + ,linkedlist + ,multiple_databases + ,parser_filters + ,rdb_version_5_with_checksum + ,regular_set + ,regular_sorted_set + ,sorted_set_as_ziplist + ,uncompressible_string_keys + ,ziplist_that_compresses_easily + ,ziplist_that_doesnt_compress + ,ziplist_with_integers + ,zipmap_that_compresses_easily + ,zipmap_that_doesnt_compress + ,zipmap_with_big_values]. + +dictionary(C) -> rdb_load(dictionary, C). +easily_compressible_string_key(C) -> rdb_load(easily_compressible_string_key, C). +empty_database(C) -> rdb_load(empty_database, C). +hash_as_ziplist(C) -> rdb_load(hash_as_ziplist, C). +integer_keys(C) -> rdb_load(integer_keys, C). +intset_16(C) -> rdb_load(intset_16, C). +intset_32(C) -> rdb_load(intset_32, C). +intset_64(C) -> rdb_load(intset_64, C). +keys_with_expiry(C) -> rdb_load(keys_with_expiry, C). +linkedlist(C) -> rdb_load(linkedlist, C). +multiple_databases(C) -> rdb_load(multiple_databases, C). +parser_filters(C) -> rdb_load(parser_filters, C). +rdb_version_5_with_checksum(C) -> rdb_load(rdb_version_5_with_checksum, C). +regular_set(C) -> rdb_load(regular_set, C). +regular_sorted_set(C) -> rdb_load(regular_sorted_set, C). +sorted_set_as_ziplist(C) -> rdb_load(sorted_set_as_ziplist, C). +uncompressible_string_keys(C) -> rdb_load(uncompressible_string_keys, C). +ziplist_that_compresses_easily(C) -> rdb_load(ziplist_that_compresses_easily, C). +ziplist_that_doesnt_compress(C) -> rdb_load(ziplist_that_doesnt_compress, C). +ziplist_with_integers(C) -> rdb_load(ziplist_with_integers, C). +zipmap_that_compresses_easily(C) -> rdb_load(zipmap_that_compresses_easily, C). +zipmap_that_doesnt_compress(C) -> rdb_load(zipmap_that_doesnt_compress, C). +zipmap_with_big_values(C) -> rdb_load(zipmap_with_big_values, C). + +rdb_load(TestFile, Config) -> + FileName = filename:join(?config(data_dir, Config), + atom_to_list(TestFile) ++ ".rdb"), + rdb_load:load_file(FileName, + fun (_) -> ok end), + ok. diff --git a/test/rdb_load_SUITE_data/dictionary.rdb b/test/rdb_load_SUITE_data/dictionary.rdb new file mode 100644 index 0000000000000000000000000000000000000000..e0ef5289e4615c6b35e5fbe03ad99bb70a8aca08 GIT binary patch literal 102032 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

vC%2}&B6t@h)DBb8eC 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
{pPz2{1+tlY38m=! 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 literal 0 HcmV?d00001 diff --git a/test/rdb_load_SUITE_data/intset_32.rdb b/test/rdb_load_SUITE_data/intset_32.rdb new file mode 100644 index 0000000000000000000000000000000000000000..39c9609714a856986e6766c8b5356a7663809085 GIT binary patch literal 44 vcmWG?b@2=~FfcIw$H2{*nO9PrS`u$;B*MbLz`zW|fByfg{|m(bfcQTEFKiMm literal 0 HcmV?d00001 diff --git a/test/rdb_load_SUITE_data/intset_64.rdb b/test/rdb_load_SUITE_data/intset_64.rdb new file mode 100644 index 0000000000000000000000000000000000000000..70f56c05c4dd0810e86c71b1fc25268cc1bd472c GIT binary patch literal 56 ycmWG?b@2=~FfcIw$H2{*nO9PrS`u$&qQJqxz`zW|fBydi!TP^Y8q5Ro{{sMJ>mD!w literal 0 HcmV?d00001 diff --git a/test/rdb_load_SUITE_data/keys_with_expiry.rdb b/test/rdb_load_SUITE_data/keys_with_expiry.rdb new file mode 100644 index 0000000000000000000000000000000000000000..6414be592ac57c0dea321d405e281fe5acbbf677 GIT binary patch literal 71 zcmWG?b@2=~FfcIr$MDDY#$k_EMg|53k<^NU%%ard_}t?7f}+&q%;L=aJZU2XBO_fy aBV8j?1w#WXLqjV=BRx}dV};NV=l=jn8Wr&X literal 0 HcmV?d00001 diff --git a/test/rdb_load_SUITE_data/linkedlist.rdb b/test/rdb_load_SUITE_data/linkedlist.rdb new file mode 100644 index 0000000000000000000000000000000000000000..70cd20f5df12ecd42c809f00f26ffd8e7f6eaa2f GIT binary patch literal 51032 zcmW)oS+4E8afRa^%5I3p64E~Q`9=xrETnXl>VNZZSZw8r4(f*_garxvO&(_c;2qbm$|mN z`^LBMB6iucwuMVYs!nOEq8}!Gy{kX==PBjfpJR7cGMmC;`l(V%n(Y;N(Ld1}*H=YY z%e%<^`CQ|w+V+*Nkd>%fTYcqV=WsXET4tjh-k~X`sV-I>;#5UluE#ib>(fLjm0Oz6 zW=FP2afWDuTx87mUP{|f@2a2a+pE%lN!IQ0tWPhu@$16T`S$AiOAYg@@3U_6bsRQj z?(Ya)H^pmv>?+fI`$DX8)X&I%Q&F^sYp!y5hP#{^d0+RW)HnKV)_kDnSfh>K zkk$Hao1t2datl}YAYN zcIJo9rTf0IITjV4`x~#Z>{J)`GjF=m_q86bVSC5a8g*WeJ6fUZPcAX$W*%oTglWC< zr&-2ADJ8UAa+lrLaczT=bqr#Nmzn%xWuLxkS;V)-GaKe|U*tQ6Z~TV6o9eT^o+1v< zYx=?)J4xTGUg}1SbyLK=p7*pab6&`~^0U3Vd%vsiENZ8l(Nr<5j>Pdvht7jctHO6=3;GC{cGD`2y zdL5T#Tl#Igr)~;|kY_Kl^IOYY>N)T~hqq6Sb%XPVEMrzKZ&}>ttou#dX)E{ZRj#|+ z-o!PILzD7pZoYN+9y`AGCHWWKB$fAbb3C1#=e8Eb+iq^q$Eb$NhTWOAnB}C)EW5?v zq#m2v4BuYPdV8u^rM7rBliyXQ@ANL3hxm;unl`i*U*Rh^S?RKWt}yVTY}2R9i@lT2 z_wsm-``db#9{U-yscGojY^Ow-e4SsVSU>yu~N zR`c-W`cSQ2!_YR*t@4XsyHv;JyDlX8B|UX~LS;(VRd<(X;;WmQBeZ|X_vb3AESR*^ zMmKW5&+U@K@R-3~)0q#Zo%?#LhtkJynd8ty(_C)laANS@wMAoAnh{Z12wVvy}{M`%TOF)wZtZZp@!bf1zt+%gWFWG zbn}*-V)f?ph4!);&NvKnHi~ZumVd3O&S^U|PbKJlpYpmD#WzV|zNy{!^UGyNL3OG3 zx!1+fWJ4qJoCh-0!`QU#K5ms!;=Z$I-exXo=ajr(wR~l1zSq+ys(0O7`-m&A?l^Sy zI+bGB=B4rLY5KMh_b|%v?}Ez~-!r988}=tV6< zM&+b@X4P^e%A{`6(ZqJ%sPlO@c4bhtJJ03OKI4vu{*YU(D_Jz}EUr7;s@_$34leU1 z(HWnk9*XOjTvb=^?7y|{=Sjx?&2#@Ap^wjch)e6d@76u3`@35|UCmc^ce9VVD5sQs z`L6Q2M3;`o?8_#czUMcLzBxkFZ{rqG_StIewJuj2k6FxuCM>68I`41UjarMYxvs46 zYqHDMP*q?4L;pQ?&P59ldwiI+8MqtEo#;wcWq3d=3YPwxzmbs1UYLoaj^*&*?)XK$md)KVPCfax4 zTIZ=d6Mr?+eV=VdA-+PW@9D~N=dr&lcfB~DeD;rSyG`Xo<#pB9jxr$v2um*g-tC21 zvuT*06uWh}4;q5q{n=hkzi1b#@}B+9XQB^gb6&RlafIb7C_^H9;+o9?v^Au)GTEq$ z{+oP0PF?3l{%qg#<*RNgu{o7oj&*gzFm8cz(Vczf+g6O?^*M)q9xkxSsoyV_Q`Rld z=BDL(qdRmK!Z`Jnbjv$C-EXlURlON1#`BgsDh}VgRH-kQXqV|e-=y*v6bO=<{ix

DcPu#7 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 b&s-qa>sJY>0l^Sz16|I*=Nk{l;=lg^gtC!@ literal 0 HcmV?d00001 diff --git a/test/rdb_load_SUITE_data/multiple_databases.rdb b/test/rdb_load_SUITE_data/multiple_databases.rdb new file mode 100644 index 0000000000000000000000000000000000000000..027b82d8820744002c43d2bfda91869fb581cb2b GIT binary patch literal 74 zcmWG?b@2=~FfcIw$G{+#omv^6nHOJ`T9jXs5ucJ+l9-fOoXP^?|6_tn7pErY=cT}< I*&zJ?0L{P~rT_o{ literal 0 HcmV?d00001 diff --git a/test/rdb_load_SUITE_data/parser_filters.rdb b/test/rdb_load_SUITE_data/parser_filters.rdb new file mode 100644 index 0000000000000000000000000000000000000000..a3eaaeb16d09944ce60ff065388d2e5466d09c1c GIT binary patch literal 1152 zcmZWoO;6N77=CA3_6ty9K_w6vO zTkALC(A{+n&)XMP(CvkG6uG8ni%ODG@|{?v0u8<72YavW_ihwNr1(wq@Rw3jJgv66 zN<>QtmFW236QkVmm#qDowcpUD5~z)CudD08EeoZf5GCo4$(LMA@=|h|P?1hP7SE9S zzsQrz$TUL|H#L@`)j7$o4o=xOkVp2>oWKXADt9!6S))gfKNqkC5j$=q1YddAcVk;z zJg>XL?8hPs!dL`vM9vIC*WaniLwH84T4jcU17_yR|7-jp7Q1%1FS>opDRM`jV$8^q zR+DdvfqGeCCMQ#87AH$*+l;o;68E(EdE|H%!HJapes4l*q+E^cSW}q=AQS=A+Z!7| zNi>kfDCpYQh`%#gk$bwBQC9Vy9XduY65SxQh3livb`%3XX4bjnCGKm(Ka6{IKB{y& zh3sGg-xeZQ-U$E}aUe|l+)SApa29!Kh|*Y5(r3BW88atk(v2mgMi=_fwD0Z1ya~{no%@w$_mODz&p}W(ofP&SYAK6b&w|zG-qaj zm_|TQt~SQ2Tcbsx7BH*`MI9R_Pp5-CrCWJ0fTA&!3ACX8$VeS>1ok{sVR`O7SX{*Pbp$puoLN(cvxqWc zZY>2<%gi{Z_y=u463G(*5%4?FR lF}l;Si}G#fVhf*4J4VG2BjEya`N-i zQ;UjAiZb)kHA*rvi!+N8k;U{fQ}Xjlvh(uG%QF&7GD~t(6Z480n1QA+1C9AFQPgnE IV5(jv09&~%zW@LL literal 0 HcmV?d00001 diff --git a/test/rdb_load_SUITE_data/regular_set.rdb b/test/rdb_load_SUITE_data/regular_set.rdb new file mode 100644 index 0000000000000000000000000000000000000000..bbd844f0b0013af6a1dbde3f23fd6bf1ea67c362 GIT binary patch literal 59 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 Vtu1!iR!YVJ!&CTr_4Snh_di`wQf~kN literal 0 HcmV?d00001 diff --git a/test/rdb_load_SUITE_data/sorted_set_as_ziplist.rdb b/test/rdb_load_SUITE_data/sorted_set_as_ziplist.rdb new file mode 100644 index 0000000000000000000000000000000000000000..37cc2199151e46d077a9020acdb18116afbe0d2a GIT binary patch literal 178 zcmV~$Jqp4w6ae5zRS+D+pSht2kR-Qb^ zyTeH-1wS$0wAXtV>#~hq8QSu3zFp33_bFaQKkkJPPno1sA*5r=!IE}?oUKD_g7pYa zqXV02uXOeviLtDhfN>+MlZww literal 0 HcmV?d00001 diff --git a/test/rdb_load_SUITE_data/uncompressible_string_keys.rdb b/test/rdb_load_SUITE_data/uncompressible_string_keys.rdb new file mode 100644 index 0000000000000000000000000000000000000000..276f334eabb4799a7083c569d96b6b0e61db56d7 GIT binary patch literal 32604 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 Le>y)yKl;A`=HCp+ literal 0 HcmV?d00001 diff --git a/test/rdb_load_SUITE_data/ziplist_that_compresses_easily.rdb b/test/rdb_load_SUITE_data/ziplist_that_compresses_easily.rdb new file mode 100644 index 0000000000000000000000000000000000000000..7fcb8e858f7d493ae5813ebcaeed4b32959f5d7b GIT binary patch literal 103 zcmV-t0GR($MMOzcFfcGP{s0OYdTDTMX>)X6V{dJ6a%FRKWpiI;VRLD0dBZ$Fl?0Ul z003?v0{{jf0svuP009ULUfB;W`V J;0gc$|Nl0B9NGW? literal 0 HcmV?d00001 diff --git a/test/rdb_load_SUITE_data/ziplist_that_doesnt_compress.rdb b/test/rdb_load_SUITE_data/ziplist_that_doesnt_compress.rdb new file mode 100644 index 0000000000000000000000000000000000000000..060a6ccae738345f421253139aa0d6e57258caff GIT binary patch literal 125 zcmWm3I}XAy3;79><(*+UD2e$k7 zFx`hX_jxSsIrnLNOs~>f>^cD0{j31ia?_-66JttjjVLdnAiLt75Glu!O=U^JCtHK2 UAcRKye<{x*T(3D;ZHSiT3$YR-761SM literal 0 HcmV?d00001 diff --git a/test/rdb_load_SUITE_data/ziplist_with_integers.rdb b/test/rdb_load_SUITE_data/ziplist_with_integers.rdb new file mode 100644 index 0000000000000000000000000000000000000000..18d0594fa162ae766823aab5258283e156f263b3 GIT binary patch literal 130 zcmWG?b@2=~FfcIt$G|08m06IJSzHodo>`I+pP5&Znx0xz><}8tz`)=I#1ae)ADKQe zeP;T?^p)uw(|4vHOh1`^G5u!x!}OQw-#_Mmyv+Y3ng1PT{%6m8;Ez4afrf)DAO8Pm fVEw?$@SpVq1A_zWgZ~gv|Np;Q(ey8o!dImLwy!y2 literal 0 HcmV?d00001 diff --git a/test/rdb_load_SUITE_data/zipmap_that_compresses_easily.rdb b/test/rdb_load_SUITE_data/zipmap_that_compresses_easily.rdb new file mode 100644 index 0000000000000000000000000000000000000000..d8d3cffd06094da4efbeb6de98cfc0603b9f4998 GIT binary patch literal 73 zcmWG?b@2=~FfcIw$G|C3m06IRSP-9_pIcCrT3no39G{w4oS9R3SV5hOnK6-xAu*9D aF_A@q4M?&oFat@x1nvh642+5Y{{sL|bruK! literal 0 HcmV?d00001 diff --git a/test/rdb_load_SUITE_data/zipmap_that_doesnt_compress.rdb b/test/rdb_load_SUITE_data/zipmap_that_doesnt_compress.rdb new file mode 100644 index 0000000000000000000000000000000000000000..b556aa59f7a20690eb80f613ee410bf858a8016d GIT binary patch literal 60 zcmWG?b@2=~FfcIw$G|CCm6@AZ5TBBtTAWuBpPZjtP?TC+EWyO)>+NFbZpO%9#2V@6 P7vasq;AS4;`TsuvJlPV( literal 0 HcmV?d00001 diff --git a/test/rdb_load_SUITE_data/zipmap_with_big_values.rdb b/test/rdb_load_SUITE_data/zipmap_with_big_values.rdb new file mode 100644 index 0000000000000000000000000000000000000000..89677fe1e791f21a30ebbdcf94e5cd01fc44a839 GIT binary patch literal 20923 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 VnTj4#RK51vy$`En>(8!!^w+DMyQu&G literal 0 HcmV?d00001 From 3fc9753c274101ae571c0773134ff8ed4e68d893 Mon Sep 17 00:00:00 2001 From: Fred Hebert Date: Tue, 2 Apr 2013 12:23:46 -0400 Subject: [PATCH 9/9] Fix potential connection error if the value received when connecting is {ok, ...} where the pattern doesn't match, the one expected and other packets are received, the result returned there will not be discarded -- it will be taken as the new state and all future calls will fall through the blank match patterns So if the connection or auth fails (say it tries to reconnect during some password change), no event will ever happen and as long as redis doesn't kill the connection things will keep going on. But we won't necessarily know the connection has been killed because all events will be auto-ignored. --- src/nsync.erl | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/nsync.erl b/src/nsync.erl index 2d161cc..767f579 100644 --- a/src/nsync.erl +++ b/src/nsync.erl @@ -77,16 +77,16 @@ start_link(Opts) -> %%==================================================================== init([Opts, CallerPid]) -> case init_state(Opts, CallerPid) of - {ok, State} -> + {ok, State = #state{}} -> {ok, State}; Error -> {stop, Error} end. -handle_call(_Request, _From, State) -> +handle_call(_Request, _From, State = #state{}) -> {reply, ignore, State}. -handle_cast(_Msg, State) -> +handle_cast(_Msg, State = #state{}) -> {noreply, State}. handle_info({tcp, Socket, Data}, #state{callback=Callback, @@ -146,7 +146,7 @@ handle_info({tcp_error, _ ,_}, #state{callback=Callback, {stop, Error, State} end; -handle_info(_Info, State) -> +handle_info(_Info, State = #state{}) -> {noreply, State}. terminate(_Reason, _State) -> @@ -216,6 +216,8 @@ authenticate(Socket, Auth) -> ok; {ok, <<"+OK\r\n">>} -> ok; + {ok, Other} -> + {error, {ok, Other}}; Error -> Error end;