@@ -29,7 +29,6 @@ extern "C" {
2929#include " base/flags.h"
3030#include " base/logging.h"
3131#include " core/bloom.h"
32- #include " core/intrusive_string_set.h"
3332#include " core/json/json_object.h"
3433#include " core/qlist.h"
3534#include " core/sorted_map.h"
@@ -58,7 +57,6 @@ ABSL_DECLARE_FLAG(int32_t, list_max_listpack_size);
5857ABSL_DECLARE_FLAG (int32_t , list_compress_depth);
5958ABSL_DECLARE_FLAG (uint32_t , dbnum);
6059ABSL_DECLARE_FLAG (bool , list_experimental_v2);
61- ABSL_DECLARE_FLAG (bool , stringset_experimental);
6260ABSL_FLAG (bool , rdb_load_dry_run, false , " Dry run RDB load without applying changes" );
6361ABSL_FLAG (bool , rdb_ignore_expiry, false , " Ignore Key Expiry when loding from RDB snapshot" );
6462
@@ -336,10 +334,8 @@ void RdbLoaderBase::OpaqueObjLoader::CreateSet(const LoadTrace* ltrace) {
336334 if (inner_obj) {
337335 if (is_intset) {
338336 zfree (inner_obj);
339- } else if (!absl::GetFlag (FLAGS_stringset_experimental)) {
340- CompactObj::DeleteMR<StringSet>(inner_obj);
341337 } else {
342- CompactObj::DeleteMR<IntrusiveStringSet >(inner_obj);
338+ CompactObj::DeleteMR<StringSet >(inner_obj);
343339 }
344340 }
345341 });
@@ -359,7 +355,7 @@ void RdbLoaderBase::OpaqueObjLoader::CreateSet(const LoadTrace* ltrace) {
359355 }
360356 return true ;
361357 });
362- } else if (! absl::GetFlag (FLAGS_stringset_experimental)) {
358+ } else {
363359 StringSet* set;
364360 if (config_.append ) {
365361 // Note we always use StringSet when the object is being streamed.
@@ -381,55 +377,6 @@ void RdbLoaderBase::OpaqueObjLoader::CreateSet(const LoadTrace* ltrace) {
381377 increment = 2 ;
382378 }
383379
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-
433380 for (size_t i = 0 ; i < ltrace->arr .size (); i += increment) {
434381 string_view element = ToSV (ltrace->arr [i].rdb_var );
435382
@@ -463,9 +410,7 @@ void RdbLoaderBase::OpaqueObjLoader::CreateSet(const LoadTrace* ltrace) {
463410 return ;
464411
465412 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);
469414 }
470415 std::move (cleanup).Cancel ();
471416}
@@ -932,26 +877,14 @@ void RdbLoaderBase::OpaqueObjLoader::HandleBlob(string_view blob) {
932877 unsigned len = intsetLen (is);
933878
934879 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);
937881
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 ;
953886 }
954-
887+ pv_-> InitRobj (OBJ_SET, kEncodingStrMap2 , set);
955888 } else {
956889 intset* mine = (intset*)zmalloc (blob.size ());
957890 ::memcpy (mine, blob.data(), blob.size());
@@ -965,39 +898,21 @@ void RdbLoaderBase::OpaqueObjLoader::HandleBlob(string_view blob) {
965898 }
966899
967900 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 ;
998909 }
999- pv_->InitRobj (OBJ_SET, kEncodingIntrusiveSet , set);
1000910 }
911+ if (ec_) {
912+ CompactObj::DeleteMR<StringSet>(set);
913+ return ;
914+ }
915+ pv_->InitRobj (OBJ_SET, kEncodingStrMap2 , set);
1001916 } else if (rdb_type_ == RDB_TYPE_HASH_ZIPLIST || rdb_type_ == RDB_TYPE_HASH_LISTPACK) {
1002917 unsigned char * lp = lpNew (blob.size ());
1003918 switch (rdb_type_) {
0 commit comments