@@ -29,7 +29,6 @@ extern "C" {
29
29
#include " base/flags.h"
30
30
#include " base/logging.h"
31
31
#include " core/bloom.h"
32
- #include " core/intrusive_string_set.h"
33
32
#include " core/json/json_object.h"
34
33
#include " core/qlist.h"
35
34
#include " core/sorted_map.h"
@@ -58,7 +57,6 @@ ABSL_DECLARE_FLAG(int32_t, list_max_listpack_size);
58
57
ABSL_DECLARE_FLAG (int32_t , list_compress_depth);
59
58
ABSL_DECLARE_FLAG (uint32_t , dbnum);
60
59
ABSL_DECLARE_FLAG (bool , list_experimental_v2);
61
- ABSL_DECLARE_FLAG (bool , stringset_experimental);
62
60
ABSL_FLAG (bool , rdb_load_dry_run, false , " Dry run RDB load without applying changes" );
63
61
ABSL_FLAG (bool , rdb_ignore_expiry, false , " Ignore Key Expiry when loding from RDB snapshot" );
64
62
@@ -336,10 +334,8 @@ void RdbLoaderBase::OpaqueObjLoader::CreateSet(const LoadTrace* ltrace) {
336
334
if (inner_obj) {
337
335
if (is_intset) {
338
336
zfree (inner_obj);
339
- } else if (!absl::GetFlag (FLAGS_stringset_experimental)) {
340
- CompactObj::DeleteMR<StringSet>(inner_obj);
341
337
} else {
342
- CompactObj::DeleteMR<IntrusiveStringSet >(inner_obj);
338
+ CompactObj::DeleteMR<StringSet >(inner_obj);
343
339
}
344
340
}
345
341
});
@@ -359,7 +355,7 @@ void RdbLoaderBase::OpaqueObjLoader::CreateSet(const LoadTrace* ltrace) {
359
355
}
360
356
return true ;
361
357
});
362
- } else if (! absl::GetFlag (FLAGS_stringset_experimental)) {
358
+ } else {
363
359
StringSet* set;
364
360
if (config_.append ) {
365
361
// Note we always use StringSet when the object is being streamed.
@@ -381,55 +377,6 @@ void RdbLoaderBase::OpaqueObjLoader::CreateSet(const LoadTrace* ltrace) {
381
377
increment = 2 ;
382
378
}
383
379
384
- for (size_t i = 0 ; i < ltrace->arr .size (); i += increment) {
385
- string_view element = ToSV (ltrace->arr [i].rdb_var );
386
-
387
- uint32_t ttl_sec = UINT32_MAX;
388
- if (increment == 2 ) {
389
- int64_t ttl_time = -1 ;
390
- string_view ttl_str = ToSV (ltrace->arr [i + 1 ].rdb_var );
391
- if (!absl::SimpleAtoi (ttl_str, &ttl_time)) {
392
- LOG (ERROR) << " Can't parse set TTL " << ttl_str;
393
- ec_ = RdbError (errc::rdb_file_corrupted);
394
- return ;
395
- }
396
-
397
- if (ttl_time != -1 ) {
398
- if (ttl_time < set->time_now ()) {
399
- continue ;
400
- }
401
-
402
- ttl_sec = ttl_time - set->time_now ();
403
- }
404
- }
405
- if (!set->Add (element, ttl_sec)) {
406
- LOG (ERROR) << " Duplicate set members detected" ;
407
- ec_ = RdbError (errc::duplicate_key);
408
- return ;
409
- }
410
- }
411
- } else {
412
- IntrusiveStringSet* set;
413
- if (config_.append ) {
414
- // Note we always use StringSet when the object is being streamed.
415
- if (!EnsureObjEncoding (OBJ_SET, kEncodingIntrusiveSet )) {
416
- return ;
417
- }
418
- set = static_cast <IntrusiveStringSet*>(pv_->RObjPtr ());
419
- } else {
420
- set = CompactObj::AllocateMR<IntrusiveStringSet>();
421
- set->set_time (MemberTimeSeconds (GetCurrentTimeMs ()));
422
- inner_obj = set;
423
-
424
- // Expand the set up front to avoid rehashing.
425
- set->Reserve ((config_.reserve > len) ? config_.reserve : len);
426
- }
427
-
428
- size_t increment = 1 ;
429
- if (rdb_type_ == RDB_TYPE_SET_WITH_EXPIRY) {
430
- increment = 2 ;
431
- }
432
-
433
380
for (size_t i = 0 ; i < ltrace->arr .size (); i += increment) {
434
381
string_view element = ToSV (ltrace->arr [i].rdb_var );
435
382
@@ -463,9 +410,7 @@ void RdbLoaderBase::OpaqueObjLoader::CreateSet(const LoadTrace* ltrace) {
463
410
return ;
464
411
465
412
if (!config_.append ) {
466
- int str_set_encoding =
467
- absl::GetFlag (FLAGS_stringset_experimental) ? kEncodingIntrusiveSet : kEncodingStrMap2 ;
468
- pv_->InitRobj (OBJ_SET, is_intset ? kEncodingIntSet : str_set_encoding, inner_obj);
413
+ pv_->InitRobj (OBJ_SET, is_intset ? kEncodingIntSet : kEncodingStrMap2 , inner_obj);
469
414
}
470
415
std::move (cleanup).Cancel ();
471
416
}
@@ -932,26 +877,14 @@ void RdbLoaderBase::OpaqueObjLoader::HandleBlob(string_view blob) {
932
877
unsigned len = intsetLen (is);
933
878
934
879
if (len > SetFamily::MaxIntsetEntries ()) {
935
- if (!absl::GetFlag (FLAGS_stringset_experimental)) {
936
- StringSet* set = SetFamily::ConvertToStrSet (is, len);
880
+ StringSet* set = SetFamily::ConvertToStrSet (is, len);
937
881
938
- if (!set) {
939
- LOG (ERROR) << " OOM in ConvertToStrSet " << len;
940
- ec_ = RdbError (errc::out_of_memory);
941
- return ;
942
- }
943
- pv_->InitRobj (OBJ_SET, kEncodingStrMap2 , set);
944
- } else {
945
- IntrusiveStringSet* set = SetFamily::ConvertToIntrStrSet (is, len);
946
-
947
- if (!set) {
948
- LOG (ERROR) << " OOM in ConvertToStrSet " << len;
949
- ec_ = RdbError (errc::out_of_memory);
950
- return ;
951
- }
952
- pv_->InitRobj (OBJ_SET, kEncodingIntrusiveSet , set);
882
+ if (!set) {
883
+ LOG (ERROR) << " OOM in ConvertToStrSet " << len;
884
+ ec_ = RdbError (errc::out_of_memory);
885
+ return ;
953
886
}
954
-
887
+ pv_-> InitRobj (OBJ_SET, kEncodingStrMap2 , set);
955
888
} else {
956
889
intset* mine = (intset*)zmalloc (blob.size ());
957
890
::memcpy (mine, blob.data(), blob.size());
@@ -965,39 +898,21 @@ void RdbLoaderBase::OpaqueObjLoader::HandleBlob(string_view blob) {
965
898
}
966
899
967
900
unsigned char * lp = (unsigned char *)blob.data ();
968
- if (!absl::GetFlag (FLAGS_stringset_experimental)) {
969
- StringSet* set = CompactObj::AllocateMR<StringSet>();
970
- for (unsigned char * cur = lpFirst (lp); cur != nullptr ; cur = lpNext (lp, cur)) {
971
- unsigned char field_buf[LP_INTBUF_SIZE];
972
- string_view elem = container_utils::LpGetView (cur, field_buf);
973
- if (!set->Add (elem)) {
974
- LOG (ERROR) << " Duplicate member " << elem;
975
- ec_ = RdbError (errc::duplicate_key);
976
- break ;
977
- }
978
- }
979
- if (ec_) {
980
- CompactObj::DeleteMR<StringSet>(set);
981
- return ;
982
- }
983
- pv_->InitRobj (OBJ_SET, kEncodingStrMap2 , set);
984
- } else {
985
- IntrusiveStringSet* set = CompactObj::AllocateMR<IntrusiveStringSet>();
986
- for (unsigned char * cur = lpFirst (lp); cur != nullptr ; cur = lpNext (lp, cur)) {
987
- unsigned char field_buf[LP_INTBUF_SIZE];
988
- string_view elem = container_utils::LpGetView (cur, field_buf);
989
- if (!set->Add (elem)) {
990
- LOG (ERROR) << " Duplicate member " << elem;
991
- ec_ = RdbError (errc::duplicate_key);
992
- break ;
993
- }
994
- }
995
- if (ec_) {
996
- CompactObj::DeleteMR<IntrusiveStringSet>(set);
997
- return ;
901
+ StringSet* set = CompactObj::AllocateMR<StringSet>();
902
+ for (unsigned char * cur = lpFirst (lp); cur != nullptr ; cur = lpNext (lp, cur)) {
903
+ unsigned char field_buf[LP_INTBUF_SIZE];
904
+ string_view elem = container_utils::LpGetView (cur, field_buf);
905
+ if (!set->Add (elem)) {
906
+ LOG (ERROR) << " Duplicate member " << elem;
907
+ ec_ = RdbError (errc::duplicate_key);
908
+ break ;
998
909
}
999
- pv_->InitRobj (OBJ_SET, kEncodingIntrusiveSet , set);
1000
910
}
911
+ if (ec_) {
912
+ CompactObj::DeleteMR<StringSet>(set);
913
+ return ;
914
+ }
915
+ pv_->InitRobj (OBJ_SET, kEncodingStrMap2 , set);
1001
916
} else if (rdb_type_ == RDB_TYPE_HASH_ZIPLIST || rdb_type_ == RDB_TYPE_HASH_LISTPACK) {
1002
917
unsigned char * lp = lpNew (blob.size ());
1003
918
switch (rdb_type_) {
0 commit comments