Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unique list with sorted set #114

Merged
merged 21 commits into from Jun 19, 2023
Merged

Conversation

lewispb
Copy link
Contributor

@lewispb lewispb commented Jun 19, 2023

See #76 for the details of this change.

Follows the revert in #111 and updates #76 with support for the changes to the way pipelines are used in #78.

See 44e765d which adds support for the pipeline changes.

cc @dhh

A sorted set is optimal for this type of functionality because we can
use fewer, more-performant Redis calls.
In order to ease the transition from UniqueList being backed by
a Redis list, we can fallback to the legacy implementation for read
operations. For write operations we first migrate to a sorted set,
then retry.
Use the Redis server time as a basis. Then add the current process time.
Then add to that the index of the inserted elements as a microsecond
component.
Like a UniqueList, but backed by a Redis sorted set rather than a list
* main:
  Bump version for 1.2.0
  Use pipeline for migration too
  Ensure to pass the pipeline to super
  Use block parameter to pipeline in Redis#multi (rails#68)
  Note tested / supported versions of Redis in the Readme (rails#79)
  Return counter value after incrementing/decrementing
  Enum Bang setter (rails#82)
  Add reset to Cycle after_change callbacks
  Add example in Readme.md
  Support configuring custom keys via method invocation
  Use bundle add instead (rails#81)
* main: (21 commits)
  Bump version for 1.4.0
  Update nokogiri for compatibility
  Revert "Improved version of UniqueList: OrderedSet (rails#76)" (rails#111)
  Add `last` to lists (rails#97)
  Improved version of UniqueList: OrderedSet (rails#76)
  Return Time objects instead of deprecated DateTime (rails#106)
  Fix possible deserialization of untrusted data
  Typecast return of Set#take (rails#105)
  Declare Active Model dependency (rails#107)
  Address LogSubscriber deprecation (rails#98)
  Account for time zones in DateTime serializations (rails#102)
  Add sample to set (rails#100)
  Bump version for 1.3.0
  Allow Redis 5.x
  Add ltrim to lists
  Coalesce "current pipeline or redis" into the redis method itself
  Pefer a thread_mattr_accessor over a thread local variable
  Delete list of keys in batch (rails#90)
  Use a thread-local variable for pipeline
  Revert "Use block parameter to pipeline in Redis#multi (rails#68)"
  ...
@dhh dhh merged commit be13d7a into rails:main Jun 19, 2023
6 checks passed
@dhh
Copy link
Member

dhh commented Jun 19, 2023

Weird, locally I get the same errors as before:

..F

Failure:
OrderedSetTest#test_prepending_over_limit [/Users/dhh/Work/rails/kredis/test/types/ordered_set_test.rb:81]:
Expected: ["8", "7", "6", "5", "4"]
  Actual: ["6", "7", "8", "5", "2"]


bin/test Users/dhh/Work/rails/kredis/test/types/ordered_set_test.rb:78

.F

Failure:
OrderedSetTest#test_prepend [/Users/dhh/Work/rails/kredis/test/types/ordered_set_test.rb:35]:
Expected: ["4", "3", "2", "1"]
  Actual: ["1", "2", "3", "4"]


bin/test Users/dhh/Work/rails/kredis/test/types/ordered_set_test.rb:32

..F

Failure:
OrderedSetTest#test_mass_append_maintains_ordering [/Users/dhh/Work/rails/kredis/test/types/ordered_set_test.rb:26]:
--- expected
+++ actual
@@ -1 +1 @@
-["CTNBPOWADM", "JURQHGDWYK", "XFJHDSGYQO", "SIDYNUVGME", "ZLERYOHXUS", "PECJZYQTVW", "ULXBDIOJZN", "ZUVEMQINCK", "VDWYIZRANB", "JETWZDKSMI", "SIXUARLKDP", "QBIGFEKAYM", "CZVPKBYOWU", "DBJGHMLAOC", "LBOWUZMEXJ", "MFHLSCYNZK", "RJPXEUIKVM", "EKSFVDYLUQ", "WOHRKATIGY", "IUNTFJGYWQ", "XRHOAVFESI", "LNXCISBUEF", "UNYLXAKDZH", "AGWSXNTHZP", "UHIJFACEGY", "BNWSLMGFXK", "ESXPZYFMDQ", "JDLKZPWYMT", "FGTKBCWJAI", "DYWIEPNHVM", "BOTKIAQUVD", "HGDWJNUZVX", "YUMGPTZKAS", "AYWPKVIUNZ", "BKNSUZWOYX", "EATVCNZPLD", "MRLNQJAVCZ", "MEZQBTJWFY", "OHYNWCKDBV", "VNCQFAPMRE", "YIATMSUFBL", "FKGCAMZPOI", "JYSWDRNAKL", "DVPJCHQKRG", "NMIDVCPGKE", "WSNDMFIOPY", "AIDQMFLVZH", "KQFICUGMNW", "RQDEPMOCJB", "KMAQJTFBGL", "XDTHFUYWGK", "AKQSTOCGFP", "GPWYNVOISH", "GHRSAPCWQK", "PMEBUGYTDW", "LSQCWMGKUY", "CYISRKUDAN", "WZFXPOBNSY", "GFAUDWLKMS", "SBJMLUHKGF", "VFKOYBRXZD", "IZGPFVRTYJ", "IOFZSRGPEX", "UXOAVGMFQW", "SRNAOICKVW", "JBADKOWPHR", "BTKGFQOEWX", "LCNZJTDHMP", "SCIUQTLDGO", "TSIAOMFDWH", "PZDKVIXUFQ", "CKXUOIWTDQ", "VRELKJZIWA", "SDYTVHUKJF", "DOXRKHBCGW", "AUOLHCPKVB", "QPRZCIVSAD", "ZAUIYDLCKV", "MHAYQROWVP", "UTYRFBPDKH", "MLFDEJIUZW", "SZUXRVYKEM", "FWZTYSBKVJ", "PQEAYMVIUT", "ZWXRBHKVPU", "RQMOYBDVUF", "DQVELWKTZB", "LCDNQXTZKG", "OMYQWCEHVX", "FGDTPRXSMU", "FUVJOASDGT", "VUPXKWGDCE", "DVEROZBQXN", "GUNJAXVFPC", "DUIMVYKSEG", "XLTEBIZQHU", "WEPNVLHGQD", "QFNRIWHKLJ", "YRDQKTBAPS", "YLMKJHRPAT", "MNQDWZYRTX", "GJPWFQBYXK", "ZUXTFEVBDW", "JDUIEHKVRM", "LGKOARFSZH", "BPYZQEWMLF", "UWTFZSXOGD", "WLNMOKDTPB", "XDTAGBMCNU", "HCNPGJAVWS", "GTZLRUVKSX", "ZEMGUHAPIT", "NZSLGRUWDP", "TUELOGFYBV", "BFJGMXKDYA", "QBZPFATNCG", "ETCIKZONBJ", "PIOKWLFQTA", "ERTMKWXADL", "QHTKXVEOYG", "EABMFQZGHX", "XSENTOMHUG", "SCBXJNYIOU", "BVMWSEIXKR", "TRXLFOHAIW", "MOQEXKRTUN", "GIPTRBJKML", "OUWIQTYMFR", "LFCUTMGJYS", "NYGMUEPRFI", "OGAKNEVJSD", "FKDAUPEIHN", "QJBRSOLDNT", "CSQXOBADGL", "LORIBPEAQU", "OSYJEVIWBF", "ILVHQKTWGA", "TGHELQZOWS", "PTLNGZKJEH", "LYTIGMBHZJ", "PRFYVXIQBE", "OYIXHFGVMA", "UVQOBKPHME", "ZPKHAMIVLR", "HMGXIRKJPZ", "CXOMZEGULD", "JYPGWRXTCZ", "AWIQLXPECR", "PANMWLGCYT", "LGRXKFMUPT", "TPHKIYFMCS", "ROSVGWUMEJ", "ZUFPHANSTK", "HLOBNDQSYT", "VLSQJRUPED", "ELDHVSMBPF", "YVXCANIUFR", "EXGSRTJDNW", "RTWAZEMDHI", "LCNTMUEVIH", "PBIHYTAFZN", "RDVYFKUACN", "OUTJKMZCAN", "WTBUKZVODJ", "CZQKEGXVYJ", "ZNPEJGTBUL", "XNIDCRSFOW", "RDUXPYGVCM", "VWTZDLPHCQ", "INCEHZPKWA", "ERMIKOZPWU", "SYCJGRQLFO", "WITSDNBRCJ", "FBPSTLYAHK", "JKXGQOSFEU", "WTCKMNAGXD", "EOSRDIQYCL", "EWBFJCSYQG", "XFITUGCQSZ", "ZDBTQFEKVR", "IGDAYZLWVX", "SFHZVEQJXY", "USYLMZKTCB", "VGXKAEPOMN", "SONRYHDVWL", "ZTICXGBWLR", "OFIDYUKVTE", "GIPEKZSDOQ", "SELFHXDKMN", "CEPMXOIHDT", "TKDWCUMNQP", "TSDEPUFZOJ", "HAIBMJZXUP", "PNCBAVOWIU", "QSZDTFEAJO", "PQVFHIJMWK", "ZOAJUGXLVH", "ODFXUBSYER", "LNKJZHDCOB", "NPCRTZIKWQ", "XMHNVGEUPZ", "MKSCGUWNEQ", "PHYWRMCSKJ", "OQZDUWNBVT", "YDOVSPHKXJ", "LJAKDFYZPI", "TSAZXJWGCB", "NBHEDYUATX", "IQGJAFNMPV", "AMJYOFCXNZ", "KSJANPIEFO", "MAFVTQBWYO", "ICWDLONKRH", "QSZLBOGEKA", "HTMARJOCEU", "CALTMNZIOQ", "PBLCVHAGQT", "NIGDJWSAXF", "SAKLZXJICG", "PVYZWFCJEX", "YMTVQRKGPW", "EMFIKVOCJB", "KRIHVGTUCW", "RALIWCSBYJ", "ZHBKEQVCPR", "WMDBYJOCVQ", "MTXYPDNFKQ", "FKODUAWRMY", "OQZRYLGTAV", "IDQYMWOAPG", "UZAVFMXCTW", "FTHIBLWGSD", "FQANYBRPUE", "MELFXIWJTK", "PKJDFMEYBR", "TCUVBLHSRE", "GUJWEKRAHO", "EHBRJUQXTI", "ALZYSJRBQU", "ITJDQBXOZR", "YEKNIZXDRM", "WRISAVBZNP", "RVLKMUOGFQ", "CZVSPKJYFA", "WIUTYKGXEF", "PGKLVJUDSB", "VJZLDQETMO", "NLKXIJTHAU", "ITBURCDOGM", "UIZNAJPODH", "NTSBYCXMLI", "VELROCKUPI", "GZRTXYFMWH", "SALHTUNCFX", "XAZYKJMCFB", "XSKBMODWVZ", "CJZMWSQRHL", "OJPARKSMQE", "IYVQTEDGUH", "GBEATXKYHQ", "CFYRAVQTBO", "DQPZVSNUFK", "RXKJMENIAP", "HVDQFSNRPW", "UHDXSLVWMN", "MHTSJYLBRD", "WSJRCZOKAL", "ADCVNEQHMG", "TUOYWISKVF", "WYUNSXTFCD", "TVOBPGSUJD", "XWQIMNEHUY", "ANQMUYTDVZ", "IYNMXFTEJG", "HWIJKAGULV", "WSILDCNMRU", "NBHCXUPWRQ", "DUCNHEMVWL", "BKWUXGPRDL", "FDJXISZGMP", "LBXHURMGDF", "GTJEPMHDBO", "QOJFHKWMBP", "IAKLBFZMJC", "YVSPQMNECI", "MOIZQAYJEL", "DQJTGVFCOK", "HWBJCAVTOL", "KXMQVTDPBZ", "GWLQSJZIVU", "DMGOUIEKNL", "ISGCZTHOUV", "DJHRBWQIZY", "OKRQWMJSLH", "SMWAUZFBYO", "ILJCQUYGFX", "DOQPTEABVG", "NTHEBLQDJM", "AGIFEPSNCJ", "EWLQUSGJCH", "UPNZMVYCQA", "WXKREYMASV", "ASVZYIFMDT", "QNGVALFJZP", "NBDRZFVWIM", "GBTPWQOREL", "JKOVEGHZRX", "FHILKQZJRU", "MGPHRTKUXI", "OARVXBEHPN", "FWXGLBHYUC", "YMOXQWAVCG", "AKGYXSHENU", "JTEWBYRZIV", "VBYDZWGINH", "OYUFVZRSJM", "YTARIOVZWK", "KWYCUATPJM", "PACRHMQXUI", "CDTILMZJQF", "NKGQLZHVJS", "UVTKGCXEIZ", "XNHFUATZLR", "JAXMKGOQEB", "NOBAVGDXEP", "LXNYRWPIOD", "TZKWNVYFEP", "GYKNXZVWLF", "SAJUHQLROB", "LUDGHMFEIT", "SDMROLUWKE", "LUCMAIVKEP", "OUFYAWHZDM", "DGREOTXHNQ", "BXMTPDSOFV", "IZBHCXVQPS", "BJEHICGLSV", "YGPCDZIUOV", "BZEDCIUTAS", "EXKLNBOUDS", "KRDGFOHMZW", "ASTLMXDYNC", "QHKSWDZGRE", "EOZHSVCDPA", "JVERYXBOGZ", "CUJOMWPYSV", "ZXMQCVWRFH", "APXUNLFRQE", "INBGOZCQYS", "ZYBGIOFDMH", "HESLYRAZGX", "XZBWMTVPQI", "EORBHIZTDS", "TOFIEJACSD", "BOTPAJXUEH", "ORJFQZYEVC", "ZWSLDYECMO", "CBPXMTGRNL", "ARWBEDTUMZ", "LJCIWQUTFA", "KJIRSQDAGO", "IXASUHDBTJ", "NLBFOMRDVQ", "EGHNFXYCLM", "CKXSEZTWGR", "OUVGHBCMRX", "BDMYVXLZRU", "BVCIUQGWLE", "KBAGVPEXRD", "EQCUPOZBRJ", "YKFMJBXUZW", "ETFXDUAZPH", "KAIJQPLSTD", "XWRPGCUKOI", "AUPYEODGXW", "ZGYLOXCKBN", "ZHDBAWVJCU", "YRJDGHEIPQ", "ZQHDARTPCS", "UCVJIOBQKN", "YLAGVCDUHZ", "ZNXPIAUHYW", "IAKHEPSTFD", "EUBLNFGDRS", "SYBGNDVZPE", "WJEDYFCSHL", "SWCBFMDHJT", "VFGCJXAKZT", "PABYNDKLMU", "TOSAQGZIYJ", "JZBFNRHUAS", "KMSGHEPIAC", "MWLGVIQSCN", "LAITCUQSBV", "FVJSYXZTAR", "VCZEQOSART", "KJFDHNZTUB", "CKFVGBUAYN", "ABIZETVQRK", "VKHYUDIRPT", "UPZFQJRVIN", "GFUMENTIBK", "YOQNFIHXBJ", "CXTBHZVNGA", "NEFIRBVMZJ", "PEWNKHFOMY", "AGIOQWPYJT", "JGNQVDSZLE", "VNKJLUOIGA", "QPOSIUJFTN", "SGUIZKXTFQ", "CPLJEGXYHF", "POTUYGNDJM", "JXYDLESOBP", "BUIHXFSAJK", "XKNYOSIQMH", "ASHLCDWTEQ", "NJRMADHBOS", "JFGZAQURIB", "LFEOPGMRZI", "QESLFCRTMG", "XWETHLNQVM", "ACMWEBJVZI", "IABUZHSEFM", "ROUXCMYPZQ", "UVBZREKQTM", "BFUAEPRYIQ", "AOKIDWGCRX", "VWXTCEYZOJ", "ILKPMCAZUY", "MCEZIUYJOK", "QIHOWGDLKM", "ROFEBNKWGP", "DYHEACSNIR", "GTBYOHMNFU", "WGDMLNEIKF", "CBKJDRQVUI", "EFKTCVOWNX", "MGWLUQPYJO", "VBSOUGQKYX", "WVHPUXZGYO", "UWMHOIZFKB", "MFTBXPKWNL", "JAHDFIZXCR", "WAUXOYBMSF", "IOJMBFVAST", "XUTQVCYFLD", "FRULVGPIJM", "GCXDMNHIRW", "NTIJKAFEVP", "KLXEYQRWDG", "ELJXQTNIPO", "YMNVAILTOP", "FXZSGTUBDL", "DXKZNOMRQP", "GIHXPZWNSB", "TOCBLSRYVQ", "EXMAHIKRJZ", "YDLOMRACFP", "NXZTYFKABD", "IVBTMHSQOF", "CAPWBDRELJ", "MYSGPLKIOV", "JBWOEMZTPF", "RYVECOAZKW", "IPHEUWYGOF", "ZMRHBIASJF", "HNVMXCGEDB", "CXMVNYGKFO", "YHGICPTROX", "KRWSYLUGJB", "SQMIJKTZAF", "WQPBJVZTNR", "IKVBTYRQNL", "WSVKHQDIPA", "NQIHBLXVCS", "IJMPVHANUG", "XGNBOCHTQL", "DJGLQVHKPN", "NBMCATVGXU", "SLWGFBPQMT", "XBVPQANCWH", "GRLJFTZYXA", "NOFGUJEISZ", "OBMSLVCZRP", "XGLBZPKFRS", "UPFTGLCBDJ", "ZOIGMJWUBE", "XFSZKTYMRC", "TNFSPHAZIX", "RNVDLIFPET", "VRDBIEXNYK", "ONVPCEUKQZ", "KDLOHINCAE", "MFQHERUYCL", "TSBMNYIQFA", "YMETUCWBPN", "FBZHAGTXEO", "VKZCRGHSUE", "JHBGRVWQKC", "TJALSMZVKP", "LNMDXYKRGV", "PGAIJHWMCU", "VHYCONMGUR", "EZFXKMWGUY", "XWJVGKOIPT", "DETNBPGKAQ", "ABYZVXDRKQ", "MDCGHNFSVY", "CKVSEHXWRT", "TQWEUOINRS", "LSZAPBHNYK", "MJACTRXELB", "QOMTZLGFID", "ORIFPZLGBX", "IHFUXRCQME", "EZDQHOAVRL", "XEGWOQBIZN", "SCAPJZLHNU", "UOLEAHVCMK", "MHQEDLJVZA", "FZNDTUMJPV", "EFVZUJAHPK", "OJSNMUTRVH", "GFDQCVIOMX", "ZSBINMUQYF", "BJLVISDNMP", "VWECNPRHIS", "KBVPNRDOUL", "GFXLYJURNE", "RGCYITXMQE", "QEUSYVGTWX", "JQFKMHYZEI", "YPIVLWDXZA", "JZAKGEBNDO", "FGWVMYDNHJ", "KWTUQJMRHL", "LUNXTFMIQH", "SFDQLRXAYC", "FBKITLSAQP", "YOJHPMKALB", "ILTFUAMYWZ", "BPQUZHFNVS", "ABSGZJIYOF", "QGFUYKJRLZ", "WDKYGULZJM", "JDIPGTLOXU", "PFZSJCMOVH", "VKUMXWSACI", "GURNCISBXD", "PVELUNOGAD", "TVYZEXFAQO", "JTWFVQEABC", "DFENKISPJC", "QTFWPKZECD", "VZPLJSUNDQ", "VRNXMJTZSD", "AZWKMEHBQC", "YFXMGUIKTD", "ZCIAWHJGDT", "RUMYTPSHLK", "ONBSTEDAXY", "PTMOQUECDX", "OXTKLAMUDY", "MGQITNPKHC", "LJRKDPVZTY", "OUWYDLKARC", "AODKBESIPM", "QEPFSNRUYO", "OJUWFCIQBS", "RKBZYNIFMH", "INCTZAKPLB", "NTYWAJVZUX", "AYWKETVNLI", "RHBOEGIMUC", "GPISDVNMUH", "HUWENDBVOQ", "BLJSRZYDIW", "TUIMXPVSWD", "LTQCAVWUXG", "NPTVEIGXBH", "GESQBAXPHF", "RGEOYJLUTA", "ELTKIBJNGP", "OILBNWGCRU", "VJOKPWSXCF", "XJOFYSTBWL", "YJTFKMSGZR", "YSDTLZKGCJ", "POSJWRKLFC", "FKLUGIQANW", "LXZIHMUYJG", "QSLTDKRZJF", "QXETCZBSGR", "YUDQBNOVHJ", "HDPWFQXCMU", "CTOPZHDXRS", "PIDLTKRYFX", "AQWMIRHUBO", "HMYSKWBVIE", "EYJTGAWPLS", "TKIYLBMRJW", "ZSPYJHBADF", "LQPHSJDZOA", "VAPZFDLTSO", "GWMPEBQCDI", "YIRTHLCEBS", "BUIMNTCHWK", "FBJOWNQSID", "CNHAMDIULP", "PYBZMOSVRL", "ZFKYECOLNB", "CBWLQDXAHJ", "NWETOXHPUG", "IRXGWOADYB", "IGKXFRTEZW", "QXMOTVWRYA", "SDCZFQOGPH", "LXIWSFTZJE", "EWBAZRXUOL", "XKATMLSBZR", "OKSIPYVJZG", "PIKGDHABJX", "XDYHMGCQOL", "TDECNJSXHU", "SWPUTNJGML", "KNZEWMORFX", "FLVCYQTRNH", "BTMUKISXJN", "PWVGZFQTOI", "GKBACSMTVX", "KYUPCBZJLI", "OURIJDCLZH", "UDLOWKJHTR", "IPBLMRZVJD", "GKUAJCVEQL", "ORZYHQNFDT", "ZPGITFCJAO", "DRXUMYQWJN", "BFRNLCXEVZ", "LDROFTEXMV", "CGHDPTNIVA", "KCHDRFWXYZ", "GTEZYICAKD", "TCHJQPMDFX", "VZWXQGHPNK", "DBNKHSMAZG", "VZCILRNHXA", "WOHGSAIEMR", "LTYHPIRNZD", "PFSXUHYBWA", "FJYWDZNTBP", "YPRTEIOKHW", "PGTNVUWCAQ", "KQHTSGPVBJ", "FTVBORMKWY", "KRTABNMLDJ", "YCKOWQXDIE", "DXYQGWNELB", "KDFRVMLGJZ", "AZITOMQCHN", "KNDLPAWCVT", "ARJTYIUDHO", "BTIJNQYXCO", "UCJTSXVPKF", "MAJPLHVNZB", "KFUEILBMYH", "KIVCFHYUZJ", "KTOGSLAYVQ", "WOUKBNEHAZ", "QSBMKWPNHY", "DXHLECRYKA", "NTQDFSGJAV", "BNWTVDQJHY", "HDCUQTKSMG", "XDBPCEMGNZ", "WKCAFRSEJQ", "FYPZIRLGSU", "HCXQWJRMLK", "CNWZTOQEPX", "ONHUPDKQJL", "QNSVAJEBZC", "XSHUOFBPVT", "HGCYEMTAIQ", "STVUHWCPJD", "YJPTUVZHLI", "YRQDPBGEOK", "MQEJVLZHSC", "TXVSOHEDUZ", "XCDOULWKSY", "LMERBDIHUK", "XRHJMGCIFY", "JBWCGARVZN", "GUCPHILZNA", "ITWBLXCJOS", "QTMSCINFPA", "OBJDQAVKXL", "SUBXEIFJPQ", "XDJVBPLNHY", "MGHEBZCUIL", "NLZISDMUJQ", "QRXPETAYOH", "TAJDVMBGRO", "SKPJNDXHYT", "RIYTPAVJDB", "ARNWTIXZBE", "HCRPLYDSUG", "NRDGJZFEUM", "QDEPGFARXL", "LHBTMICQNO", "UBYCVEAIMK", "DLYCNBTOFH", "TBOPGCYQHA", "PDIWLEATMV", "FKXRSILOJW", "KGAFDWPEHI", "ZCXGUMNAPE", "WJERPSLGQU", "FRWMQBODUP", "WIBZMYGLRC", "ZKGFTXNIQB", "PDRLQIMOJV", "KAJECHFZUO", "SKDPVOLGRB", "JOXQUVSAWG", "IOHZKAUFPC", "RZULNAYGCD", "GTADRNHYWV", "HVXPTLDGFQ", "NXOFWAGQJD", "XBSWMHZUNJ", "ECOKBTJLFS", "HFDQJZPOLI", "DCANFSQHWT", "MCHWYFZRKG", "NLHJZCRMTV", "PCVZSOTWKJ", "HEKLJDIPOW", "HQBTEFWLGJ", "TCQWYPGXIN", "LBYPQKINMW", "LYVKEINQGO", "NCTMELFIZK", "PLBTAJVQKX", "LECBNRGUWF", "MRINLUEZSJ", "PTRFKIDLVZ", "DYHPKWBXGA", "OKXRIGBDFT", "ILXAOWNUTC", "BOZNKFUGTM", "IYVTRPXECM", "NHJMYXALZW", "PVHALCEMBG", "HYZRWUGJBF", "RPQVDWHOMG", "HUZBYNKPWF", "OMGFYBDQZI", "VBYEXLDFMH", "XDSUOYAEBZ", "QDBLKUACMH", "EICYSDNMQH", "OXFUAVZKDN", "WFURDALGVI", "EQCXHRDFZS", "ENIWPJZDKB", "HAGJIFKPDM", "OVKJDETLCN", "ANBIFOKXGU", "ZEOJMSANGP", "OKMJNAUTYD", "JELTYRAVIF", "CUZOYKTNDF", "UQYIPSMEHK", "NLCDVKGROA", "ZWQMPTFVUB", "SBFVWPJAKL", "ZSJOKEMYVR", "AYMEGBXFZN", "VUCTAZYXJR", "TIKCPWGXRH", "YCFLHGDQBR", "IZXNBHUVQE", "NVIMZDRJSP", "NOIKZDFHMG", "SKIDMGHEVR", "WLRTJHAGVD", "MTPXBVCNZQ", "CQHRWFLTSP", "JWYTUHPRGV", "LTBCQJZWSN", "PBRCWNDGAU", "ZUFTAHRMBJ", "OTSLAWVEJX", "NGTYPBSEDA", "WCUEPTNJFD", "DZHJQOBVGE", "SBEJXNKVYC", "QCXLMZBVUE", "VAETWZBLFR", "MVCIJGNXST", "KPFQVBDUAE", "EIFVJYRKPM", "GZEOVAXFDU", "OECNSQHZKD", "WZCKSEOYLX", "AGFBNYZVWQ", "OMETJAZUQR", "YNIGOBRMUT", "APIUWCGTBK", "CEXFHPARBG", "HYQREUCJLP", "NQWGYZEDPV", "BYJXKHZGPD", "BCUMSIOGQA", "VZQYUCFNIP", "KQXFNTLBYJ", "LDSBITYVPH", "UOIDQMTSJB", "JQIWFSEPRM", "XNEZOYAKBQ", "RPKSVOTGXC", "RJBOWLFQNP", "ACIDBMFWZG", "PBRLVCFWJQ", "QAZXFUJVLT", "YMAXWBHKDR", "ECWHLFONXY", "SOTNVXCGEH", "DKCTOUPBGA", "YBUMOGNTLR", "FZYJCAKRIW", "MFQYNWIPHC", "QJSGAFIZMY", "HETWOBPYCL", "POUFQKMLTV", "UBFDTGYIEL", "XUHCBFTNDQ", "RTJMYUIXGZ", "WPOLBNUQFH", "ZOWQJNKECT", "YWEZQKTOCV", "EPDZRCHKWA", "ZVOGWESXBC", "INKETBWPRJ", "AKFCGNYXJD", "MHZJNIFCKL", "CYUDSVAPWM", "KEOMLDVIZB", "BPRYZGVTSL", "GPISEBRHFQ", "EJIOKVFAHM", "LIFBDPCMUQ", "QUKATMGRIH", "XDNFUSBMVZ", "XSVIMTUGBR", "RFBITEAUQL", "VUPXCETDAR", "GDENRAYXFC", "IEANQXYOJU", "NRMXWQUHFS", "DHBPVMJRZQ", "NKMRYXIQGE", "YAFHJRZOSN", "DBJQZMSVHI", "OXSZNVWCQM", "JPHMISAGEX", "AGELVQYFOM", "MUXOBRTKQS", "PXJTMISHDW", "IJGATFMXDY", "TLBPVNKSGI", "CLWGDFMKRP", "TUQNMEFPIS", "GCYBOWXTKM", "VPDYUQMOSX", "AQMLWETDGY", "JUFAWVMQDE", "JMERNAWFVD", "QBRNCIEXDM", "EGZNHYTOPB", "PWRGTMSBNQ", "XGHEPZLIQN", "UZFQEXTGPK", "RUTVFIKBNW", "JIACEDBPWT", "DLHGNXSOUE", "ZNLHXABVJS", "KPLETQYZOX", "RTYFMBANCO", "OETJHFUALR", "YDGHBMZOLN", "EGFQZOLBVX", "WGZHPKYOJV", "BNPMGKSAHO", "DFIULCBSVH", "NYXOPLVCIW", "EKFDZVMAHU", "TQOALVRWHF", "YVWSTJKPNM", "MFDYVKQSXO", "LDAGMIJRES", "LRIBJFSOXE", "IJPWHANRQB", "FXNLECSIMG", "NWUGDVAMRK", "MXWJGSRPID", "KBZSWTOXPF", "ERTYJQBVUS", "EGRLYIUDPX", "OXSBUQPDJH", "GYBQRTVDXJ", "NURTKZIEGW", "YQHZSBLIRA", "XTRZYVHGON", "YNAVWEFBUR", "AXVSDMETBY", "JEXLFRCUPT", "KILRBNQFAX", "HMYQNRWBSK", "WTSAQZUDKG", "GTZVCKHRME", "XCPZUABRYW", "NCEVGPJQOK", "WNHTVDZEIB", "QRUVLTYFSM", "IQAYUZDJFX", "XTFPVZGENQ", "GTCXWZHPAY", "NQWVOYHZCR", "DQUCJXAKBM", "CIVZTOJFSG", "LETSJQBGXV", "XCOMUZVNIF", "SYHPNAOCWM", "YATOXCUZVM", "VDKAQOENZT", "GKSBIRQELA", "JEMROGZYLH", "QXIZPWJROY", "LWUYMNCSZP", "HZVSPFUEYB", "YVSGMFBWJT", "DHKJZRCAST", "CHOBKYTIFX", "PDTOZMEUIS", "VSGTENZWDO", "RKXNDOZIWE", "EBYIADNZXT", "HALPEMQFOW", "TBIRPJUZQA", "OKTRCSGLUM", "RWJDEFQYGN", "EZFYANPDVL", "PCHFJEMTGW", "IMVLWZXKPY", "MHXPVIRDUN", "DKFRHQXBJS", "VCFKZYUDJW", "RKBAQHYMXD", "NRFLTVCOYZ", "PDBVZHJSOR", "LJMQCDKWGH", "XSPLDYKBGV", "MZBJPAUWYT", "PLKAHTGCSE", "YUPFBDAHXV", "IBDJMGYKEO", "ATHZRMWCYS", "LCOTJXIENY", "JXLPEMURSC", "KPBYMJWUXS", "FIHJKXCEYV", "RCVGMIDYJH", "RVKICNSBGH", "SCYMIZQWFH", "HYLRVDFIXO", "XQBMRNEASC", "ODSZAEBUFT", "KODSIRVTGE", "TIDNFPUCKB", "KZGSXNAQYE", "JKCQVGIUSB", "VTSMDFBHUW", "MPHRGDZSXU", "CTHORNGZAF", "TADZOKNGWJ", "KBANZVSRFP", "JBIGSYVTHW", "LFWHAGOMCD", "KJZMPTCRUV", "SRZGPFTOXI", "XERJZQAVSW", "KUCYLTHESJ", "WZYPIMECSX", "DMVYGCTZEU", "OKHQVETNSA", "PQESWTRHOL", "BSYCIHFTXZ", "QFBSJVMARO"]

....F

Failure:
OrderedSetTest#test_prepend_nothing [/Users/dhh/Work/rails/kredis/test/types/ordered_set_test.rb:47]:
Expected: ["3", "2", "1"]
  Actual: ["3", "1", "2"]

But they're not triggering on CI. Maybe a version issue?

Maddie-2 3.2.2 ~/Work/rails/kredis main = redis-cli -v
redis-cli 7.0.8

@lewispb
Copy link
Contributor Author

lewispb commented Jun 19, 2023

Thanks for flagging that @dhh.

I noticed from your prompt you're running Ruby 3.2.2 locally and tried the same version. I was able to reproduce what you saw. After some investigation it turns out the better performance of Ruby 3.2.2 meant the score generation relied not only on process uptime but also on the element index, and there was bug there where I was incrementing instead of decrementing the score when prepending elements.

Fixed in #115

lewispb added a commit to basecamp/kredis that referenced this pull request Jul 8, 2023
…tialize

* origin/main: (22 commits)
  Add kredis_ordered_set for OrderedSet usage in models
  Add a development console
  Bump version for 1.5.0
  Fix ordered set prepend bug (rails#115)
  Unique list with sorted set (rails#114)
  Eliminating Ruby Warnings (rails#112)
  CI against Redis 7, Ruby 3.1, and Ruby 3.2 (rails#113)
  Bump version for 1.4.0
  Update nokogiri for compatibility
  Revert "Improved version of UniqueList: OrderedSet (rails#76)" (rails#111)
  Add `last` to lists (rails#97)
  Improved version of UniqueList: OrderedSet (rails#76)
  Return Time objects instead of deprecated DateTime (rails#106)
  Fix possible deserialization of untrusted data
  Typecast return of Set#take (rails#105)
  Declare Active Model dependency (rails#107)
  Address LogSubscriber deprecation (rails#98)
  Account for time zones in DateTime serializations (rails#102)
  Add sample to set (rails#100)
  Bump version for 1.3.0
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants