Compare commits

..
Author SHA1 Message Date
John Sully 3e24768e21 Enable evction tenacity feature for storage providers 2022-05-25 19:23:52 +00:00
John Sully 2c38667ecf Revert ci.yml to unstable branch version 2022-05-23 14:56:45 -04:00
John Sully 38310ec9f6 On Alpine we must have a reasonable stack size 2022-05-20 16:40:20 -04:00
John Sully ea4941a3e7 Fix crash in expire when a snapshot is in flight. Caused by a perf optimization getting the expire map out of sync with the val 2022-05-20 13:07:26 -04:00
John Sully 5dbf1f6bd6 Fix O(n^2) algorithm in the GC cleanup logic 2022-05-19 21:46:55 -04:00
John Sully ba1275f653 Fix TSAN warnings on the repl backlog 2022-05-17 15:37:22 -04:00
John Sully 20766a02b8 Disable async commands by default 2022-05-17 15:37:22 -04:00
John Sully a9d3490f9c Silence TSAN errors on ustime and mstime. Every CPU we support is atomic on aligned ints, but correctness matters 2022-05-17 15:37:22 -04:00
John Sully 8405c99017 Add fence barriers for the repl backlog (important for AARCH64 and other weak memory models) 2022-05-17 15:37:22 -04:00
John Sully 027ad50581 Dictionary use correct acquire/release semantics 2022-05-17 15:37:22 -04:00
John Sully e38537202e Avoid unnecessary rehashing when a rehash is abandoned 2022-05-17 15:37:22 -04:00
John Sully 8d8aabb978 Prevent us from starting a rehash when one wasn't already in progress. This can cause severe issues for snapshots 2022-05-17 15:37:22 -04:00
John Sully 418356c03a Initialize noshrink, it was dangling 2022-05-17 15:37:22 -04:00
John Sully 3caf6060c4 Prevent crash on shutdown by avoiding dtors (they are unnecessary anyways) 2022-05-17 15:37:22 -04:00
John Sully 9e138815a1 Fix assertion in async rehash 2022-05-17 15:37:22 -04:00
John Sully 51d3e2cbbc Fix reference counting failure in the dict. This is caused by std::swap also swapping refcounts 2022-05-17 15:37:22 -04:00
jfinity 242d6aabb2 Fix Readme typo from github org transition
Replace mention of scratch-file-path with db-s3-object
2022-05-12 16:55:14 -04:00
John Sully e2e1b4d5d5 Update license 2022-05-12 13:27:46 -04:00
benschermel 03287d69be update deb master changelog 2022-05-12 13:27:46 -04:00
John Sully a2ac9fec3b Delete COPYING to replace with BSD license 2022-05-12 13:16:59 -04:00
John Sully 442c3de350 Limit max overage to 20% during RDB save 2022-05-10 18:30:12 +00:00
John Sully f747044034 Merge pull request #70 from Snapchat/update_readme
Update readme & remove Enterprise references
2022-05-10 14:26:36 -04:00
benschermel 1b22cebe02 remove Enterprise references 2022-05-10 12:58:59 -04:00
benschermel 1ff1d05690 update readme 2022-05-10 11:30:00 -04:00
benschermel 7bbb50c599 update readme 2022-05-10 11:21:55 -04:00
John Sully 481ab76987 Remove unnecessary libs 2022-05-06 17:34:14 +00:00
John Sully b423e1050e Fix musl/Alpine build failures 2022-05-06 17:05:04 +00:00
John Sully 4141746f8f Fix crash in save of masterinfo 2022-05-06 16:29:27 +00:00
John Sully 39974223eb Disable FLASH 2022-05-06 01:20:06 +00:00
John Sully 1f958ac63d Disable async for hget commands as it is not ready 2022-05-05 20:50:44 +00:00
John Sully e16dc2840c Merge pull request #68 from Snapchat/psync_mm_fixes
Fix PSYNC test crashes
2022-05-05 10:32:18 -04:00
John Sully cb6831308d Ensure we force moves not copies when ingesting bulk insert files 2022-05-04 16:51:48 +00:00
John Sully 41b282803a Fix PSYNC test crashes 2022-05-04 01:37:40 +00:00
John Sully ffa8a74d3b Merge pull request #67 from Snapchat/vsaini_psync_test_additions
Quick fix to make psync tests work
2022-05-02 23:11:56 -04:00
Vivek Saini eaeadc5427 Quick fix to make psync tests work 2022-05-03 00:41:30 +00:00
John Sully a1051fd435 Merge pull request #66 from Snapchat/psync_multimaster_fixes
Psync multimaster fixes
2022-05-02 20:24:28 -04:00
John Sully cefba25d0e active-rep test reliability 2022-05-03 00:02:22 +00:00
John Sully cfcb9df71c Merge branch 'keydbpro' into psync_multimaster_fixes 2022-05-02 22:19:22 +00:00
John Sully 15531af421 Merge branch 'psync_multimaster_fixes' of https://github.sc-corp.net/Snapchat/keydb-internal into psync_multimaster_fixes 2022-05-02 22:17:26 +00:00
John Sully 63e5507dfe Merge branch 'keydbpro' of https://github.sc-corp.net/Snapchat/keydb-internal into keydbpro 2022-05-02 22:14:31 +00:00
Vivek Saini faf9359e10 Merge pull request #60 from Snapchat/merge_os_apr_13
Merge in changes from Open Source.

For the most part, this encompasses two changes:

- Adding partial sync capabilities to multi-master
- Adding ReadWrite locks to prevent global lock issues when forking threads, specifically with regards to the time thread.
2022-05-02 13:26:21 -04:00
Vivek Saini c45c77b0ef Updated test replica configs so tests make sense 2022-04-28 21:58:35 +00:00
Vivek Saini cd59462dca Cleanup test suite 2022-04-28 21:36:01 +00:00
Vivek Saini 72c033c9af Inclusive language fix 2022-04-28 21:34:10 +00:00
Vivek Saini c0eeda86e1 Converted some existing PSYNC tests for multimaster 2022-04-28 21:30:40 +00:00
John Sully 6e4e75af9c Ensure recreated tables use the same settings as ones made at boot 2022-04-27 23:38:55 +00:00
John Sully cfa9ba8eb1 Ensure we are responsive during storagecache clears 2022-04-27 17:32:40 +00:00
John Sully 48128dd4c7 Merge branch 'keydbpro' of https://github.sc-corp.net/Snapchat/keydb-internal into keydbpro 2022-04-27 17:00:35 +00:00
Zhaozhen Liang 6b795bf62e Merge pull request #64 from Snapchat/setup-machamp-ci
setup Machamp ci
2022-04-26 16:35:39 -06:00
John Sully b37a68c8f1 PSYNC production fixes 2022-04-26 02:07:28 +00:00
John Sully 5ce8bcd511 Merge branch 'merge_os_apr_13' of https://github.sc-corp.net/Snapchat/keydb-internal into merge_os_apr_13 2022-04-26 02:06:43 +00:00
John Sully 1bf92015dc acceptTLS is threadsafe like the non TLS version 2022-04-26 01:55:22 +00:00
John Sully 914da1f62c With TLS throttle accepts if server is under heavy load - do not change non TLS behavior 2022-04-26 01:55:22 +00:00
John Sully dcaca5d79c Make active client balancing a configurable option 2022-04-26 01:55:22 +00:00
Vivek Saini 54f746f99b Removed mergeReplicationId 2022-04-26 01:55:22 +00:00
Vivek Saini 78efb2f629 call aeThreadOnline() earlier 2022-04-26 01:55:22 +00:00
Vivek Saini d441901c39 Inclusive language 2022-04-26 01:55:22 +00:00
Vivek Saini 09f216fb03 Remove asserts, RW lock can go below zero in cases of aeAcquireLock 2022-04-26 01:55:22 +00:00
Vivek Saini b1b6d31305 placement new instead of memcpy 2022-04-26 01:55:22 +00:00
Christian Legge 0f26a14276 Save and restore master info in rdb to allow active replica partial sync (#371)
* save replid for all masters in rdb

* expanded rdbSaveInfo to hold multiple master structs

* parse repl-masters from rdb

* recover replid info from rdb in active replica mode, attempt partial sync

* save offset from rdb into correct variable

* don't change replid based on master in active rep

* save and load psync info from correct fields
2022-04-26 01:55:22 +00:00
Vivek Saini cde7939fe1 Defensive asserts for RWLock 2022-04-26 01:55:22 +00:00
Vivek Saini 3fadb9787a Integrate readwritelock with Pro Code 2022-04-26 01:55:22 +00:00
Malavan Sotheeswaran bdfd34cf10 use atomic_load for g_pserver->mstime 2022-04-26 01:55:22 +00:00
Malavan Sotheeswaran 8f6c6bb6a4 need to include stdint for uintptr_t 2022-04-26 01:55:22 +00:00
Malavan Sotheeswaran 2c881b390a cannot mod a pointer 2022-04-26 01:55:22 +00:00
Malavan Sotheeswaran f189bbb4e4 remove nullptr subtraction 2022-04-26 01:55:22 +00:00
Malavan Sotheeswaran e0548b4722 check ziplist len to avoid crash on empty ziplist convert 2022-04-26 01:55:22 +00:00
Malavan Sotheeswaran 60a85737e6 remove unused var in networking.cpp 2022-04-26 01:55:22 +00:00
John Sully f7ea8bf0f1 Eliminate firewall dialogs on mac for regular and cluster tests. There are still issues with the sentinel tests but attempting to bind only to localhost causes failures 2022-04-26 01:55:22 +00:00
John Sully f59cd18e8c Fix module test break 2022-04-26 01:55:22 +00:00
John Sully 9dad9f6ef4 Fix MALLOC=memkind build issues 2022-04-26 01:55:22 +00:00
benschermel e0d08c62e5 update README resource links 2022-04-26 01:55:22 +00:00
Malavan Sotheeswaran 78086d6293 set thread as offline when waiting for time thread lock 2022-04-26 01:55:22 +00:00
Malavan Sotheeswaran aa07287c05 time thread lock uses fastlock instead of std::mutex 2022-04-26 01:55:22 +00:00
Malavan Sotheeswaran 24a586cdf1 only need to include readwritelock in ae 2022-04-26 01:55:22 +00:00
Malavan Sotheeswaran 4d4acaa155 hide forklock object in ae 2022-04-26 01:55:22 +00:00
malavan 52402c4786 fork lock for all threads, use fastlock for readwritelock 2022-04-26 01:55:21 +00:00
John Sully 84b57684b0 Update ci.yml
Change min tested version to 18.04
2022-04-26 01:55:21 +00:00
zliang 6ab1c2deec update builder image 2022-04-25 18:55:01 -06:00
zliang aedd1d4ca8 revert back changes 2022-04-25 15:32:37 -06:00
zliang 408191f831 debug with old img 2022-04-25 15:23:51 -06:00
zliang 465892a357 try remove multi arch for debugging 2022-04-25 15:10:00 -06:00
zliang 7b18695ead support multi arch build and tests 2022-04-25 14:49:14 -06:00
Vivek Saini 836c9b200b Added multimaster test 2022-04-25 20:32:44 +00:00
zliang a564504b6a remove multi arch for now it is not working 2022-04-22 19:06:10 -06:00
zliang c750cb155c add multi arch for machamp ci 2022-04-22 18:36:40 -06:00
zliang d5b6530f4f break into tests into steps 2022-04-22 18:03:42 -06:00
zliang 935d96fe69 fix the Machamp build 2022-04-22 16:46:41 -06:00
John Sully 6bf79b69c6 PSYNC production fixes 2022-04-22 22:43:20 +00:00
zliang 2431c646cd make build_test.sh executable 2022-04-22 12:31:13 -06:00
zliang 89275cad1f fix typo 2022-04-22 12:24:27 -06:00
zliang 8f6a2b7d3b setup Machamp ci 2022-04-22 12:08:39 -06:00
John Sully aefff904ef øMerge branch 'keydbpro' into merge_os_apr_13 2022-04-21 19:54:01 +00:00
John Sully ae5110ba79 acceptTLS is threadsafe like the non TLS version 2022-04-21 19:53:16 +00:00
Ben Schermel 090ac04f1a Merge pull request #63 from Snapchat/pkg_update
Packaging Updates
2022-04-21 13:21:14 -04:00
Vivek Saini 9f81cc0385 Removed mergeReplicationId 2022-04-21 01:18:12 +00:00
John Sully 0fb5e74339 Merge branch 'keydbpro' of https://github.sc-corp.net/Snapchat/keydb-internal into keydbpro 2022-04-20 21:19:34 +00:00
Vivek Saini eaf76b5944 call aeThreadOnline() earlier 2022-04-20 20:46:48 +00:00
benschermel 19d3076467 update deb copyright 2022-04-20 16:17:43 -04:00
benschermel 9253611008 update copyright 2022-04-20 16:07:37 -04:00
benschermel 9f0474e73d update changelog to use replica as terminology 2022-04-20 14:28:18 -04:00
Vivek Saini 08f88f7a59 Fix KeyDB not building with TLS < 1.1.1 2022-04-20 14:24:50 -04:00
Vivek Saini dc5dd7ee36 Only run the tls-name-validation test if --tls is passed into runtest 2022-04-20 12:15:19 -04:00
John Sully 0c3fd61928 With TLS throttle accepts if server is under heavy load - do not change non TLS behavior 2022-04-18 23:07:36 +00:00
John Sully 95c0146ec9 Make active client balancing a configurable option 2022-04-18 23:07:15 +00:00
benschermel 825dfb19dc modify dockerfile to build within image 2022-04-15 23:10:31 -04:00
benschermel 0cc2a59f8c update packaging for OS merge 2022-04-15 23:09:44 -04:00
Vivek Saini 609a8dc194 Inclusive language 2022-04-14 23:54:05 +00:00
Vivek Saini faefec28a7 Remove asserts, RW lock can go below zero in cases of aeAcquireLock 2022-04-14 22:34:02 +00:00
Vivek Saini a827158d27 placement new instead of memcpy 2022-04-14 21:05:10 +00:00
Christian Legge 264429c997 Save and restore master info in rdb to allow active replica partial sync (#371)
* save replid for all masters in rdb

* expanded rdbSaveInfo to hold multiple master structs

* parse repl-masters from rdb

* recover replid info from rdb in active replica mode, attempt partial sync

* save offset from rdb into correct variable

* don't change replid based on master in active rep

* save and load psync info from correct fields
2022-04-14 20:17:18 +00:00
Vivek Saini 88341c3672 Defensive asserts for RWLock 2022-04-14 17:21:50 +00:00
Vivek Saini a4a886428f Integrate readwritelock with Pro Code 2022-04-14 17:15:19 +00:00
Malavan Sotheeswaran 9486f16857 use atomic_load for g_pserver->mstime 2022-04-13 14:10:58 -04:00
Malavan Sotheeswaran b2a1b8cd0c need to include stdint for uintptr_t 2022-04-13 14:10:58 -04:00
Malavan Sotheeswaran 7d3c604280 cannot mod a pointer 2022-04-13 14:10:58 -04:00
Malavan Sotheeswaran b0f4454851 remove nullptr subtraction 2022-04-13 14:10:58 -04:00
Malavan Sotheeswaran 8f02c51f2e check ziplist len to avoid crash on empty ziplist convert 2022-04-13 14:08:44 -04:00
Malavan Sotheeswaran b73ece90f5 remove unused var in networking.cpp 2022-04-13 14:08:43 -04:00
John Sully e36bd49cf2 Eliminate firewall dialogs on mac for regular and cluster tests. There are still issues with the sentinel tests but attempting to bind only to localhost causes failures 2022-04-13 14:07:14 -04:00
John Sully 0b80316514 Fix module test break 2022-04-13 14:07:14 -04:00
John Sully 8af58be5cd Fix MALLOC=memkind build issues 2022-04-13 14:07:14 -04:00
benschermel 2347f89e6c update README resource links 2022-04-13 14:07:14 -04:00
Malavan Sotheeswaran b1f0d8ddf5 set thread as offline when waiting for time thread lock 2022-04-13 14:06:58 -04:00
Malavan Sotheeswaran 395eb1fd3a time thread lock uses fastlock instead of std::mutex 2022-04-13 14:05:26 -04:00
Malavan Sotheeswaran 2e4d50fbc4 only need to include readwritelock in ae 2022-04-13 14:04:07 -04:00
Malavan Sotheeswaran 09c1b0d5fc hide forklock object in ae 2022-04-13 14:04:02 -04:00
malavan 53c89372aa fork lock for all threads, use fastlock for readwritelock 2022-04-13 13:52:41 -04:00
John Sully 6689604d3d Update ci.yml
Change min tested version to 18.04
2022-04-13 13:34:18 -04:00
John Sully c910471914 Fix leaked reference count to dict 2022-04-13 12:51:00 -04:00
John Sully cb4d9401ae Improve connect performance by reducing lock contention, I'm seeing 50-100% improvements 2022-04-13 12:51:00 -04:00
John Sully c9d70ca62d Do not send updates to servers overly frequently during load 2022-04-13 12:51:00 -04:00
John Sully 55dbb698e7 SSL connections are expensive, do not do them overly frequently 2022-04-13 12:51:00 -04:00
John Sully 2987bb62c7 Handle RREPLAY errors gracefully 2022-04-13 12:51:00 -04:00
John SullyandJohn Sully 52b8c153f8 Make multithread load configurable and disabled by default (#57)
Co-authored-by: John Sully <john@csquare.ca>
2022-04-07 13:20:38 -04:00
John Sully 6a483cc7ae Log the connected masters in the INFO command 2022-04-02 01:20:45 -04:00
John Sully be777f9e7a Fix test failures due to async command slip 2022-04-01 05:08:41 +00:00
John Sully 5344e39488 Do not save while loading 2022-04-01 05:08:08 +00:00
John Sully 24f03b501e Fix test failure 2022-03-31 17:48:37 -04:00
John Sully f7476575a1 Support dynamic runtime modification of tls-allowlist, and add config rewrite support 2022-03-31 17:48:37 -04:00
Vivek Saini 5d833a7173 Changed term whitelist to allowlist (#54) 2022-03-31 14:15:03 -04:00
John Sully f220004ece Merge pull request #53 from Snapchat/freeClientLockFix
Fix lock inversion in freeClientAsync
2022-03-29 12:37:12 -04:00
John Sully 7fb077ff2f Fix issue with AE unlocking in beforeSleep 2022-03-29 12:17:13 -04:00
John Sully 8eaede1c61 Fix lock inversion in freeClientAsync - make it not dependent on the AE Lock 2022-03-29 00:19:49 -04:00
John Sully 91b77ccf4c Merge pull request #51 from jsully/keydbpro
KeyDB Pro Collab Bug Fixes and Mac Build
2022-03-08 18:00:28 -05:00
John Sully f73ce412c8 Fix mac build warnings 2022-03-07 19:28:39 -05:00
John Sully 650553255c Fix spurious warnings about unclean RocksDB databases on startup 2022-03-07 16:42:37 -05:00
John Sully f6ec157551 Fix FLASH Read performance after data is loaded from fastsync (the rocksdb files have compression enabled when written by the bulkWrite function 2022-03-07 16:41:51 -05:00
John Sully 6eaefb7895 Fix test instability caused by MVCC slip with lfence command when async commands are enabled 2022-03-07 16:40:56 -05:00
John Sully 6fbf6f8ed1 Fix fast-sync perf issue while server is under load (batch size too small) 2022-03-07 16:40:01 -05:00
John Sully 5df39b56ac Fix cluster test fail 2022-03-07 16:39:01 -05:00
John Sully 4697923f41 Optimize async command snapshot creation, and make slip configurable 2022-03-07 16:00:48 -05:00
John Sully 0d917c8580 Fix mac build breaks and remove license checks (won't work on mac) 2022-03-07 14:50:31 -05:00
Vivek Saini 9ca488bc63 TLS Name Validation (#48)
Added TLS Name Validation
2022-03-03 13:59:07 -05:00
Artem Danilov 7e057b5856 enable TLS build by default (#43)
* enable TLS build by default

* move export to src folder

* fix comments
2022-02-11 16:36:42 -08:00
John Sully e37cb4c925 Merge pull request #42 from Snapchat/keepttl-failure
fix intermittent KEEPTTL test failure
2022-02-10 12:53:59 -05:00
adanilov be0abf08ca fix intermittent KEEPTTL test failure 2022-02-10 16:37:13 +00:00
Vivek Saini 2677899cd4 Merge pull request #40 from Snapchat/tls_cert_rotation
Added support for TLS certificate rotation.
2022-02-02 17:38:35 -05:00
Vivek Saini 2316d787fe Updated CI to run rotation test 2022-02-02 17:28:55 -05:00
Vivek Saini 6f00a680bd Updated default config file with TLS rotation config option 2022-02-02 15:49:52 -05:00
Vivek Saini 9a727f663f Added TLS rotation support 2022-02-02 14:20:19 -05:00
christianEQ df51a33413 Merge remote-tracking branch 'opensource/RELEASE_6' into keydbpro
Former-commit-id: 439c655a543f4d3224d90bcdeb21ba43c2ab8ab7
2022-01-14 22:19:42 +00:00
MalavanEQAlpha 4e2e461acc Merge pull request #386 from EQ-Alpha/fix_rdb_hang
add readwrite lock for forking

Former-commit-id: dabb81960f
2022-01-14 13:19:33 -08:00
christianEQ ec255fea11 bump version
Former-commit-id: 35dc4df1df
2022-01-13 00:07:03 +00:00
christianEQ 6122cce93b Merge branch 'unstable' into RELEASE_6
Former-commit-id: e69f1023a9
2022-01-10 23:54:30 +00:00
John Sully 258291efcc Permit connTLSWrite to handle a zero sized write
Former-commit-id: 4be609ff2c80fd6261edc214bb099d6cf6ab1db3
2022-01-06 19:15:31 -05:00
John Sully ce95ae7800 Handle the case where querybuf data is read by the fastsync read handler
Former-commit-id: c4a5b904e941e09132413abc3b4d86c59c342051
2021-12-27 00:15:09 -05:00
John Sully 88cef73484 Fix partial sync failures
Former-commit-id: 7e9f7c0c4f520392a930ab72951e287f52c711ab
2021-12-26 05:16:58 -05:00
John Sully cc70550e67 Fix repl-psync-flash test instability
Former-commit-id: 310b0cf5413dbf3e7aa67e9b9c31869f3e994291
2021-12-23 17:30:14 -05:00
John Sully d652b13a32 Remove double free in keydb-benchmark
Former-commit-id: b4528b797d
2021-12-23 14:20:41 -05:00
John Sully b38157b581 Fix deadlock issue #183 cause by lock inversion
Former-commit-id: e070651039
2021-12-23 13:17:14 -05:00
John Sully ff5e5f89ed Apple build break fix
Former-commit-id: 7a32ec39fd
2021-12-23 13:12:59 -05:00
John Sully 9f09e3aa9c Fix module test break
Former-commit-id: 50dfee2039
2021-12-23 13:12:34 -05:00
John Sully c03a4e5838 Fix module test failures with blocked clients
Former-commit-id: 18ec4b8600ea3462843b58a0f0e917824dfd7ff3
2021-12-23 02:10:20 -05:00
John Sully f8bf0aa035 Fix partial sync corruption with FLASH
Former-commit-id: 532f58c0539b775c040c0dd9a2ad3dc349faf87a
2021-12-23 00:04:28 -05:00
John Sully bef45f06bf Reenable TCP No Delay
Former-commit-id: e11211cdfeca46574a03f6f8210bbe1ab3d70961
2021-12-22 18:42:11 -05:00
John Sully 03603a2ac6 Fix memory leak
Former-commit-id: c5b9adf47e30658359071d458cfb16a094dc8e28
2021-12-22 18:41:50 -05:00
VivekSainiEQ 45e7b87548 Merge remote-tracking branch 'mainpro/PRO_RELEASE_6' into keydbpro
Former-commit-id: 5a32d66ee382b6d227a67073afc81ca058d605ed
2021-12-06 20:43:23 +00:00
John Sully 3b83248db6 Implent the force-backlog-disk-reserve flag
Former-commit-id: d39f7f4407f8935b1540dd302be3e24ac02c5700
2021-12-04 02:07:03 +00:00
Malavan Sotheeswaran d0e9aab2e7 Merge branch 'fix_unlocked_main_db_access_in_async_lookup' into 'keydbpro'
add async to hget and fix bug where a command can hold a key from main db without lock

See merge request external-collab/keydb-pro-6!11

Former-commit-id: 1cf683ef015f7e32fb79fbb5e41a3c3a80a80844
2021-12-02 17:39:27 +00:00
malavan 8e7d88c514 add async to hget and fix bug where a command can hold a key from main db without lock
Former-commit-id: b0b8f426fda7cdabd3898a2d0b38d0fae47d1e69
2021-12-02 17:11:26 +00:00
malavan c61f8822cf fix potential compilation fail on gettid in replication.cpp
Former-commit-id: edb6b240a7785b707652a168d90f46d8744dd4c7
2021-12-01 20:50:18 +00:00
Malavan Sotheeswaran de40662c85 Merge branch 'async_commands' into 'keydbpro'
async commands

See merge request external-collab/keydb-pro-6!10

Former-commit-id: 669987028af582a8561b7959c1b33b84f67c6146
2021-11-30 17:28:17 +00:00
Malavan Sotheeswaran 7b2b5d0470 missing false for return in prefetchKeysAsync
Former-commit-id: 174dc44acdc1a8cb37b86f27ab056e14fc42770c
2021-11-30 12:20:13 -05:00
Malavan Sotheeswaran 6d8fe4ae50 Merge branch 'async_commands' of https://gitlab.eqalpha.com/external-collab/keydb-pro-6 into async_commands
Former-commit-id: 1afa51c4d21d695c052dbec690bf3880b243dbec
2021-11-30 12:17:46 -05:00
Malavan Sotheeswaran 90fcba1968 Merge branch 'async_commands' of https://gitlab.eqalpha.com/external-collab/keydb-pro-6 into async_commands
Former-commit-id: 59423294524bb1d093a35084aa0d48989b426961
2021-11-30 11:48:35 -05:00
Malavan Sotheeswaran 54f3436250 Merge branch 'keydbpro' into async_commands
Former-commit-id: 9eaddb8ca1424ff3225dac9c144d23848228c7d2
2021-11-30 11:47:51 -05:00
Malavan Sotheeswaran aaf1a42a7b Merge branch 'fastsync_collab' into 'keydbpro'
Fastsync collab

See merge request external-collab/keydb-pro-6!9

Former-commit-id: 8f410e4b814ea6ac506ab540ee1394834fd1d8a8
2021-11-26 20:53:00 +00:00
christianEQ e5b5099eef don't save master if host is null
Former-commit-id: 8238d8da82c483c093f5248b9dac983bc542e20f
2021-11-26 20:36:46 +00:00
Malavan Sotheeswaran 01d54e5e40 Merge branch 'flash-psync' into 'fastsync_collab'
Flash Partial Sync

See merge request external-collab/keydb-pro-6!6

Former-commit-id: 2ebf2a8abd8df5c4cf3a5d759491962d050e8cc5
2021-11-26 18:59:16 +00:00
christian 09f32f19c7 Merge branch 'fastsync_collab2' into 'fastsync_collab'
fix dataloss on aof load with storage provider

See merge request external-collab/keydb-pro-6!7

Former-commit-id: a3aecc171b45308b68eb922947f8dd31be7e3566
2021-11-26 18:28:08 +00:00
malavan 55cc6f797a client lock for fast sync replbuffer, delay fast sync for next replication cron
Former-commit-id: 9fe7f8328d66f9ec57060934462ad85ef60c36aa
2021-11-26 17:46:41 +00:00
John Sully 8bff491912 Implement the disk backed backlog functionality
Former-commit-id: 759cc01c6ba05f9a865c11580cc4975b5f1bd1d6
2021-11-26 03:05:23 +00:00
malavan bbb565abb0 Merge remote-tracking branch 'origin/fastsync_collab' into fastsync_collab2
Former-commit-id: 176c00615769e1a73eb44f8fe7a6cacfa2ae539d
2021-11-24 22:00:18 +00:00
malavan 2ae7247ae7 remove async write from fast sync repl buffer and fix some bugs
Former-commit-id: 6c45706f75d8322281296d9c73a3fac4f7f383a1
2021-11-24 21:59:01 +00:00
VivekSainiEQ 91c758f153 Initialize snapshots for module thread var
Former-commit-id: c263e0df22bab35d8417eb396d250e00e8853ab3
2021-11-24 01:42:01 +00:00
VivekSainiEQ f2e00755e3 Fix failing cluster test
Former-commit-id: 960503a4710d4379d5ebbb67d7ac82705f312913
2021-11-22 22:21:57 +00:00
benschermel 0d2f8218a7 update conf
Former-commit-id: b5b095c12973cdd3eceea8ad8df3961136464a95
2021-11-19 01:46:05 +00:00
benschermel e8bcf8fbac update deb changelog
Former-commit-id: 5169f974b1
2021-11-17 18:22:36 +00:00
benschermel 3a1efa783a update deb changelog
Former-commit-id: a8b215087e9bccf0d813b4b08974744ba963b31c
2021-11-17 18:20:38 +00:00
malavan ef9c1bd074 fix dataloss on aof load with storage provider
Former-commit-id: 447c8601b5203346fdd4b956ad1ac87c4a6073c8
2021-11-16 02:13:36 +00:00
VivekSainiEQ b0c0cd8f8d Removed trial code entirely
Former-commit-id: 540a60eb12d01c2839228f9fdaa6233aed99dc38
2021-11-15 23:56:30 +00:00
VivekSainiEQ 1ab337d760 bump version
Former-commit-id: 2d25e62ece
2021-11-15 23:45:46 +00:00
VivekSainiEQ 32336ec921 bump version
Former-commit-id: d6038f0e063579987874b88bf8a11b5b16dfb33a
2021-11-15 23:43:56 +00:00
VivekSainiEQ 4a093570d0 Removed KeyDB Enterprise Trial
Former-commit-id: 0899ede8db54db80a2cc101412e5dbcaedb706b1
2021-11-15 20:33:54 +00:00
VivekSainiEQ 147abcb3bc Merge branch 'unstable' into RELEASE_6
Former-commit-id: b0b81c60d9
2021-11-15 18:08:01 +00:00
Vivek Saini 440c637c6c Merge pull request #375 from VivekSainiEQ/time_thread_backport
Backport the time thread code from the enterprise version of KeyDB.

Also fix an issue with clustering where connections are potentially written to after being closed.

Former-commit-id: 4b6bdcbcce
2021-11-15 12:57:15 -05:00
John Sully f9d36fb6bc Prevent GC related crash on force-exit
Former-commit-id: e4d95f83b02786b5a170673709780700def160cb
2021-11-13 19:44:13 +00:00
benschermel ab8b7511cd Merge branch 'systemd_rel' into 'PRO_RELEASE_6'
package updates to release branch

See merge request keydb-dev/KeyDB-Pro!54

Former-commit-id: eef6ec1141aafaa5afe52eb2cf501ca4c1e78b8d
2021-11-13 19:36:18 +00:00
benschermel 2056aeaaf7 package updates to release branch
Former-commit-id: 1f198c7ea5926f6f7be630da1e0aadbc8abd10ca
2021-11-13 19:33:45 +00:00
John Sully 6eae02919a Allow load at boot to be cancelled with a shutdown command
Former-commit-id: 2897a59e59bed14a67d1d0abcec5cb6a71bbb15b
2021-11-13 18:39:03 +00:00
benschermel 2b2cf42e11 Merge pull request #377 from EQ-Alpha/systemd_rel
update release packaging

Former-commit-id: 244af9451c
2021-11-13 13:16:48 -05:00
benschermel 81d9257758 update release packaging
Former-commit-id: 639179471e
2021-11-13 17:50:42 +00:00
VivekSainiEQ 7992428583 Merge remote-tracking branch 'opensource/unstable' into PRO_RELEASE_6
Former-commit-id: 60da86471f68b13e2456e113ecd4aa117d95b134
2021-11-12 21:12:53 +00:00
John Sully fa223f4b5a Allow fast sync even if a background save is in progress
Former-commit-id: b98aadfb6875f366a63a9d27d47fb5ca60abaa03
2021-11-12 00:18:32 +00:00
christianEQ 3819331e2e removed unused vars
Former-commit-id: e2bb6242e8be53cdad6def6acdd7e90e0f7d9852
2021-11-11 13:43:20 +00:00
christianEQ 9c75fc3e8f removed unnecessary code to check for metadata
Former-commit-id: 69ffc89d7c27a4eef04aa5cb59ffd1c2b9b8eb20
2021-11-11 13:43:00 +00:00
christianEQ 0dacd68163 added tests for flash psync
Former-commit-id: 79f7376a4fea2de9bd06c06d96f3f98ee7308874
2021-11-11 13:43:00 +00:00
christianEQ a59b192174 save replid from storage on load
Former-commit-id: 8e5d0cb7035db30f35ead36aab52df07ab3c9bee
2021-11-11 13:43:00 +00:00
christianEQ 7f9ab83d24 retrieve replid from IStorage rather than at load time
Former-commit-id: c25323439ce400ca91b2193aa2f464e7b09978fd
2021-11-11 13:43:00 +00:00
christianEQ ebb0e08d94 save master status to storage when masters change
Former-commit-id: 4989926a0028aed7d7700fd1d1f4ed27c20277cc
2021-11-11 13:42:39 +00:00
christianEQ 5219a90483 save and recognize metadata table identifier
Former-commit-id: f06ef757c24ecc50df0e7abf5201a5499ff28c53
2021-11-11 13:41:48 +00:00
christianEQ 39db170c4e add KEYDB_METADATA_ID to metadata tables when created
Former-commit-id: 7fe8a184db62eab171935c20498bdb4f30ee6b1d
2021-11-11 13:41:00 +00:00
christianEQ aa048e2b2f added createMetadataDb to IStorageFactory + implementations
Former-commit-id: a2acf75484d2af93aad9d03a20bd402893044860
2021-11-11 13:41:00 +00:00
benschermel 87a05a7782 Merge pull request #345 from EQ-Alpha/pkg_update_tools
add keydb-diagnostic-tool to packaging

Former-commit-id: 31c0e38d86
2021-11-10 22:16:09 -05:00
benschermel 8e31c59279 Merge pull request #376 from EQ-Alpha/systemd_build
Systemd build

Former-commit-id: 8f5b94c75f
2021-11-10 22:14:24 -05:00
benschermel 3df64e5a42 fix typo
Former-commit-id: d1fc7b96ed
2021-11-11 02:36:20 +00:00
benschermel 18f082e302 update license
Former-commit-id: b253a7aa8d
2021-11-11 02:19:56 +00:00
benschermel 9f0dfd3df8 Merge branch 'unstable' into systemd_build
Former-commit-id: 1625c74a36
2021-11-11 00:59:33 +00:00
malavan d443babbea ignore rdb specific tests when running in --flash mode
Former-commit-id: b44ba3efb21c390c3d199ea1cdd238a57611fd85
2021-11-10 20:46:09 +00:00
John Sully 0b607ecfc3 Fix multiple test failures
Former-commit-id: ba99418643e7b4a12e79bb08e4a7f152da28b861
2021-11-10 18:47:36 +00:00
John Sully 3ab09b9781 Fix compile error on some machines
Former-commit-id: 5f491a38cb7eae63fd316c465f317005bbced385
2021-11-10 17:39:00 +00:00
John Sully 24fbc46352 Prevent track changes from clearing out the cache and misreporting the key count
Former-commit-id: d7ceb59f11bc714e40f208cb8c774a5b762ad41e
2021-11-10 06:40:43 +00:00
John Sully fcad4dfc6b Fix snapshot count mismatch due to race
Former-commit-id: b4175c9bf82cbec047b94403e2a3700f4544b4f1
2021-11-10 05:29:13 +00:00
Vivek Saini b8136b1580 Security fixes (#373)
Fixing potential buffer overflows when using the bitop shift and cron commands, as well as comparing ACL user passwords in constant time.

Former-commit-id: 3c716ee33d
2021-11-09 19:00:01 -05:00
John Sully b12b48ab27 Initial implementation of snapshot fast replication. There are still a few TODOs in progress
Former-commit-id: 0febdcdab8693af443f350968ed3d8c80106675d
2021-11-09 19:36:07 +00:00
John Sully 553f49507d Smooth out performance fluctuations caused by variance in the rehash calibration
Former-commit-id: 09580dedfef09deace7863bf68ba7e0f9edf3eb3
2021-11-06 15:49:58 +00:00
VivekSainiEQ 83b23eafd0 Backported time thread code from enterprise
Former-commit-id: b03eab2a06
2021-11-05 00:30:34 +00:00
John Sully 693e1f64a9 Merge branch 'keydbpro' of https://gitlab.eqalpha.com/external-collab/keydb-pro-6 into keydbpro_collab
Former-commit-id: eca47e8d19defdc894b9dd09b2500d2e15e5fafa
2021-11-02 19:39:53 +00:00
John Sully 9bd7f63ab1 This change fixes out of file descriptor issues with FLASH.
The change does 3 things:
1. It limits RocksDB to 256 file descriptors instead of unlimited
2. It includes the fd limit in its estimation for total file descriptors needed
3. It raises the system fd limit if possible before we open rocksdb but accounting for the 256 limit we added


Former-commit-id: 1447288209c5e7daf8a1203511fc262500ebe5e1
2021-11-02 19:31:53 +00:00
malavan 322ec31191 Merge branch 'keydbpro' of https://gitlab.eqalpha.com/external-collab/keydb-pro-6 into keydbpro
Former-commit-id: 5b88af1067d344f121b2d65e34fb40e229722575
2021-11-02 19:14:47 +00:00
malavan 755e9788ba don't delete db or snapshots on shutdown, still delete storage provider
Former-commit-id: edb840ce10ea77ce654ba27c9eadbf98bbc13403
2021-11-02 19:01:37 +00:00
VivekSainiEQ 591f0c77c4 Check that cluster connection is valid before setting write handler
Former-commit-id: 6a0a005ff2
2021-11-02 17:43:17 +00:00
John Sully 73215b2eeb Make the replica weighting configurable
Former-commit-id: be6a8a7e68acb5cfbe950f13b903e6f7b98c5a39
2021-10-29 17:59:46 +00:00
malavan c48a942ce4 null check for delete override
Former-commit-id: 51216ee433
2021-10-29 15:59:21 +00:00
Vivek Saini 6b8e55ce06 Merge pull request #372 from VivekSainiEQ/Redis_626_Merge
Redis 6.2.6 merge

Former-commit-id: 5f7ca6a2f6
2021-10-28 17:21:14 -04:00
VivekSainiEQ 349d9d2c05 Cast pointer correctly and fixed MVCC not updating correctly
Former-commit-id: 79bdcf0b3d
2021-10-27 17:08:37 +00:00
John Sully d41aa34ba3 Fix slower performance during replication by better balancing client load on threads servicing a replica
Former-commit-id: 496f91d3f169fcfe6d94c2ea69cee402f8eb60ca
2021-10-22 03:16:33 +00:00
John Sully 2d0f54eb8f Merge branch 'COLLAB_RELEASE_6_4' into keydbpro_collab
Former-commit-id: 3d43e7a022250273ee5cfb5755ed1d6ca42b9889
2021-10-21 23:58:32 +00:00
malavan fbe9ff6680 null check for delete override
Former-commit-id: f5f2f5e200a5ff1b0306998624b758d5a4c10825
2021-10-21 23:56:45 +00:00
malavan b7b14ef19f null check for delete override
Former-commit-id: a48b4cbdf24bfa5a1d13295c0202d1ed09115374
2021-10-21 23:50:50 +00:00
John Sully 3f08905408 Do not dereference a nullptr if there are too many files open
Former-commit-id: 4674eb29a261e8b046953398c94354fc3e550c2a
2021-10-21 23:45:46 +00:00
John Sully 7b3337d244 Ensure async rehash completes before we start a new time. Degrad to sync hash if necessary to ensure this
Former-commit-id: 0f830facc7c6bc6668af9bb2e10b6e13a13227aa
2021-10-21 22:46:17 +00:00
VivekSainiEQ a7e7540284 Resolved merge conflicts in prior commit
Former-commit-id: b88f06b16f
2021-10-21 22:35:15 +00:00
VivekSainiEQ b84ee93b5d Merge tag '6.2.6' into Redis_626_Merge
Former-commit-id: e6d7e01be6
2021-10-21 22:33:55 +00:00
John Sully 43a62493f8 Additional change to ensure FLASH storage goes through the multithread path
Former-commit-id: 422ea0723f0b8718f28ef9c1cc4d5f56d374af46
2021-10-20 03:13:36 +00:00
John Sully d57883bf64 Permit prefetch for FLASH scenarios in single thread mode
Former-commit-id: 6d0b90ed43cc9d1196903ddbc7d50cd40e439e42
2021-10-15 16:22:42 +00:00
noobpwnftw b9d171eb32 Fix incorrect counting of client connections
This affects later distribution of clients among threads if there had been many connection attempts during loading phase.


Former-commit-id: 889bcd1bf1
2021-10-12 21:47:15 -04:00
Alexis 2e9f7b5069 Fix alignment of #ifndef USE_ALIGNED_ACCESS
Former-commit-id: 9637887264
2021-10-12 14:27:53 -04:00
jsully 763b349bd2 Merge branch 'multithread_load' into 'keydbpro'
Multithread load

See merge request external-collab/keydb-pro-6!5

Former-commit-id: 20e712244071028b0f75ccad477308efd139261f
2021-10-08 17:55:55 +00:00
John Sully ac22f3c60f disable key cache during load if necessary
Former-commit-id: 68dcf66909e2138da4902bdec98985f4fcd737cf
2021-10-04 07:35:36 +00:00
John Sully 9d78b8bb08 Handle the case where the key cache exceeds maxmemory
Former-commit-id: 01febf902267fec7fe87e6437b0b81fd08b50963
2021-10-04 07:34:05 +00:00
John Sully 86ec032e2c Don't expand the dictionary if a storage provider is set as we won't use the whole thing
Former-commit-id: 1f07b01144397cec59ec2d94f41c85eceb7248e2
2021-10-04 07:33:38 +00:00
John Sully d29df021b1 Use the concurrentqueue for multithread load instead of mutex and cvs
Former-commit-id: d5a59113dbfedaf7b62a650cff58a2e8ec01826f
2021-10-04 07:33:03 +00:00
John Sully 8a2f2bcb91 Add in the concurrentqueue
Former-commit-id: 319cad462be502b0b7a8c45b634d578b2c1c4e9d
2021-10-02 18:27:21 +00:00
jsully 1f323d743f Merge branch 'improve_overwrite_performance' into 'keydbpro'
Improve overwrite performance

See merge request external-collab/keydb-pro-6!4

Former-commit-id: 7e59e889f28e30fca409dfb951c31f8cb47effbd
2021-09-28 18:13:12 +00:00
John Sully 663f0bca3e Revert "Don't zero out potentially long buffers" - It has no benefit above the noise floor and potentially is the cause of a multithread slowdown
This reverts commit 9a9841afb3ffac4ebece0ec911b35ce1fe1c7e35 [formerly 91e76ab4a00546278100baf6dfe61c13e802b40e].


Former-commit-id: f651cf67d731a10c3a52e30261c8d8b9d291576c
2021-09-28 18:08:15 +00:00
malavan 81be792183 add hmset and hmget to keydb-benchmark
Former-commit-id: e05466c362ba01e61cf007ad8bfc26e1af21ec4f
2021-09-23 20:53:27 +00:00
malavan 33c0ae4084 add async tag to hgwtall hkeys hvals hscan
Former-commit-id: 8534de27603bd4cbd10a087840bcb1a90651afa1
2021-09-23 20:18:38 +00:00
malavan cd4864e69e add async lookup to hmget
Former-commit-id: a967b47b60e3f4efbc945dc44a0903f47e07993f
2021-09-23 19:57:18 +00:00
malavan e3c09a2e79 Merge branch 'async_commands' of https://gitlab.eqalpha.com/keydb-dev/KeyDB-Pro into async_commands
Former-commit-id: a19112ec839da4684aeb1a9d1b41906f4c698944
2021-09-23 17:48:33 +00:00
John Sully c1332c89ca Rework the tuning to be better for mixed read/write workloads
Former-commit-id: a4fdd3e3cb41160b20e92e1b1f4f4ebd2ee86a4a
2021-09-23 17:46:56 +00:00
John Sully 48ba79618e Move the snapshot stale threshold to a named constant
Former-commit-id: 46d2aaf17abb0fb021aa6d7b393ffc143493d339
2021-09-23 17:45:49 +00:00
John Sully 0594060e75 prefetch crashes intermittently when a snapshot exists
Former-commit-id: 4a2657023d5d8218c815ce77c2676fd53a634b3f
2021-09-23 17:44:06 +00:00
malavan 1f4c9e6a75 prev_error_count needs to be thread local
Former-commit-id: 4abede1c40db1dfb4235b9aa1e3177678c5304b1
2021-09-23 17:41:28 +00:00
John Sully 938d318596 Async commands incorrectly think they are dirty
Former-commit-id: 4874247931425767156ab3da934c00a4d4832bcf
2021-09-23 05:24:28 +00:00
John Sully 4a0b8534f4 Create snapshots less often, and use them if they exist
Former-commit-id: ba8a00074171d346813247de0b218e08c8f07b92
2021-09-23 00:19:52 +00:00
John Sully c3e01cbf9e Clients should initialize with an mvcc checkpoint
Former-commit-id: 5183cb721774be1b769d130359e4bddb1eb8224b
2021-09-23 00:15:47 +00:00
malavan ef1ca1be9b update expire tests for async commands
Former-commit-id: 088ecd30a7b360e63d701f811f2fc0b9d77f5eb0
2021-09-22 21:49:30 +00:00
malavan b16b003c13 make keyIsExpired check earlier on async read
Former-commit-id: 32dbfbb3a69681553b65afa2d05ea47058833550
2021-09-22 21:16:36 +00:00
malavan dd2d3aca1e remove unneeded mgetCore function
Former-commit-id: 7961d4253b5a356e24d17ab07ac79ba1bf191efd
2021-09-22 21:15:47 +00:00
malavan f9b88a79ce check if key is expired for async lookup
Former-commit-id: d4e3a2688e903fe426e791f8608495fca1c76df6
2021-09-22 19:30:38 +00:00
malavan acfa705d48 Merge branch 'async_commands' of https://gitlab.eqalpha.com/keydb-dev/KeyDB-Pro into async_commands
Former-commit-id: 393add1f3d70f7d1e09ecbce60c65508bc06394d
2021-09-22 19:28:37 +00:00
John Sully e155bbc873 We can't evict in an async command
Former-commit-id: 39c2903cbca08c2dbfc3275f83d65e6360c61651
2021-09-22 19:26:30 +00:00
John Sully 978c578433 We returned too early and didn't set the mvcc
Former-commit-id: d8e2ffe538a6b237529c37cb142a7076dd4836f8
2021-09-22 19:25:57 +00:00
John Sully 4cd25093a4 We can't do a command async if there are monitors because we need the lock
Former-commit-id: c5b6ade51251a3f57b69d1f3d9c22b199ec00a69
2021-09-22 19:24:39 +00:00
malavan 14914df0c8 Merge branch 'async_commands' of https://gitlab.eqalpha.com/keydb-dev/KeyDB-Pro into async_commands
Former-commit-id: d6cc79a80d0bd22c99e3ea21740c89870cfb235b
2021-09-21 22:00:33 +00:00
John Sully 19175ed885 Make tests deterministic and fix an issue found
Former-commit-id: fd00f39f3ca11053a5c99ab52daa1f9a051b7058
2021-09-21 21:59:19 +00:00
John Sully efbc9b3c7e Improve low load latency
Former-commit-id: f5ac2432cf58c697a6da101d63423679cbd08021
2021-09-21 21:15:21 +00:00
malavan 8a54bf38fc add mget to keydb-benchmark
Former-commit-id: 6bd15f65c46f570f66d58bd759e1c595006d783a
2021-09-21 20:57:08 +00:00
John Sully dcbd4c547f Make async commands runtime configurable
Former-commit-id: 23bafb5f7c3c9805581f4bf09d9d5136898c2883
2021-09-21 20:49:44 +00:00
John Sully cf85a9cd02 Initial implementation of async commands
Former-commit-id: 0d3a4ce7e60c42b2d81962f13100bd1789bf64a8
2021-09-21 20:43:16 +00:00
John Sully 4d605bea02 Unify job types so everything is processed in order
Former-commit-id: 625aa97e4cf16337e8b052b7a27491a0ab09110f
2021-09-17 17:27:19 +00:00
Malavan Sotheeswaran 27bf624bae Merge fix to dict resize during rdb load
Former-commit-id: c398d5f8a027c67acac64bdbfbd01486dde555eb
2021-09-17 16:10:48 +00:00
Maxime de Roucy d7efbd0c4e syslog: enforce syslog identity and facility as soon as possible
Former-commit-id: a9eaf0a130
2021-09-16 17:29:55 -04:00
Maxime de Roucy 3078d08c04 use LL_… log level instead of syslog LOG_… log level
Else there is an out of bound access in syslogLevelMap.

For example if we use `serverLog(LOG_INFO,…`, later in the code
it tries to access `syslogLevelMap[LOG_INFO]`.
LOG_INFO == 6 but syslogLevelMap only have 4 elements.


Former-commit-id: a1680fa612
2021-09-16 17:29:07 -04:00
malavan 765885bd7b if statement was actually correct
Former-commit-id: d44b99afdf1ec92f8a36f0c091c37328008d867b
2021-09-14 17:17:08 +00:00
malavan 34396255a2 the if statement was actually correct
Former-commit-id: 8e4d1ceb859b3440bdec525ff7b8ed4aef86f4b8
2021-09-14 17:15:44 +00:00
malavan 86784fe9ba improve overwrite key performance
Former-commit-id: 56f9d5528385ea78074a308c6d3987b920d6cc35
2021-09-14 17:06:04 +00:00
malavan 3c7c11539c missing brackets in databasesCron rehash check
Former-commit-id: f2f0d5287edda676a514cbc02172bb874569016b
2021-09-14 02:03:18 +00:00
John Sully 8210d67c24 Don't zero out potentially long buffers
Former-commit-id: 91e76ab4a00546278100baf6dfe61c13e802b40e
2021-09-10 00:40:08 +00:00
John Sully f695e2e26c In single thread mode don't batch
Former-commit-id: 7daadae789cdca6f0eb0c3f553737d4f8efc0566
2021-09-10 00:39:47 +00:00
John Sully 9483ff082c Don't zero out potentially long buffers
Former-commit-id: 99eb47e129a3cd555914d4816febb02f0058253a
2021-09-10 00:38:49 +00:00
John Sully 1b02987b0c In single thread mode don't batch
Former-commit-id: b1cb230690a584b8bfe7f433fc0ca0320877ebd3
2021-09-10 00:38:08 +00:00
John Sully 6a3294ab7b Merge branch 'keydbpro' of https://gitlab.eqalpha.com/keydb-dev/KeyDB-Pro into keydbpro
Former-commit-id: 026e939db2897701d936487ca30dd1c30feb299b
2021-09-09 19:35:08 +00:00
malavan a8a550a911 Merge branch 'keydbpro' of https://gitlab.eqalpha.com/keydb-dev/KeyDB-Pro into keydbpro
Former-commit-id: f0025394aed6f72a8c678be0da7c42d5e4fad1d9
2021-09-08 21:16:41 +00:00
malavan a15352fc8a add command arg to clientArgs helper
Former-commit-id: b6f388ee3bd269bd8373ea16adb379ec6922ee0a
2021-09-08 21:16:04 +00:00
jsully d1e0684393 Merge branch 'async_mget' into 'keydbpro'
add async mget

See merge request keydb-dev/KeyDB-Pro!38

Former-commit-id: e315b39f4779d530f5ab93e1f15915211e6706e2
2021-09-08 19:08:23 +00:00
benschermel 77ecd63dc2 update deb packaging to build with systemd flag
Former-commit-id: d7bd4f7a1c
2021-09-08 02:28:17 +00:00
John Sully 44d1b90757 Merge branch 'keydbpro' of https://gitlab.eqalpha.com/external-collab/keydb-pro-6 into keydbpro_collab
Former-commit-id: 067acbbfd5eb0c2b4515a5d2cc87970870a88acb
2021-09-03 17:20:54 +00:00
malavan 35e5e85d95 don't use flags that aren't supported by certain versions of OPENSSL
Former-commit-id: ca7342948fb12804905219ae106b4722368e9a2f
2021-09-02 19:06:35 +00:00
malavan 570224a2c4 Remove duplicate code
Former-commit-id: a4c3182afb71a0d7d6d25111c0e0cfe5dcfc6130
2021-09-02 19:06:12 +00:00
malavan 286e9cccdc updates from comments
Former-commit-id: 852885f09e7df1d9570408546baffa8545707335
2021-09-01 21:00:27 +00:00
malavan b300551862 refactor asyncCommand
Former-commit-id: 6af5775e01872f130bc18791fdb4c0b22507b37f
2021-09-01 20:18:41 +00:00
jsully 7d453dd980 Merge branch 'add_storage_provider_data_to_INFO' into 'keydbpro'
add stats for storage provider reads

See merge request keydb-dev/KeyDB-Pro!39

Former-commit-id: 07bb08a8bc89350f4addb9dfd77435217c6b46d5
2021-09-01 19:21:05 +00:00
John Sully 6e7c4cbf17 We need to send keepalives to masters while waiting to prevent disconnects
Former-commit-id: 7cbd6758b1042198c14ca9e8da0f1f7bc05df93d
2021-09-01 04:15:59 +00:00
John Sully f3fb4e3209 Don't be in tracking mode during load as processChangesAsync works outside the normal system
Former-commit-id: 8d31ce6eafea1cea2f9f4ea25e44306efef28fa3
2021-09-01 04:15:28 +00:00
malavan 3bd777bf55 remove unused variable names
Former-commit-id: 18d688c2f04a8ce67409bd4442c7635d426fc0ac
2021-08-31 20:03:55 +00:00
malavan 7ee39396c0 add method to get client args as list
Former-commit-id: 576b8cd2153c48c0ca4dfc9ed7d12f77d6f76f7e
2021-08-30 21:09:22 +00:00
malavan 89e6442c09 add stats for storage provider reads
Former-commit-id: 612393ffba43cda31443605de924dc8dcf77ef52
2021-08-26 19:45:33 +00:00
malavan 0baa543819 add correct thread assert to client::asyncCommand
Former-commit-id: a892fb4d551fb58d619bc80c333a6b3a9ed34215
2021-08-26 14:23:13 +00:00
malavan b92c0e8d5c add correct thread assert to client::asyncCommand
Former-commit-id: 8970f832348a80db6c183d25c4a5342a258a6ba9
2021-08-26 13:58:12 +00:00
malavan 1b074c3983 refactor scan to use client::asyncCommand
Former-commit-id: 4de596631f48626b770d0217c7ff21001ea46bcf
2021-08-26 13:55:32 +00:00
malavan 6175535d54 refactor of asyncCommand to include snapshot creation
Former-commit-id: c0908362162b5f2834b90cd9ce84fd1ee6768834
2021-08-26 13:10:59 +00:00
malavan 7451f1738a change indentation and increase async mget threshold
Former-commit-id: ffaa176d5eafabfae372224c790e99dd9e520fef
2021-08-25 22:15:28 +00:00
malavan dcd3d47f7f refactor async to offload common code to client
Former-commit-id: 9a7547bfaa0ceff76e604262913fb11a64c627d8
2021-08-25 20:06:06 +00:00
malavan cb8f55c057 Merge branch 'keydbpro' into async_mget
Former-commit-id: ae34d0b6324ebd9d2d52342c06b3fd49f110210c
2021-08-25 19:37:33 +00:00
jsully dd9e0ab9c3 Merge branch 'upgrade_rocksdb' into 'keydbpro'
upgrade to latest version of rocksdb

See merge request keydb-dev/KeyDB-Pro!34

Former-commit-id: 74c39b237ee0f9ff98a6cc8e3e4fbf70a3ee00ac
2021-08-25 19:08:19 +00:00
malavan 6494142866 update gitlab ci to work with facebook repo instead of ours
Former-commit-id: 2745277e7591076373e2dfd4eef8c1412cffffbc
2021-08-24 22:07:21 +00:00
malavan 7d693c3665 use latest stable version
Former-commit-id: 792f72cb513fc6db58d824649478ee36d47631eb
2021-08-24 22:00:52 +00:00
malavan aaadb0ce38 Merge branch 'keydbpro' into upgrade_rocksdb
Former-commit-id: 1bf9d7e749e7007f1309f3e57e366122fdbacbac
2021-08-24 21:54:01 +00:00
malavan 6f7283c065 add async mget
Former-commit-id: c7bd2327f8e4330e2bcd857fc87ce7e86e075d20
2021-08-24 21:44:17 +00:00
malavan 9bedb29fb6 add a few more flash tests
Former-commit-id: b19fdc23a9a39ae718580feae5049f6906caec28
2021-08-23 21:30:16 +00:00
benschermel d634b09864 fix service install
Former-commit-id: c43cec74178d8bf35143f3f4148dbe3c37a75f90
2021-08-23 18:41:43 +00:00
malavan a1bbb17a5d newest version of rocksdb
Former-commit-id: e384baa62e50a5caa0cdc779f2b8554ce8d8b375
2021-08-23 17:04:01 +00:00
benschermel 50394ce5f9 fix service install
Former-commit-id: 41bf39f6e92beb8ab55ec0e7652154bc43d48774
2021-08-23 03:39:16 +00:00
benschermel 37cd24866a update pkg conf file
Former-commit-id: f87945cbbd2a475394f584b09b15c2c19db5e9bd
2021-08-22 22:29:42 +00:00
benschermel ebbf84fb15 update pkg conf file
Former-commit-id: 2a2ae61f07ecea8a178f4bc478bb7786d5be27d9
2021-08-22 22:28:18 +00:00
benschermel eb9b09c311 update pkg conf file
Former-commit-id: 0be40b9fd4
2021-08-22 22:21:34 +00:00
benschermel b8bb658e47 update pkg conf file
Former-commit-id: 03a52dade1
2021-08-22 22:18:22 +00:00
Malavan Sotheeswaran 31f9ab610c Merge branch 'keydbpro' into 'PRO_RELEASE_6'
Keydbpro

See merge request keydb-dev/KeyDB-Pro!37

Former-commit-id: e6a130e4a02b3d0cc2fcaeb0ab24e23cb60a7181
2021-08-19 19:11:04 +00:00
malavan ab3eec4d59 Merge branch 'keydbpro' of https://gitlab.eqalpha.com/keydb-dev/KeyDB-Pro into keydbpro
Former-commit-id: 4059f9c2396f0fa517ac2946ad5f0e45039c00e6
2021-08-19 18:24:29 +00:00
malavan 0abda4443a switch to new patch of rocksdb that fixes archlinux build
Former-commit-id: e2e5b5320e5c1b89ec2a3f946826097b819f6593
2021-08-19 18:24:01 +00:00
Malavan Sotheeswaran df6aeee332 Merge branch 'patch_rocks_db' into 'keydbpro'
public copy of rocksdb

See merge request keydb-dev/KeyDB-Pro!36

Former-commit-id: 4421396764688f7df2c967974f6a3b5dca28e3f5
2021-08-19 18:08:16 +00:00
Malavan Sotheeswaran 0a37b2b933 Merge branch 'keydbpro' into 'patch_rocks_db'
# Conflicts:
#   .gitmodules

Former-commit-id: aec26e46d3b3617a57edd42d996f7598de5bfe4e
2021-08-19 17:57:52 +00:00
malavan 4d72668045 use --init instead of git submodule init
Former-commit-id: 967866c56c9d4590d72c63169d0e3c32c21b24e0
2021-08-19 17:47:23 +00:00
malavan 9192272cd8 use --init instead of git submodule init
Former-commit-id: e5582ddf313a6bdd2ae0cb68da980954caf83e1b
2021-08-19 17:45:37 +00:00
malavan 76ce7ae47a add branch for git submodule
Former-commit-id: b4471308f1cf99b0a5a4c8c8da8ccf9546123e3f
2021-08-19 17:42:52 +00:00
malavan 1ad621db0f public copy of rocksdb
Former-commit-id: 50bbadcab6d2911fb9cbe15aef03c9762aa91280
2021-08-19 17:22:09 +00:00
Malavan Sotheeswaran dd0de078bc Revert "Merge branch 'patch_rocks_db' into 'keydbpro'"
This reverts merge request !35

Former-commit-id: 8ee1c251de5687fdcf8af740766d2968163bc8e9
2021-08-18 22:47:38 +00:00
Malavan Sotheeswaran d80fc585db Merge branch 'patch_rocks_db' into 'keydbpro'
Patch rocks db, switch to private clone of rocksdb

See merge request keydb-dev/KeyDB-Pro!35

Former-commit-id: 08155fa62332a9e9d3046796cb378e04405c6ca7
2021-08-18 22:07:56 +00:00
malavan 9158411101 use our own clone of rocksdb
Former-commit-id: 1de8a88679faa94d14875655305e6102289556a0
2021-08-18 21:53:55 +00:00
malavan d7bcea1fe2 use our own clone of rocksdb
Former-commit-id: 0aeceb2a8c487eea43d47497647d4e38a3478ca7
2021-08-18 21:46:16 +00:00
MalavanEQAlpha fd5f0b8ebe Merge pull request #313 from MalavanEQAlpha/fixissue295
Resolve Issue #295 by speeding up keyIsExpired and setting timeout on subkey expires.

Former-commit-id: 9e5e6c2f86
2021-08-18 17:34:18 -04:00
malavan 67300040f7 should use LLONG_MAX for INVALID_EXPIRE not LLONG_MIN and add better comments
Former-commit-id: 1ab19b445f
2021-08-18 20:59:01 +00:00
malavan 09d8acd9fb patch rocksdb to fix archlinux build
Former-commit-id: b3c6e4f6353935545dca73cbc103fac9f3da7c42
2021-08-18 20:13:53 +00:00
VivekSainiEQ af217ab261 Include gperftools/tcmalloc.h instead of google/tcmalloc.h
Former-commit-id: ee32ed045c
2021-08-18 15:40:09 -04:00
John Sully ae7a09c508 Solo tests should work with loopn
Former-commit-id: 82ba449dd0
2021-08-18 15:08:10 -04:00
malavan 8673045ac6 upgrade to latest version of rocksdb
Former-commit-id: 9272e412acecc7d032c6299fb815c84c15fb0e2d
2021-08-18 15:18:51 +00:00
benschermel cfc4ff96d3 add keydb-diagnostic-tool to packaging
Former-commit-id: 971725cc8c
2021-08-16 23:21:07 +00:00
malavan 7686b09b39 Remove duplicate code
Former-commit-id: 9b7febb538
2021-08-16 22:55:46 +00:00
malavan fd84a41aba don't use flags that aren't supported by certain versions of OPENSSL
Former-commit-id: fae6bfb80b
2021-08-16 22:55:46 +00:00
malavan ce23ead7a8 Remove duplicate code
Former-commit-id: 046df30861b73f796a7819d8a9ffe6bd68b7e910
2021-08-16 22:53:00 +00:00
malavan e277a2f8f0 don't use flags that aren't supported by certain versions of OPENSSL
Former-commit-id: 1ae9af250513d1430160b37d24ba617551402926
2021-08-16 22:49:55 +00:00
malavan 4d140a4314 Merge remote-tracking branch 'origin/keydbpro' into PRO_RELEASE_6
Former-commit-id: 11214acb5aff8af1e09a64ee2db71357899a9bf7
2021-08-16 22:49:18 +00:00
Malavan Sotheeswaran 76d98f6c6d Merge branch 'pkg_update_tools' into 'keydbpro'
add diagnostic tool to packaging

See merge request keydb-dev/KeyDB-Pro!33

Former-commit-id: f87960ac26a710ed1a014a93e47740db1a81a07f
2021-08-16 22:44:53 +00:00
Malavan Sotheeswaran 3a0aa6be9b Merge branch 'add_asyncFreeDictTable_to_diagnostic_tool' into 'keydbpro'
add asyncFreeDictTable tokeydb-diagnostic-tool.cpp to avoid linker error

See merge request keydb-dev/KeyDB-Pro!32

Former-commit-id: 0a253222359454f233b82c8aaff7c2d9ab57e571
2021-08-16 22:44:43 +00:00
Malavan Sotheeswaran 22cc61345b Merge branch 'pkg_config' into 'keydbpro'
update packaging config files

See merge request keydb-dev/KeyDB-Pro!31

Former-commit-id: d6bce861e5bafa30d1cc31d1856c75f6e492d454
2021-08-16 22:42:29 +00:00
benschermel ad18db98b5 add keydb-diagnostic-tool to packaging
Former-commit-id: 45bb6e801f
2021-08-16 22:10:31 +00:00
benschermel 40af58026a add diagnostic tool to packaging
Former-commit-id: 37c3ca16162bd8a97ef35e2104ff5dc0ed6d7e48
2021-08-16 21:59:59 +00:00
malavan 6f5c6bcaf1 add asyncFreeDictTable tokeydb-diagnostic-tool.cpp to avoid linker error
Former-commit-id: 6b1509932f592ffffb9dd5d06de7f313d44e4394
2021-08-16 21:35:52 +00:00
malavan 315ee2f51b Merge remote-tracking branch 'opensource/RELEASE_6' into PRO_RELEASE_6
Former-commit-id: 4505b3caa94ea0366014fabcbdb36850f7b60be7
2021-08-14 04:04:05 +00:00
MalavanEQAlpha 908a0053d5 Merge pull request #344 from EQ-Alpha/fix_pbuild_ubuntu18.04
don't use flags that aren't supported by certain versions of OPENSSL

Former-commit-id: 1b73bc76c0
2021-08-13 23:59:50 -04:00
malavan 3c157023bc don't use flags that aren't supported by certain versions of OPENSSL
Former-commit-id: 0bfd2ea8a6
2021-08-13 20:02:06 +00:00
malavan 3da2de685c Merge branch 'RELEASE_6' of https://github.com/EQ-Alpha/KeyDB into RELEASE_6
Former-commit-id: 11c6d585ca
2021-08-13 15:46:24 +00:00
malavan 7f8b58e376 Remove duplicate code
Former-commit-id: 2911145df7
2021-08-13 15:46:09 +00:00
christianEQ c89e0f711a install 32bit libraries in github action
Former-commit-id: b08aa26a76
2021-08-13 11:05:12 -04:00
christianEQ ef2c490b52 github runner for 32bit build
Former-commit-id: 8dacbed556
2021-08-13 11:05:12 -04:00
christianEQ 166faa8988 changed keys counter variable to unsigned to fix signedness comparison warning
Former-commit-id: b44df43fcb
2021-08-13 11:05:12 -04:00
christianEQ 9b24998e1b %zu for printing type size_t
Former-commit-id: 84af829053
2021-08-13 11:05:12 -04:00
christianEQ 8d01244594 fixed 32bit compatibility in Makefile
Former-commit-id: f5ee64f9aa
2021-08-13 11:05:12 -04:00
christianEQ cbf83d5eff fixed overly strict assert for 32bit
Former-commit-id: ce4891b33d
2021-08-13 11:05:12 -04:00
benschermel 033fb4a612 update deb master changelog
Former-commit-id: afd8ac5c38
2021-08-13 00:49:41 +00:00
benschermel 5528b75555 update deb changelog
Former-commit-id: d919317ac338a9bfa2e8de7338fcf08a51e31dd1
2021-08-13 00:48:45 +00:00
benschermel 32e6ec97fe bump version
Former-commit-id: 7260ebf5c1
2021-08-13 00:40:46 +00:00
benschermel f082cdb9fe bump version
Former-commit-id: af0769c1a917e9b17dda15b5aca6efdb958bfce4
2021-08-13 00:35:19 +00:00
malavan 5b115b56a1 bump version
Former-commit-id: aae676dc7d
2021-08-11 23:23:39 +00:00
malavan 677cceea57 bump version
Former-commit-id: d923003969be0ecb507bea0acc643ccdf06f8831
2021-08-11 23:22:17 +00:00
malavan 4ed2a52546 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 6b385bc057d8a01ed57a6c0d89eb30e9832fe1ca
2021-08-11 21:20:47 +00:00
malavan 9f1f29543f Merge remote-tracking branch 'opensource/unstable' into keydbpro
Former-commit-id: cf40fa5da29ba9574d20d706d0a41ca7001df95a
2021-08-11 20:41:54 +00:00
malavan 007bd5084b Merge remote-tracking branch 'origin/unstable' into RELEASE_6
Former-commit-id: 16897d36b8
2021-08-11 19:59:28 +00:00
MalavanEQAlpha 89d6d9632f Merge pull request #318 from VivekSainiEQ/redisearch_fixes
Initialized serverTL in more places in module.cpp

Former-commit-id: ffa46b8f0b
2021-08-11 15:47:30 -04:00
Vivek Saini 8b013dc597 Merge pull request #296 from VivekSainiEQ/systemd_fix
Fixed bug where make USE_SYSTEMD=yes would not pass in correct flags

Former-commit-id: bf05c261d2
2021-08-11 15:39:50 -04:00
VivekSainiEQ e0bdb4fca6 Merge remote-tracking branch 'upstream/unstable' into redisearch_fixes
Former-commit-id: 952ae9fbe3
2021-08-11 19:28:04 +00:00
VivekSainiEQ 72e02159f4 Prevent invalid mvcc timestamps from causing critical errors
Former-commit-id: 6f2dbb0011
2021-08-11 15:06:14 -04:00
Paweł Sacawa 39dccbbf21 Add: zsh completions with descriptions
This commit add zsh completions for the keydb `client`. They have contextual host completion and full argument descriptions.
Vendor-distributed completions for zsh should end up in `/usr/share/zsh/vendor-completions`, but unfortunatly I'm not familiar with the packaging method for *.deb archives, so these completions will need to be moved to the appropriate directory.


Former-commit-id: f77980fce8
2021-08-11 15:05:11 -04:00
MalavanEQAlpha 31cb587b27 Merge pull request #340 from EQ-Alpha/update_keydb.conf
update keydb.conf with new configs from redis unstable

Former-commit-id: d90c1e6eae
2021-08-11 15:04:22 -04:00
MalavanEQAlpha 97a47446b8 Merge pull request #341 from EQ-Alpha/pkg_config
update packaging config files

Former-commit-id: d987f463eb
2021-08-11 15:01:37 -04:00
John Sully 14ab4823f0 Merge branch 'keydbpro_collab' into multithread_load
Former-commit-id: f36e9efd8e0079650c78e1e8c19c5fa8553c8251
2021-08-11 02:54:02 +00:00
John Sully 1a66c5fdab Fix crash loading RDB on start with a storage provider set
Former-commit-id: ace6a44399a15ab48a7ef798dc656dbc1207b58d
2021-08-11 02:53:44 +00:00
John Sully c6a0c7b04f Fix crash in load with storage provider set
Former-commit-id: 6990818b7ca647819b50ae04224778e6f8f12a1a
2021-08-11 01:19:39 +00:00
benschermel 5a1a712ec6 add script to compare all active config parameters of any 2 config files
Former-commit-id: 89beaf2460
2021-08-10 20:10:28 -04:00
benschermel cc5528a8e2 update packaging config files
Former-commit-id: 0c5d12b914
2021-08-10 20:08:39 -04:00
benschermel c5f15b645a add script to compare all active config parameters of any 2 config files
Former-commit-id: b873f90dc1f0f9343bc5c8c3c94a544b5f1f7321
2021-08-10 20:06:59 -04:00
benschermel 9876458177 update package config files
Former-commit-id: fd367a91cc0feb22b67f034627d59feb679b81e8
2021-08-10 20:04:30 -04:00
malavan 000e36f605 update keydb.conf with new configs from redis unstable
Former-commit-id: 32ca2e8a73
2021-08-10 21:34:52 +00:00
malavan 02d3141e75 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: a1b8103f429a319e19ca8144f8442905530d7ed8
2021-08-09 22:15:44 +00:00
John Sully c77ce968c5 Merge branch 'keydbpro_collab' into multithread_load
Former-commit-id: 8016c20f1f9a648e658c816e2f6777c5718d5e19
2021-08-09 20:20:34 +00:00
malavan 0b752dd4e0 Merge branch 'unstable' into RELEASE_6
Former-commit-id: 4705235739
2021-08-09 18:17:11 +00:00
Malavan Sotheeswaran 5923d49d8d Merge branch 'add_ci' into 'keydbpro'
Use artifacts to speed up pipeline

See merge request keydb-dev/KeyDB-Pro!30

Former-commit-id: 2b377364d0df4779cf5fef75d30853e1dab73638
2021-08-06 02:20:18 +00:00
Malavan Sotheeswaran 374ec0437b Use artifacts to speed up pipeline
Former-commit-id: 37ad7b3567aaefa7785eb50e1370db4734605e4c
2021-08-06 02:20:18 +00:00
Malavan Sotheeswaran 9541358630 Merge branch 'fix_shrink_on_rdb_load' into 'keydbpro'
add noshrink flag to stop dict from shrinking during mass insertions

See merge request keydb-dev/KeyDB-Pro!28

Former-commit-id: 41241189cb0238b240b2f894f77ae254e49770ac
2021-08-05 20:07:31 +00:00
Malavan Sotheeswaran e2abe4f1a0 add noshrink flag to stop dict from shrinking during mass insertions
Former-commit-id: 5e0c994ec82f4adb437a31f8d89eee7a09145576
2021-08-05 20:07:31 +00:00
Malavan Sotheeswaran 81639cd0a6 Merge branch 'add_ci' into 'keydbpro'
remove duplicate rules and fix duplicating pipelines

See merge request keydb-dev/KeyDB-Pro!29

Former-commit-id: 8e458fb4bed27f653a3630e15aa9c637b2915f62
2021-08-04 15:00:18 +00:00
malavan 2c65ef7a84 disable node redis for now since it does not work with redis 6.23
Former-commit-id: 6bd93684b6078782fc40973b253f1534d79888c1
2021-08-04 01:50:55 +00:00
malavan 2be6b9576e remove duplicate rules and try to fix double pipelines
Former-commit-id: 0f504408042670f3ead2e1522dcbbae7c4c3b62c
2021-08-04 01:44:47 +00:00
Christian Legge 7015a2abd2 Add REPLPING command for use during replication (#329)
* added replping command for initiating replication

* backwards compatibility for replping (retry if not recognized)

* don't allow ping during loading (load balancer fix)

* changed replping warning to notice

Former-commit-id: d7f6bc1614
2021-07-29 15:50:30 -04:00
malavan b32fe9eab5 don't create pipeline on every push
Former-commit-id: fb4bb008856c3e685afb470617a1ab3579ee63a8
2021-07-28 22:52:50 +00:00
Malavan Sotheeswaran ae8d015036 Merge branch 'add_ci' into 'keydbpro'
make make test multithreaded

See merge request keydb-dev/KeyDB-Pro!27

Former-commit-id: 7cb619601d110962ef061b99425ab03d914929c8
2021-07-28 22:23:54 +00:00
MalavanEQAlpha 7e08a9001c Merge pull request #328 from EQ-Alpha/backtrace_for_alpine
Backtrace for alpine using libunwind

Former-commit-id: 83d878f111
2021-07-28 17:17:06 -04:00
malavan 54f40aff81 add some comments
Former-commit-id: 0fc6441c96
2021-07-28 20:32:18 +00:00
John Sully aef0bd877f Fix issue collab #32
Former-commit-id: 0d192cf00ebe9fc0d898404b86e1173476edaefb
2021-07-26 22:30:31 +00:00
John Sully a8685235c3 Initialize el so we can detect if it is null
Former-commit-id: ec0f833ea17c668971893aa8f198d22da2e1d289
2021-07-23 19:31:22 +00:00
John Sully 9e8a28c0ed We cannot create time events on threads that don't have an event loop
Former-commit-id: 3812586a41bb7f974b5d9820c8a68ff34ee8aa9a
2021-07-23 16:02:57 +00:00
John Sully e3df237f39 We cannot create time events on threads that don't have an event loop
Former-commit-id: 4c88a4ee0e86f6e1c9b18733e48ce50751d01e45
2021-07-23 16:02:29 +00:00
malavan 69f3e7c802 remove duplicate function
Former-commit-id: 81cf9979ed
2021-07-21 16:00:24 +00:00
malavan 99a165e0f6 add stacktrace message
Former-commit-id: 5be1620629
2021-07-19 23:17:18 +00:00
John Sully ea19d31df8 Merge branch 'keydbpro' into keydbpro_collab
Former-commit-id: e4e5c6696c6d831924f314a198b266b10d831e14
2021-07-19 20:51:27 +00:00
John Sully bacaa204cf Disable async rehash during load as it interferes with eviction
Former-commit-id: 54b4f39e9d634bf53b04cd94433b051b14323bc6
2021-07-19 18:17:54 +00:00
John Sully 345ec75a36 We need to free in order since the first big async free is likely the largest, so don't set the hipri bit
Former-commit-id: 76a9cefa94e0f446e12a690909cbda15d03ca211
2021-07-19 18:01:39 +00:00
malavan 16f361abf6 dd comment and set eip unused
Former-commit-id: 685b87e2ef
2021-07-19 17:32:38 +00:00
malavan 70cb3267de dd comment and set eip unused
Former-commit-id: 72429c2106
2021-07-19 17:31:24 +00:00
malavan 9e411426f2 dd comment and set eip unused
Former-commit-id: 7707fe15a9
2021-07-19 17:29:43 +00:00
malavan abf2114117 add backtrace for alpine using libunwind
Former-commit-id: c583ffff41
2021-07-19 17:20:52 +00:00
malavan fedf45675c Merge branch 'add_ci' of https://gitlab.eqalpha.com/keydb-dev/KeyDB-Pro into add_ci
Former-commit-id: 82438d8332e4f23c67df17f888b87aff04a46363
2021-07-19 17:01:17 +00:00
malavan 697f17f91d split up runtests
Former-commit-id: 93e36a064033dc55fe281fe113425b33cf42b2c3
2021-07-19 16:59:03 +00:00
John Sully 88f5bf1d90 We need to periodically flush the GC or we'll end up blocking with a huge backlog at the end of load
Former-commit-id: 29c0bf79ad1a810e808790de2f7db24f3cc603e8
2021-07-19 16:50:48 +00:00
Malavan Sotheeswaran 105fc01d39 Merge branch 'keydbpro' into 'add_ci'
# Conflicts:
#   .gitlab-ci.yml

Former-commit-id: 828924d67d622483fccf570649fc81aa3d78673b
2021-07-19 16:16:36 +00:00
malavan e11d7f25d1 change make test to multithreaded
Former-commit-id: 8f2bae851f2aa7c2600a487733a82850d6552882
2021-07-19 15:52:33 +00:00
John Sully d3793efb33 Info command should show how many keys are cached in RAM vs storage provider
Former-commit-id: 08597bee69bc16ca7c3d5ff31020472774c6eec9
2021-07-19 15:11:33 +00:00
John Sully 614860ce3c StorageCache dtor leaks
Former-commit-id: 0262c4dc76a320141b8a4454df2f6baab4f74ab3
2021-07-19 15:10:48 +00:00
John Sully 4000334b1f Do not resize replica buffer past the max client limit
Former-commit-id: ba116500ca4fd53e4e40f04fc33981e60bb21ab7
2021-07-18 20:48:08 +00:00
John Sully 5f72ce9317 Return the ring buffer to its original size if we temporarily resized it
Former-commit-id: a12ce4a0d105bf7d6ccff95f7dc0044c4676b0a7
2021-07-18 20:45:32 +00:00
John Sully 0b220bddc7 Do not update batch variables when not in a batch
Former-commit-id: ad1e0286cf9b2d9de33c65e8e798a05ead3f7d5a
2021-07-18 20:28:42 +00:00
Christian Legge d05333bf53 Merge pull request #321 from EQ-Alpha/ci-flags-fix
Requested changes from 6.2.2 merge

Former-commit-id: 7c1ab8b8e2
2021-07-15 16:42:02 -04:00
christianEQ 43f31da324 fix warnings for mac build
Former-commit-id: 570fbd0149
2021-07-15 20:14:14 +00:00
Malavan Sotheeswaran 91c4c2b7f7 Merge branch 'add_ci' into 'keydbpro'
test CI do not merge

See merge request keydb-dev/KeyDB-Pro!24

Former-commit-id: 047e32c63a329c9ebc6756db704eda8bbcc1b10a
2021-07-14 23:41:24 +00:00
Malavan Sotheeswaran f518193862 test CI do not merge
Former-commit-id: ccdf18b1bef07ba076e5f86d74fe1e1f6ae50a8c
2021-07-14 23:41:24 +00:00
christianEQ a833c9b2a7 Merge remote-tracking branch 'origin/unstable' into ci-flags-fix
Former-commit-id: da1f09e9b5
2021-07-14 22:56:15 +00:00
malavan f6d8d32539 add endurance test
Former-commit-id: 3ebd20e66fd6cf858f8d7de7de223d18c387a2a9
2021-07-14 22:15:44 +00:00
malavan bfefd8a11b use INVALID_EXPIRE instead of -1
Former-commit-id: 9e45984a97
2021-07-14 22:13:29 +00:00
christianEQ f11601bcfc added REDIS_CFLAGS to makefile for backwards compatibility
Former-commit-id: b2fb4f4b9b
2021-07-14 21:51:44 +00:00
malavan c255a454ec cleanup based on 6.2.2 merge review
Former-commit-id: 51277b17a7
2021-07-14 15:22:27 -04:00
Christian Legge 5019f9c537 Merge pull request #322 from EQ-Alpha/diagnostic-tool
Basic first iteration of Diagnostic Tool

Former-commit-id: 32f5ef864e
2021-07-14 14:19:44 -04:00
malavan 59eec6da85 more specific requirements for jedis and node-redis
Former-commit-id: 4d3f9cb88a8d60ac0350d658f76bae7ad5e17e8f
2021-07-13 20:58:58 +00:00
Christian Legge 25d992777c Merge pull request #327 from EQ-Alpha/issue323_fix
fix for #323: seg fault on expiremember

Former-commit-id: a8f28297ec
2021-07-12 16:54:31 -04:00
christianEQ 229bb85dec tabs -> spaces
Former-commit-id: 0ae13c9731
2021-07-12 18:55:44 +00:00
John Sully d3d7c3a865 Merge branch 'keydbpro' into keydbpro_collab
Former-commit-id: 8eec3e948ffd204bb2d6170ad3ca42fa8a2c6d8b
2021-07-09 05:25:04 +00:00
John Sully 2616ed75cc Merge branch 'unstable' into keydbpro
Former-commit-id: 81ded8a35daa5100cac7299a7d0b5f43ee7ac74f
2021-07-09 04:41:47 +00:00
John Sully c0160a4415 Merge tag '6.2.3' into unstable
Former-commit-id: 1895dbb768
2021-07-09 04:40:31 +00:00
malavan fe13e24e99 only use docker
Former-commit-id: c66dbb4afe6b63caa065b7ff8e7b11691099b1ce
2021-07-08 19:11:13 +00:00
christianEQ cf23416296 added eq alpha copyright
Former-commit-id: a6cbbd0f31
2021-07-08 02:58:18 +00:00
christianEQ 145015dc51 fix for #323: seg fault on expiremember
Former-commit-id: f1f52af9cf
2021-07-08 02:50:05 +00:00
christianEQ ea95e6c406 various branding and cleanup fixes
Former-commit-id: e3c619eca4
2021-07-08 02:46:42 +00:00
jsully ed6dda0887 Merge branch 'license_status_fix' into 'keydbpro'
license status OK if not checking license

Closes #14

See merge request keydb-dev/KeyDB-Pro!19

Former-commit-id: f66d0970b1eb9be50210a88bf773769a40513521
2021-07-07 18:07:30 +00:00
malavan 3b54d3ad8e gitlab-ci syntax error
Former-commit-id: 5bab59629c39c8eb22567be36faf092d0b54dbe4
2021-07-07 08:32:09 +00:00
malavan 30f092066d gitlab-ci syntax error
Former-commit-id: 92aaa4fd66225593fa477053f960ee1dbf2f522c
2021-07-07 08:30:41 +00:00
malavan f0d188cb07 gitlab-ci syntax error
Former-commit-id: 2a5b4297425e773cc97376f271acce535ef3a20e
2021-07-07 08:26:39 +00:00
malavan cf1b1b7510 code coverage job
Former-commit-id: 418fd5716dde4b8034259ca31290e5538f0f0aad
2021-07-07 08:25:37 +00:00
malavan 8105dc37eb add redis-rs
Former-commit-id: 13f171eb06b98f25424b1dff8c6572b668dd92ad
2021-07-07 05:28:59 +00:00
malavan d8c0e5ddad tmp dir created by jedis make now
Former-commit-id: 2c362ea5359f0f814da231a5fb9e826d1851bfe3
2021-06-30 17:51:51 +00:00
John Sully 24a24dd082 Merge branch 'repl_backlog_rework' into keydbpro_collab
Former-commit-id: 0983e195757d92d6cbcb63436a1332a6b80e275c
2021-06-30 06:36:45 +00:00
malavan 11e1283526 Merge branch 'keydbpro' into add_ci
Former-commit-id: 3a745920e519177390a36abc207e02f01e35828a
2021-06-25 12:15:52 +00:00
malavan 154baae2ad add tags hopefully no need to kill stunnel
Former-commit-id: 6b49258ba88874075e18e71911f472bc95595c5a
2021-06-25 11:46:28 +00:00
John Sully 6ba0e699d4 Merge branch 'keydbpro' into keydbpro_collab
Former-commit-id: ecc69952dfd1f145e1aff12bca56a4b4e102d669
2021-06-25 06:21:58 +00:00
John Sully 0d8da2c350 Avoid taking locks when we don't need to
Former-commit-id: 0d8d3ee9e217cd1f1366a117e6e212f610a028e1
2021-06-25 06:11:14 +00:00
John Sully 165e73353a OPTIMIZATION: Only notify the condition variable when needed
Former-commit-id: 11f07b49c613f54cef682da1e3c8fc54918809b0
2021-06-25 06:11:01 +00:00
John Sully 8db07641ad Reenable LTO
Former-commit-id: e7c1e1c9d8021f48c4081a9dfb84dba9da2521fc
2021-06-25 06:10:13 +00:00
jsully 088e1db814 Merge branch 'repl_backlog_rework' into 'keydbpro'
Replication backlog rework

See merge request keydb-dev/KeyDB-Pro!23

Former-commit-id: 6937d3be40fdc79dddc1852bf7fc8565984da006
2021-06-25 03:10:56 +00:00
vivek 0e953fb916 Primitive implementation of bypassing client buffer, stats are all messed up and print statements everywhere
Former-commit-id: 59b2ae8ff451f8a5ac2f3baf3c7b509f6872895e
2021-06-25 03:10:56 +00:00
John Sully 5949e253ca remove unnecessary newline
Former-commit-id: 532af9cd0286ac6ece6f401c42aea18e36d16f7c
2021-06-25 02:46:32 +00:00
John Sully e6a82692b7 Avoid holding the lockPendingWrite for too long and deadlocking due to lock inversion
Former-commit-id: a4b49fbec60e2333a4407d24383ae204d5d2b413
2021-06-25 02:31:17 +00:00
John Sully 815ebe1e6b Remove fPendingReplicaWrite flag which can instead be calculated on demand
Former-commit-id: ae26afd13f955eb230b5c2cab20ec90db9b714ad
2021-06-25 01:54:38 +00:00
malavan f151ba91b0 don't fail on pkill
Former-commit-id: 7e187095eb82052c2ef0a37094a0cf3c0545c2f0
2021-06-24 22:51:14 +00:00
malavan df8eb2c106 add local tmp dir
Former-commit-id: 7a8f6e7f3c2b4a3e10dabdb2961a39bdd859a2e0
2021-06-24 14:38:52 +00:00
malavan b755231321 reset stunnel for jedis
Former-commit-id: 52d0e91046975791cc91ae230777f80ba2573dc9
2021-06-24 14:04:31 +00:00
malavan 2b3947b15f add jedis-test
Former-commit-id: 964e0313169f3d942d9ea6d7c4af181a20f9c663
2021-06-24 13:34:08 +00:00
christianEQ e5939c5de9 removed unused command line options
Former-commit-id: 57e59d97db
2021-06-22 17:13:35 +00:00
christianEQ 6c5246fb09 changed --ms to --time
Former-commit-id: d7cada0f38
2021-06-21 19:57:14 +00:00
christianEQ 59102658a3 added more verbose options
Former-commit-id: fd2ac1fcfc
2021-06-21 18:40:37 +00:00
christianEQ 2bbb8a54fc -t threads option
Former-commit-id: 0181b0e7a1
2021-06-21 18:36:21 +00:00
malavan 245086f48b redo build instead of upload and download
Former-commit-id: 841cdb2a429576ef2a6fb299aef2156ec56df243
2021-06-19 07:07:28 +00:00
malavan 6e5ffef0ec copy entire directory not just src
Former-commit-id: f75c88039383e1ebb83ea3254c07541b8575e869
2021-06-19 07:01:35 +00:00
malavan 56b1e072f9 try to maintain combined files between jobs
Former-commit-id: acf5161c353ddcbbdfc45b4e85ae978bb442e507
2021-06-19 06:55:41 +00:00
christianEQ 0d9e0a9039 added starting line so diagnostic tool doesnt look frozen at first
Former-commit-id: 2b5e5cfa4c
2021-06-18 20:21:47 +00:00
christianEQ 4028d35560 Merge remote-tracking branch 'origin/unstable' into diagnostic-tool
Former-commit-id: bfb0d02622
2021-06-18 20:19:31 +00:00
christianEQ 248059e50c detect stagnating server load before 100% (diagnostic tool)
Former-commit-id: 534b70643b
2021-06-18 19:01:51 +00:00
malavan 7cd14168bc add -j to make test
Former-commit-id: 7509875974938f1087ace2437ceb95d8baeeeffa
2021-06-18 17:50:35 +00:00
malavan 502197a3f6 use runner login for clone
Former-commit-id: 64cc31184d3a91386b689870de7d96e423fb58af
2021-06-18 17:15:49 +00:00
christianEQ b21b868de2 added config option for time to spin up new client threads (diagnostic tool)
Former-commit-id: 3d0f729572
2021-06-18 16:58:16 +00:00
christianEQ 29e3f7da84 detect full load + server threads (diagnostic tool)
Former-commit-id: fd4ed1e425
2021-06-18 16:49:25 +00:00
malavan b9967bf64d remove artifacts
Former-commit-id: dd62d85dd101b1f9947af0b335874fd28fee21bc
2021-06-18 16:32:15 +00:00
malavan 3e6075bf72 remove allow_failure
Former-commit-id: 55f62ea9f6ea4c6adefc81ad90a8bd1567406b72
2021-06-18 16:19:11 +00:00
malavan 02d5f09206 force test to run even if build hangs
Former-commit-id: e7a68417ae133402e1f53a6dbbdabbbfc2b3edf7
2021-06-18 16:16:19 +00:00
malavan 7685c3e206 syntax error in last commit
Former-commit-id: 4638526c0e68d9b153a5ea11f8ef83b0ad2f42de
2021-06-18 15:34:18 +00:00
malavan 4e6186d2a9 add src/ as an artifact
Former-commit-id: 315bd739a9db97c4e680212dfd31580828c3fcc6
2021-06-18 15:32:58 +00:00
malavan ec1f6d1156 wrong syntax on last commit
Former-commit-id: 587ed953fa8c6a9ed9faf1c406e813ba79e9b7bf
2021-06-18 15:27:30 +00:00
malavan 056e76d3b5 parallel make, order tests
Former-commit-id: d01afd8324e415b92a292c199703999df1f72457
2021-06-18 15:23:42 +00:00
christianEQ 4237c9d5ff detect client cpu usage in diagnostic tool
Former-commit-id: 693450393c
2021-06-17 20:40:10 +00:00
malavan 6d50656fab uninstall before install
Former-commit-id: f30afe82d799ad680343cdcb7b80e8c257026ff7
2021-06-17 20:38:56 +00:00
malavan 26fba09a41 init git submodule
Former-commit-id: e96906d095fed6b37c9ece79526cfd0a88819e4d
2021-06-17 18:52:36 +00:00
christianEQ fd72894fbf accurate cpu usage in diagnostic tool
Former-commit-id: 8ee7584cff
2021-06-17 18:32:11 +00:00
malavan aa763e9bb1 clean before build
Former-commit-id: 49805ee385381486476d2986cca9e9c3d50d68b5
2021-06-17 18:30:11 +00:00
malavan b70ee319b8 add CI for gitlab
Former-commit-id: 37ba6d28030f4cf1866cc9c182833fe247348f38
2021-06-17 08:44:29 +00:00
VivekSainiEQ 29f4c66179 More code cleanup
Former-commit-id: 8e9962b9b7b9093399451bf93d30e5b5d26e3d33
2021-06-16 19:41:55 +00:00
VivekSainiEQ 90a6fef48b Merge remote-tracking branch 'origin/keydbpro' into repl_backlog_rework
Former-commit-id: e9bfcef5429c747fd9f26a829fed2281c5ec2b25
2021-06-16 16:40:06 +00:00
Ubuntu 6a65b8bbaa Optimized use of repl_lowest_off to reduce lock contention
Former-commit-id: 30a957e5399fe94675f0b6d2d34c24112d5a9734
2021-06-15 23:13:49 +00:00
John Sully 420b07960c Prevent test code crash due to no log data
Former-commit-id: 0a56a73bd9
2021-06-14 22:06:36 +00:00
Ubuntu 80dddab0c4 Relaxed locking, should run faster now
Former-commit-id: 5cec4d026dc1766b9ecbade6ec4b9d0e75a94e0f
2021-06-14 19:30:49 +00:00
John Sully dd8e8b098c active defrag tests need to run single threaded because jemalloc has seperate mempools per thread and the numbers won't match otherwise
Former-commit-id: 3a1d3090f2
2021-06-14 16:32:47 +00:00
christianEQ 9dd97c9c0d changed redis_flags names to keydb in makefile
Former-commit-id: 0727393627
2021-06-14 16:09:42 +00:00
John Sully bdc29a935e Fix deadlock in storage cache
Former-commit-id: e74711e8131cd29a1e0294fbb28e1737ee98afce
2021-06-14 06:32:58 +00:00
John Sully df19692fd8 Merge branch 'keydbpro' into keydbpro_collab
Former-commit-id: 975655ab7ff357c2d86d2368899325f88efe5310
2021-06-14 04:07:11 +00:00
John Sully 3ca4e0b4f9 Free objects immediately before adding to the GC list, this cuts down on mem consumption
Former-commit-id: 49d718ae9c1c8a850df5ffa2c550df3381ad7174
2021-06-14 04:06:34 +00:00
John Sully 5898a75788 Merge branch 'keydbpro' into keydbpro_collab
Former-commit-id: efea1ce6ca09e09cfe83425c385d0ca1c47514ce
2021-06-14 03:51:09 +00:00
John Sully dcffe221ce Remove lock
Former-commit-id: bb8efe2ed942fd67d091b16bb27f67ccefcbbf19
2021-06-14 03:50:47 +00:00
John Sully e70ed32576 Merge branch 'keydbpro' of https://gitlab.eqalpha.com/keydb-dev/KeyDB-Pro into keydbpro
Former-commit-id: 51c8b911b1de88065654eec87b88e1f46cf57e2a
2021-06-14 03:35:25 +00:00
John Sully 562c0ae3de memefficiency tests need to run single threaded as jemalloc has seperate pools for threads
Former-commit-id: 02152c7bd8bc0462edd809122873ceb8644dc69a
2021-06-14 03:34:56 +00:00
John Sully c0d1586f9a Merge branch 'keydbpro' of https://gitlab.eqalpha.com/keydb-dev/KeyDB-Pro into keydbpro
Former-commit-id: 0f1b891c15ac27c4ad8a63a798c7dfa9fdcd2e01
2021-06-14 03:14:15 +00:00
jsully 386f6c649f Merge branch 'merge_6.2.2' into 'keydbpro'
Merge 6.2.2

See merge request keydb-dev/KeyDB-Pro!21

Former-commit-id: c1076b2311e8bc1217b7f5030f5f5ebea1e98215
2021-06-14 03:14:03 +00:00
jsully f3708d35b6 Merge branch 'fixintermittentdoublefree' into 'keydbpro'
Fix issue #23 by adding global locks to FreeMemoryLazyFree

Closes #23

See merge request external-collab/keydb-pro-6!2

Former-commit-id: 2c2d09b123da72483d0b85e41a457ccce13e4fc5
2021-06-14 03:01:03 +00:00
christianEQ 2417c7a593 several redis->keydb changes in sentinel.conf
Former-commit-id: d2ef059471
2021-06-11 19:16:33 +00:00
christianEQ 3ea398ad5e renamed redis mentions in runtest files
Former-commit-id: 2e894a512b
2021-06-11 19:11:12 +00:00
christianEQ e0aafaee37 renamed redis mention in readme
Former-commit-id: 34b0209f05
2021-06-11 19:10:35 +00:00
christianEQ d0a3554de7 renamed workspace gitignore
Former-commit-id: 046f575632
2021-06-11 19:10:12 +00:00
christianEQ c23c7f0ca4 renamed redis test files
Former-commit-id: 1c77104b5e
2021-06-11 19:09:40 +00:00
christianEQ 470c6550e4 removed unreliable musl test and left only accurate new one
Former-commit-id: 386be8990a
2021-06-11 18:19:59 +00:00
christianEQ f3c44c96f2 changed redis.pid to keydb.pid where necessary
Former-commit-id: 76d9c7c82a
2021-06-11 18:19:02 +00:00
christianEQ f48be238b1 removed outdated comment in server.cpp
Former-commit-id: 98f08034a1
2021-06-11 18:17:18 +00:00
christianEQ 1c6219643b updated pkg/deb/conf/keydb.conf to use keydb name throughout
Former-commit-id: 308cf77437
2021-06-11 18:15:50 +00:00
christianEQ 87316cb63c removed the question issue template - doesn't seem necessary for us
Former-commit-id: ce64f469f4
2021-06-11 18:08:19 +00:00
christianEQ 8ee834ea24 fixed flag var names in ci
Former-commit-id: e632c3db1b
2021-06-11 17:04:33 +00:00
christianEQ ea12db4433 don't enforce upper limit for requests issued; tool will run indefinitely
Former-commit-id: 239d22ed72
2021-06-11 16:28:29 +00:00
VivekSainiEQ 15f6acae11 Merged in 6.2.2
Former-commit-id: 3fb9bb5b4fdfb8e09430c7bef6bf9421065adf0f
2021-06-10 20:11:14 +00:00
malavan 5998dc233a add global locks to FreeMemoryLazyFree
Former-commit-id: d850ce20219a3e29a6a816ebfa0d714963d6a88b
2021-06-09 21:49:15 +00:00
VivekSainiEQ 9db8556e91 Cleaned up code a bit, need to rewrite some comments to reflect new behaviour
Former-commit-id: 850ec766cd71614ce9e61c12414545cd212d3878
2021-06-08 23:10:53 +00:00
VivekSainiEQ da0b7a3900 Seems to pass multithreaded test cases, thank the lord
Former-commit-id: 6cbf70cfff5735f3d4ef2e980945b4b1a1f85971
2021-06-04 20:09:47 +00:00
VivekSainiEQ 667d2763c0 Removed unused variables
Former-commit-id: 48663bc480f7279a94c68aeebdd9721ca64f7038
2021-06-03 21:47:33 +00:00
VivekSainiEQ 2e9c7aed03 Single threaded tests work now
Former-commit-id: 0e760d7c71231c7f52102909a31fc8db1b3e2860
2021-06-03 20:44:32 +00:00
John Sully 0f41d34ba2 Fix collab issue #26
Former-commit-id: 2392879772a77fc30c856488b9911d194ced827b
2021-06-03 04:43:38 +00:00
VivekSainiEQ 2a6848a65a Sync works single threaded properly, passes all but one testcase (which hangs)
Former-commit-id: 9a6ca3a5d906b9d87fe70652d218decbb2775ac1
2021-06-02 23:41:36 +00:00
christianEQ 982067b16a fixed code style for ifdef
Former-commit-id: 93c41fa31c91098af98d2bc0362eb29685cd6678
2021-06-02 15:02:27 +00:00
John Sully eef508736d Merge branch 'keydbpro_collab' into multithread_load
Former-commit-id: b580a5561220bc6dc7bc073135f3045ba0cdda51
2021-06-02 04:24:49 +00:00
John Sully eb7c74cf13 Merge branch 'merge_6.2.2' into keydbpro_collab
Former-commit-id: 00f3646df54d25443d8d42c92de60fdeef4fbbe8
2021-06-02 02:12:16 +00:00
John Sully d93360b96b Merge branch 'keydbpro' of https://gitlab.eqalpha.com/keydb-dev/KeyDB-Pro into keydbpro
Former-commit-id: 6eb1417295ecc6ce23677e9a8e1c756579177629
2021-06-02 02:11:29 +00:00
John Sully 368441127f Fix merge issue with wrong return type
Former-commit-id: 1640a2fefb8f09c7b6b335838f14a7fd3a51ae88
2021-06-02 02:10:00 +00:00
John Sully 18a2b27ef9 Merge branch 'unstable' into keydbpro
Former-commit-id: 657789db5c3bd0fbbfc15be150d6eb525554251c
2021-06-02 02:08:18 +00:00
John Sully 833faf96c5 Merge branch 'merge_6.2.2' into keydbpro_collab
Former-commit-id: 54fe037e4e215b1e5bdb42b567c6df04a69ba150
2021-06-02 02:05:44 +00:00
jsully 3859bea711 Merge branch 'fixleakindictdelete' into 'keydbpro'
fix leak caused by dict entry not being added to GCList

See merge request keydb-dev/KeyDB-Pro!20

Former-commit-id: 92c8c6d854c3029269f695d0f9e4afe80c1e48f6
2021-06-02 00:01:52 +00:00
jsully e5197d6801 Merge branch 'jesse/update-readme-build-instructions' into 'PRO_RELEASE_6'
Add additional libraries that need to be installed for building pro

See merge request keydb-dev/KeyDB-Pro!16

Former-commit-id: b18a4f718f40059c30dba6f8ceb2c7612dbcf392
2021-06-02 00:01:33 +00:00
jsully 838150179c Merge branch 'monkey_blocking' into 'keydbpro'
Monkey Improvements

See merge request keydb-dev/KeyDB-Pro!13

Former-commit-id: 130434f01b4bd27c14502b005b5dc71daa6b9cae
2021-06-02 00:01:19 +00:00
John Sully af81622bfc We need to refactor to gurantee the key is visible when loading subexpires. Keys may be temporarily invisible while waiting to be added to the storage
Former-commit-id: 222eecb95925f7c60e28a5717d73163ad64b522b
2021-06-01 23:59:22 +00:00
John Sully f09af75a20 Merge branch 'keydbpro_collab' into multithread_load
Former-commit-id: ffd1225c007e3d1eaecb6b71e215d1e08364aa51
2021-06-01 22:31:52 +00:00
John Sully ef41f96633 Fix lock mismatch
Former-commit-id: 98eb0e778bc3a5ff7da917d39997b2fdb4adbca6
2021-06-01 22:15:35 +00:00
christianEQ 0c41217fba working diag tool prototype
Former-commit-id: fefbe96816
2021-06-01 20:54:48 +00:00
John Sully d0e69e4c47 Reduce lock contention when loading to a storage provider
Former-commit-id: 58bc777f2215918043325753b6e2bf89dc3108f7
2021-06-01 20:01:41 +00:00
John Sully 3675a59496 Merge branch 'keydbpro_collab' into multithread_load
Former-commit-id: 31ddf772cd89344017042a18547ae83a60ce02b9
2021-06-01 19:18:19 +00:00
John Sully b85cbbceee Merge branch 'keydbpro' into keydbpro_collab
Former-commit-id: 0f2132505470ca63375f53b54cb6751b604d92f9
2021-06-01 19:17:54 +00:00
John Sully 6e51487f09 Implement bulkInsert for rocksdb
Former-commit-id: e9abae77d6ae18e21d7dac0cbdd563f572ac3d03
2021-06-01 19:17:40 +00:00
John Sully ceb98b062c Initial bulkInsert implementation
Former-commit-id: 2a721d4dff3c9f78ec4ba1c7b490ea1f5d216a89
2021-06-01 19:15:01 +00:00
John Sully 992d515b05 Merge remote-tracking branch 'collab/keydbpro' into multithread_load
Former-commit-id: a09454b3a4b295b2d04bdb7d742db7f9a3e17be7
2021-05-31 01:16:01 +00:00
John Sully 537450bc5d Merge branch 'keydbpro' into keydbpro_collab
Former-commit-id: 40187ebd4cc479fa86a3ee5cca9bedef7d488ee7
2021-05-31 01:15:30 +00:00
John Sully 4c88843720 Eliminate unnecessary global locks
Former-commit-id: 8f924ed0979f3cf7cd290395d1b1eec358979325
2021-05-31 01:14:28 +00:00
John Sully 5d525a8830 Fix deadlock in async work queue
Former-commit-id: 3265f2908e8d3aa567b3b9e6b141a7881c795053
2021-05-31 01:14:11 +00:00
John Sully 0bb036aebb Don't pass on flags indicating membership in a list
Former-commit-id: b1f662d639
2021-05-30 05:11:18 +00:00
John Sully 702bfaee9b Merge branch 'unstable' into keydbpro
Former-commit-id: 4fd95b064648ee3d02097a1c2dabf306978b44f9
2021-05-30 04:28:09 +00:00
John Sully 6331caca6a Fix a leak in the benchmark
Former-commit-id: aa5b27b040
2021-05-30 02:55:39 +00:00
John Sully e5691036d9 Fix merge issue with module test script
Former-commit-id: 10d254ec1b
2021-05-30 02:45:06 +00:00
John Sully 42f5d1a175 Ensure our connections are touched only on the right thread
Former-commit-id: e8a44821d0
2021-05-30 02:08:30 +00:00
John Sully 1a734223ca Handle race where a different thread cancels the replication but we haven't closed the connection
Former-commit-id: 92e48f0717
2021-05-30 02:08:02 +00:00
John Sully f1ba462df6 Delete pipe on the right thread so event handlers are cleaned up
Former-commit-id: 9742c44db5
2021-05-30 02:07:31 +00:00
John Sully f82860104e Don't leave dangling client pointers in the process list
Former-commit-id: 5d16f51950
2021-05-30 02:06:47 +00:00
John Sully 06560f9f85 Don't leak AE control pipes to fork children
Former-commit-id: 1ed2e8b5bc
2021-05-30 02:06:20 +00:00
John Sully 4142b86ff8 Fix branding
Former-commit-id: b20803b766
2021-05-29 07:08:01 +00:00
John Sully 71adde26d1 Fix cluster test failures
Former-commit-id: 8cf1daf823
2021-05-29 07:07:54 +00:00
John Sully 989799df85 Merge branch 'unstable' into keydbpro
Former-commit-id: 14c24ce161ddcbddb701a20062659261397cb0e4
2021-05-29 06:49:05 +00:00
John Sully 1b29ba5873 Mac build break fixes
Former-commit-id: 083b54472c
2021-05-28 22:40:03 -04:00
John Sully ef5bf1fdd7 Prevent partial sync in test that requires only full syncs
Former-commit-id: 1b9fea0669
2021-05-29 02:22:20 +00:00
John Sully 4e70e85ab8 Fix failover command test failures
Former-commit-id: d3c37c7159
2021-05-29 01:19:12 +00:00
John Sully f6067d1664 Remove dup'd code from merge
Former-commit-id: 807f020184
2021-05-29 01:08:52 +00:00
John Sully bf77b1a03a ProcessingEventsWhileBlocked is relevant only to the current thread
Former-commit-id: b400be68b7
2021-05-29 01:08:43 +00:00
John Sully 1d0378e0dc Make processClients reentrant
Former-commit-id: e39bdb58ec
2021-05-29 01:08:14 +00:00
John Sully 589e95e0c8 Don't have dangling expires
Former-commit-id: 83c8977033
2021-05-29 01:07:46 +00:00
John Sully cec7f98f34 Use correct make flags
Former-commit-id: 682990eeb3
2021-05-29 01:07:35 +00:00
John Sully 007f276a43 Repair async rehash code removed by merge
Former-commit-id: 14a3ab8133c474bf8f1ad636c8699d5d59c5394e
2021-05-29 00:24:46 +00:00
John Sully f4151f0d6b Merge branch 'unstable' into keydbpro
Former-commit-id: 205d8f18d2bb8df5253bab40578b006b7aa73fd5
2021-05-28 23:32:46 +00:00
VivekSainiEQ bf120245fa Added more synchronization and fixed some data races
Former-commit-id: 183e015dac6f85df1c94d0761e89bc23d9f53319
2021-05-27 18:57:23 +00:00
VivekSainiEQ 6080ee8f2f Added transmitted RDB lock
Former-commit-id: 4b32167afc85742d85ff9b47b2c2e0b6b02e140a
2021-05-26 20:10:33 +00:00
John Sully d414b5ee60 Ensure multi-thread handling of cached master is equivalent to single thread case
Former-commit-id: 7ee766aee1
2021-05-26 17:29:47 +00:00
John Sully c091050d4a Avoid differences between single thread and multi-thread
Former-commit-id: 848c5ad784
2021-05-26 17:29:01 +00:00
malavan 5043fb4091 fix leak caused by dict entry not being added to GCList
Former-commit-id: d8c1b3b6ec64f63fdff04d53102e4563c2c6764a
2021-05-26 17:01:51 +00:00
John Sully b94b46a5ee Eliminate test issue while clients wait for async free
Former-commit-id: a41fb1b036
2021-05-26 01:18:47 +00:00
John Sully 02211afea8 Fix failure sending deferred aggregate lengths to clients on other threads (merge bug)
Former-commit-id: 915117ae7b
2021-05-25 20:51:18 +00:00
John Sully f6de98779f Remove duplicate code
Former-commit-id: de5fa78762
2021-05-25 20:50:40 +00:00
John Sully 84b8e80841 Fix TLS test failure due to tls-port not marked as runtime configurable
Former-commit-id: b0c8efd840
2021-05-25 20:50:23 +00:00
John Sully 9939c0ac5c Fix crash in TLS due to merge
Former-commit-id: 1dcd5edbf9
2021-05-25 18:52:27 +00:00
John Sully 2fa0085988 Build break fix: Remove dependency on future C++ feature
Former-commit-id: 87d7fc8e5d
2021-05-25 18:52:08 +00:00
John Sully f5dc441dff More OS X build breaks
Former-commit-id: 100a747eab
2021-05-25 18:35:45 +00:00
John Sully 9992f14de8 OS X build break fix
Former-commit-id: 105fd03ef8
2021-05-25 18:32:31 +00:00
John Sully f1c3a9ffc8 Fix uninitialized variable
Former-commit-id: 9395a9c1d9
2021-05-25 18:30:07 +00:00
John Sully e8b330f4ff Fix duplicate checks (resolve PR comments)
Former-commit-id: 02f7efd9d4
2021-05-25 16:57:49 +00:00
John Sully 87f706f8e7 Fix TLS Build Errors
Former-commit-id: aea86c5977
2021-05-25 16:55:59 +00:00
VivekSainiEQ 4933615dc1 Initialized serverTL in more places in module.cpp
Former-commit-id: 8d81592bec
2021-05-25 16:55:47 +00:00
VivekSainiEQ 4fd76c4791 Fixed single threaded for real this time, need to add synchronization for multi threaded
Former-commit-id: 4d858dac1a503f4d518477212ba585069af22574
2021-05-21 17:05:55 +00:00
John Sully ea6a0f214b Merge tag '6.2.2' into unstable
Former-commit-id: 93ebb31b17
2021-05-21 05:54:39 +00:00
christianEQ a9552f9635 license status OK if not checking license
Former-commit-id: 6bfdc9d41dc638989d50f005af8d66e4ed47ce77
2021-05-20 19:09:02 +00:00
John Sully f49d8f9adb Merge tag '6.2.1' into unstable
Former-commit-id: bfed57e3e0
2021-05-19 02:59:48 +00:00
Malavan 04fcf3e9b5 Fix issue with INVALID_EXPIRE overlapping with mask
Former-commit-id: a6bbbeffcf
2021-05-17 21:38:42 +00:00
Malavan 7859cbdf59 Merge remote-tracking branch 'upstream/unstable' into fixissue295
Former-commit-id: 9110747194
2021-05-17 21:35:43 +00:00
Malavan 26d1c80398 merge when and whenFull
Former-commit-id: 693b209cb4
2021-05-15 05:48:23 +00:00
Malavan bafd03f53c Speedup keyIsExpired by removing subkey search
Former-commit-id: a01564158e
2021-05-07 09:40:23 +00:00
John Sully 42f98c27e3 Fix test hang
Former-commit-id: 23647390e6
2021-05-07 00:28:10 +00:00
VivekSainiEQ 501a065759 Changed branding in various locations
Former-commit-id: 96bca72bb4
2021-05-06 20:13:45 -04:00
John Sully 442aa5bbd9 Pause execution during rdbLoadProgressCallback as its too risky to let it run
Former-commit-id: e70c01cb3e756d1e02ed190b76c73b7b7010c0d3
2021-05-06 00:42:49 +00:00
John Sully 40fdb3ce05 Add endurance testing to better detect threading bugs
Former-commit-id: 945e428aa110968479fdcdfc2d5c5308a99eadc3
2021-05-06 00:09:07 +00:00
VivekSainiEQ 7ff2fb716a Fixed data race? Seems to be passing multithreaded test cases now
Former-commit-id: cb13edd1200c1230fa7e313d69c69e06129951d3
2021-05-05 22:26:36 +00:00
VivekSainiEQ f6a714db26 Updated overhead calculation to only use repl_backlog_size
Former-commit-id: 6f93c7eb44d84bb143b4ad4fff3c6a5436ebaaf7
2021-05-05 17:04:08 +00:00
VivekSainiEQ eb35d7e9ec Updated maxmemory tests to account for overhead in new replication backlog behaviour
Former-commit-id: 4cd197959693dfe4d1497c3f703cf6aaa27d34ad
2021-05-05 16:37:02 +00:00
Malavan 9a2d6cbad2 add lookup limit to active subkey expire
Former-commit-id: 5d6da23108
2021-05-04 22:28:03 +00:00
Malavan 6312005640 add lookup limit to active subkey expire
Former-commit-id: b44f504ced
2021-05-04 21:34:25 +00:00
John Sully 8e85eaf53e Merge branch 'keydbpro' into keydbpro_collab
Former-commit-id: 446daf8f4c33005096372ad9e29ae9b3d465c64e
2021-05-03 22:58:56 +00:00
jsully de6e9845d2 Merge branch 'cluster_bugfix' into 'keydbpro'
Set repl_down_since in freeClientAsync

See merge request keydb-dev/KeyDB-Pro!12

Former-commit-id: bd7591fe50b1e5565da2fa521438b88058d4da07
2021-05-03 21:41:05 +00:00
christian 3d424defd5 Set repl_down_since in freeClientAsync
Former-commit-id: fb4bd2984651837fadd1dbbbb56327e8452b4a2a
2021-05-03 21:41:04 +00:00
John Sully 0c5585e5de Ensure multithread load works with FLASH storage
Former-commit-id: 24e2991c7aa2cef90a89b1640f7095235c5d34ed
2021-05-03 20:18:45 +00:00
VivekSainiEQ 33a7b52899 Forgot to add server.h in last commit
Former-commit-id: 34fa6119c9a3f1533cc3e6e5d118dc6424a70891
2021-05-03 16:49:09 +00:00
John Sully c58739bbcb Respect replica output buffer limits when adding large commands to the ring buffer
Former-commit-id: 37ec01cfd8a8da1e895c7cdc358d382d35ad59dd
2021-05-03 16:33:16 +00:00
VivekSainiEQ f6305ed15b Now tracks memory and resizes 'accurately', need to fix cluster
Former-commit-id: 5f0e01cc199427ab6dfd7f8f28321f6a1f34fd1c
2021-05-03 16:29:11 +00:00
John Sully eaaff16cca Don't sync too often it hurts perf
Former-commit-id: a20e89a457a0a682483c22f0f1cdb5c93c574d28
2021-05-03 04:15:46 +00:00
John Sully 5583fbb838 Fix remaining test failures
Former-commit-id: 37e607f9b13b6601ff52e74e613fb369cab22b56
2021-05-03 02:37:02 +00:00
John Sully 4677c62428 Fix issue where async load thread misses work
Former-commit-id: a24a7b093295c5f5d69feee9fbc37c64cfa8aa03
2021-04-30 18:48:23 +00:00
John Sully 7352e4a45f Fix majority of test issues with multithread load
Former-commit-id: 4db88176e33e3615ffb90852b49e76b12d5b4622
2021-04-30 18:45:37 +00:00
John Sully 556f394ed9 Initial implementation of multithread load
Former-commit-id: 87b0657c3acd7a3c89964afe1702851b44467c9a
2021-04-30 17:32:54 +00:00
VivekSainiEQ 7ef58a333f Performance optimizations
Former-commit-id: 7fd83d467784d293f7da78b74f9b9763ce387238
2021-04-29 18:51:30 +00:00
VivekSainiEQ d8367a92b2 Updated resize logic
Former-commit-id: e6d892ef21b7fc6f51433f32b01198038e555419
2021-04-29 17:01:06 +00:00
benschermel f8ddcf1e8e update README with community slack info
Former-commit-id: 6163e7b13a
2021-04-29 03:11:54 +00:00
christianEQ 861e54942f fixed diagnostic tool to use correct obj files
Former-commit-id: 66547bd28a
2021-04-28 16:02:44 +00:00
christianEQ d1330899a8 updated makefile vars to keydb names
Former-commit-id: e6ab823473
2021-04-27 21:14:05 +00:00
christianEQ 0bf752a543 added keydb-diagnostic-tool binary (copy of benchmark)
Former-commit-id: a2c0bce4cc
2021-04-27 20:56:37 +00:00
VivekSainiEQ 05fe41b33a Primitive implementation of bypassing client buffer, stats are all messed up and print statements everywhere
Former-commit-id: 8ae310fb0f7b53add826f76891da333b63860001
2021-04-26 22:13:32 +00:00
John Sully 95ae92a691 Optimize freeMemory by lazy freeing objects
Former-commit-id: cca31ed5ee2f42975f0051cfabf1e88720b3d678
2021-04-21 01:20:13 +00:00
John Sully 3966f84862 Better RocksDB perf tuning
Former-commit-id: cbe1e0a7c1b5dc49c1adff07b7c32042e673acf4
2021-04-21 01:19:44 +00:00
John Sully 6e546b3c44 Fix issue where we reply a dangling pointer
Former-commit-id: fd11e490c39fe876d979eace5eaec56c645cdfcf
2021-04-21 01:19:29 +00:00
John Sully 9c1cf39b70 _dictExpandIfNeeded is called too late to be useful
Former-commit-id: 7f75ca5d3a9ed47465bceb22f5f74fd6f0760008
2021-04-21 01:18:38 +00:00
John Sully 7f68765981 Allow prefetch even with a single thread
Former-commit-id: 2e68821b330a6bae8a352e37c3da643d504b2ce3
2021-04-12 04:44:52 +00:00
John Sully 92028ddb5c Avoid posting unnecessary async tasks
Former-commit-id: 1661d2a05943f96992be195f5dc32dd9a67c0e68
2021-04-12 03:44:29 +00:00
John Sully 2eb3710039 Fix issue where GC is not free'd until a BGSAVE
Former-commit-id: 38523e6b508cf5f4b40c178dfe98554abea8f6bd
2021-04-12 03:44:15 +00:00
John Sully 2c8540c4fd Make prefetch more aggressive
Former-commit-id: 25a5cfefcf7fa3451e92500f5d310290c4b6bbde
2021-04-12 03:42:05 +00:00
John Sully 5793bb0c34 Don't prefetch when lock contention is low, it increases latency
Former-commit-id: 0d21614e0e5aba28acd364231823d51a3073081f
2021-04-12 03:41:53 +00:00
John Sully 3ed9963363 Reduce P99 latency with async rehash
Former-commit-id: 7ea4c26fd82c0cdfa377183083f38a43336e480b
2021-04-12 03:39:13 +00:00
John Sully aa64a260fc Make prefetch configurable
Former-commit-id: 3b660347d70cc25d57119080bd43fb4671e36488
2021-04-12 03:38:57 +00:00
John Sully da545be5b5 Make prefetch more aggressive
Former-commit-id: 9cb0be197fb96d7fb3cb697c19b5be313b01337a
2021-04-12 03:24:05 +00:00
John Sully 5ccaa9265c Don't prefetch when lock contention is low, it increases latency
Former-commit-id: 9b2629f6a20368cec8e55f0d006f3a67c8b770b7
2021-04-12 03:23:49 +00:00
John Sully 2d2ae90f30 Reduce P99 latency with async rehash
Former-commit-id: 6c045837c7cf92dc92be35465229b482e09e46d2
2021-04-12 03:22:22 +00:00
John Sully c92b90eb91 DO not set the timethread as high priority, it can starve the server threads
Former-commit-id: faeac65371af9d6b6effe0886bcbdefaec24ad6d
2021-04-09 01:06:24 +00:00
John Sully e1adedb1fa DO not set the timethread as high priority, it can starve the server threads
Former-commit-id: 5355207a0ad3f1a191fa06450490c792caa76e87
2021-04-09 01:05:55 +00:00
John Sully 69f7a194bc Make prefetch configurable
Former-commit-id: 16996c048042bd3799c8051645bbe7c54137d54c
2021-04-08 19:52:38 +00:00
John Sully 571718f774 Avoid posting unnecessary async tasks
Former-commit-id: 08f63fdfd6c78388bba093ec2edda7d77fc9173e
2021-04-07 17:41:20 +00:00
John Sully 635ddad7fc Fix issue where GC is not free'd until a BGSAVE
Former-commit-id: e19350005b571591876e49219bfca75e905604a5
2021-04-07 17:30:59 +00:00
John Sully 55a118ecd0 Reduce connection latency for cluster clients
Former-commit-id: f1acee99bdaee4faf9e18cdf4734d51a73e78a41
2021-04-07 15:49:58 +00:00
John Sully eb818d4c00 Fix build break from merge conflicts
Former-commit-id: 5052388bd43b0e42430fd741fb2b403544684246
2021-04-07 15:25:22 +00:00
John Sully ca13d87204 Merge branch 'keydbpro' of https://gitlab.eqalpha.com/external-collab/keydb-pro-6 into keydbpro_collab
Former-commit-id: e077756b140855cb5a7e60567abf845dbfbc162d
2021-04-07 15:14:59 +00:00
jsully c168c8fbbf Merge branch 'flash_read_perf' into 'keydbpro'
Flash read perf

See merge request external-collab/keydb-pro-6!1

Former-commit-id: f6d7277f307b78f079dd99bf532cd26a7b62018d
2021-04-07 06:12:55 +00:00
Cloud User 6601905d8c Make high pri time thread configurable
Former-commit-id: 7e94207765d2166f46792aea0919786f3f30d7b3
2021-04-06 22:39:20 +00:00
christianEQ ec11cc177e check for musl in logging.tcl as backtrace() is not available with it
Former-commit-id: 2c8239f9cb
2021-04-05 11:09:49 -04:00
John Sully 6b2567298d Don't ensure if we don't have to
Former-commit-id: b7b678a3ada531890e67313c867b7b49b01fe41e
2021-04-01 18:17:05 +00:00
jsully 7b61c83b3e Merge branch 'keydbpro' into 'flash_read_perf'
# Conflicts:
#   src/db.cpp
#   src/networking.cpp

Former-commit-id: e16c846b2b9e70f20981172287b19e585f81d73d
2021-04-01 17:25:31 +00:00
John Sully e5d5b41be1 Fix issue #300
Former-commit-id: 22d0bca3a51bef7d42264b518b1c470df51fdc5e
2021-03-30 23:45:07 +00:00
John Sully 40fdf5670c Fix issue #300
Former-commit-id: bee7f398c9c3b4c01b687d26194913bf215dca36
2021-03-30 23:44:34 +00:00
John Sully 577ba39c70 Fix issue #300
Former-commit-id: e9551c9e8d
2021-03-30 23:30:41 +00:00
John Sully ad8a706d4a Fix issue #300
Former-commit-id: bf5b2d78d9
2021-03-30 23:30:17 +00:00
John Sully 0b6a66ca55 Fix crash in RDB save
Former-commit-id: b032809b3e978fe571b791179d32ecdc9c067045
2021-03-30 20:49:33 +00:00
John Sully e943b60a39 Merge branch 'keydbpro' of https://gitlab.eqalpha.com/keydb-dev/KeyDB-Pro into keydbpro
Former-commit-id: c4eefb1345209790e31b41401d1870473a401676
2021-03-30 20:44:36 +00:00
John Sully 123d7ad148 Fix crash in RDB save
Former-commit-id: ef1e122fcb039d25f60752ca27c9feb5e8cfbb31
2021-03-30 20:44:22 +00:00
jsully 842c8dd3c9 Merge branch 'jesse/update-readme-build-instructions-default-branch' into 'keydbpro'
Add additional libraries that need to be installed for building pro

See merge request keydb-dev/KeyDB-Pro!17

Former-commit-id: d42c70048d4e4b7dd0ecc802742ff45f7c959b1c
2021-03-30 20:20:45 +00:00
Jesse 749fd784f5 Add additional libraries that need to be installed for building pro
Former-commit-id: 303a0646b5510e310dfd03c7288d747f76ce3d62
2021-03-30 13:14:03 -07:00
Jesse 13cb94c169 Add additional libraries that need to be installed for building pro
Former-commit-id: 506d4229c46598330ed39d837196d790bf4867cb
2021-03-30 13:12:23 -07:00
Hanif Ariffin 4b204b6776 Fix typo in error string
Former-commit-id: 0ac80086bc
2021-03-30 13:52:47 -04:00
VivekSainiEQ 239bb9cf65 Added logic back to only acquire/release GIL if modules are enabled, without causing deadlocks
Former-commit-id: 9ab36ddc36
2021-03-30 13:46:03 -04:00
VivekSainiEQ 662d5faa8b now acquire and release GIL every time you go to/wake from sleep
Former-commit-id: a6bc34c09b
2021-03-30 13:46:03 -04:00
VivekSainiEQ cb43eda420 Created and initialized seperate thread variables for modules
Former-commit-id: 3bb6b16c4a
2021-03-30 13:46:03 -04:00
VivekSainiEQ 3f9f4f6bff Readded getkeys to module build
Former-commit-id: 1cde2442aa
2021-03-30 13:46:03 -04:00
John Sully c0d7601aa4 Merge branch 'unstable' of https://github.com/JohnSully/KeyDB into unstable
Former-commit-id: 2910cee32b
2021-03-29 00:49:34 +00:00
John Sully 3027a4cbb4 Enable LTO
Former-commit-id: a6edb104b7142b8e76048e0534e342048ade08d6
2021-03-29 00:47:50 +00:00
John Sully e15f035bfb Prevent unnecessary copies in replication scenarios
Former-commit-id: b152a9bd88c081ce98eebe9a7af49649e60e5523
2021-03-28 22:43:15 +00:00
John Sully 999dba6619 Make some asserts debug only for perf
Former-commit-id: dc66209f2cf8eadb794dad302bd1ea92890e75b0
2021-03-28 21:08:48 +00:00
John Sully 22b1ac1e8d Excessive rehashing adds latency
Former-commit-id: ee5a4528d61420a18f89a07f4ac63e2181a19738
2021-03-28 20:22:01 +00:00
John Sully 33197a128d Fix thread safety issues with the cache prefetch logic
Former-commit-id: 4892122fc02109d98684a350bd732a0b08a8c7b4
2021-03-28 20:21:44 +00:00
John Sully afeb4db219 Prefetch keys even in pure RAM scenarios
Former-commit-id: d7219de186d60a5a437c1828ac97117eaad34819
2021-03-28 20:21:31 +00:00
John Sully 39f4615893 Eliminate unnecessary lookup in ensure when there is no snapshot
Former-commit-id: 1f363ed7c13c186f0c120ab4f3e321144667f50f
2021-03-28 20:19:15 +00:00
John Sully aa8800abaf Enable LTO
Former-commit-id: 3ec75184bae92c0e7af579eda8cbe6cfa2375327
2021-03-28 20:13:54 +00:00
John Sully 8377da61ed Enable LTO
Former-commit-id: 7241bfc25525e8b27193fb0d4f9eae2e5e98e8d6
2021-03-28 18:27:14 +00:00
John Sully 6cf736535d Make some asserts debug only for perf
Former-commit-id: c22740df4f7c1468fbe19fd97dfaec20e011b6f1
2021-03-28 18:27:00 +00:00
John Sully b8c03fd014 Excessive rehashing adds latency
Former-commit-id: 9db2277b0fea032abcde089f617fe7e4f5ce12e3
2021-03-28 17:59:02 +00:00
John Sully 74d73b4ca3 Fix thread safety issues with the cache prefetch logic
Former-commit-id: a80a128bb64b81115c095d6dd91896ff73048b3d
2021-03-28 17:58:43 +00:00
benschermel 8130a7fa59 bump version
Former-commit-id: f660cd9357
2021-03-27 18:30:52 +00:00
benschermel 2f80810544 bump version
Former-commit-id: 33b75e0a2cf8712c976e7af74e2a615bb991c356
2021-03-27 18:26:11 +00:00
John Sully 0d69b7684e Prefetch keys even in pure RAM scenarios
Former-commit-id: 54c0f11db0b35f34c9dfc3c8b4b76b7b7921bacd
2021-03-26 23:48:24 +00:00
John Sully a66295ed98 Eliminate unnecessary lookup in ensure when there is no snapshot
Former-commit-id: 04540531b95ebadf6d60c90c6681c11060eaf907
2021-03-26 23:44:42 +00:00
benschermel 9a8d93708a bump version
Former-commit-id: 4272a7de24
2021-03-26 22:57:19 +00:00
benschermel 2abff4220c update rpm script for centos8
Former-commit-id: f52815d309
2021-03-26 22:55:12 +00:00
John Sully 83e8e613a2 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 7e0bcf58224921abf2046dc1f58606ed18ebb379
2021-03-26 02:54:50 +00:00
John Sully 352bde8d89 Fix issue where timethread wakes too slowly
Former-commit-id: 60f875f5eb7cb541e537f0f440ce8d5aeac57862
2021-03-26 02:54:33 +00:00
John Sully d9848fc0dd Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: c180de1c6d3ef25877ec3b4c50698624dfd3320d
2021-03-26 02:36:27 +00:00
jsully ace6ad4752 Merge branch 'timethread_idle' into 'keydbpro'
Sleep the time thread when server sleeps

See merge request keydb-dev/KeyDB-Pro!15

Former-commit-id: 0864c46e38f85f03ea69a18162e3797370c17c91
2021-03-26 02:36:01 +00:00
John Sully 8ec77ffbf2 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 20d2c4fd62bb1867b8970b2bb282bd2ed64bcf6e
2021-03-26 01:50:51 +00:00
John Sully 111bdabbae Fix bug where we skip valid dict elements in dictGetRandomKey
Former-commit-id: c25a9a3b84c967428b3598c99a65b14ed2417571
2021-03-26 01:18:39 +00:00
John Sully dbe8a10fbf Prevent unnecessary copies in replication scenarios
Former-commit-id: 84c671cdafae7e84beef722fcc8a90b92918c89d
2021-03-25 23:14:48 +00:00
christianEQ 13697db121 moved time thread code to end of beforeSleep
Former-commit-id: ac1022c772c7357571829f24c87aa3dc2deade72
2021-03-24 21:16:21 +00:00
christianEQ fa44f2650e serverAsserts on sleeping_threads, remove bare locks
Former-commit-id: 8c64ca2333d8eb2ee92d835907474ec63e127b62
2021-03-24 20:44:40 +00:00
christianEQ 6d1be2a3f5 counter for time thread sleeping threads
Former-commit-id: 6270939d6a2d7820fecac9c5aedf0ff985531f6b
2021-03-24 20:33:26 +00:00
John Sully 131a8c9e35 Fix bug where we skip valid dict elements in dictGetRandomKey
Former-commit-id: 626b56b00824573660af0c47b210fd1e8d2cfeb2
2021-03-24 20:26:33 +00:00
christianEQ 22cffc5d54 removed extraneous wakeTimeThread cal
Former-commit-id: cfb5c5d7dc1e09c51ca416a2dbb19eab4bbaa77a
2021-03-24 20:24:07 +00:00
John Sully 54fb01e24a Don't run code in evict unless we really have to
Former-commit-id: b665b1c2b2df96883a6e2237f7bf3f9b1bec2a89
2021-03-24 20:13:42 +00:00
John Sully fa244c930e Bump RocksDB version for better perf
Former-commit-id: ab4ae61b9c54b3c28dc5fd775d0df3d377c4846a
2021-03-24 20:12:43 +00:00
John Sully 18da2dd091 Fix bug where we skip valid dict elements in dictGetRandomKey
Former-commit-id: 291a3610a679cb1d17caadf6ab067cad41885935
2021-03-24 19:58:51 +00:00
christianEQ 28895d72fe added condition variable to time thread; wake on afterSleep, sleep on beforeSleep
Former-commit-id: ff2f2a3aceff2ba4a74951197348d67fc39568b2
2021-03-24 19:27:39 +00:00
John Sully 0ce53d6ce1 Disable assert
Former-commit-id: b5d5eeee7cb1900eba192704e5d68c90b9f2b9f2
2021-03-23 23:50:48 +00:00
benschermel 6b18ab6ab4 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 99021efc9d4b59a93328e6f85db8b29010b3b0b1
2021-03-23 21:29:16 +00:00
christian d841598ea0 Merge branch 'rebrand' into 'keydbpro'
Rebrand

See merge request keydb-dev/KeyDB-Pro!14

Former-commit-id: 6840087819f26804302635dd0a75de523e133f8c
2021-03-23 20:01:05 +00:00
benschermel efa9d4ef98 addressing comments from merge review
Former-commit-id: 955aa69ca16ca7230d5099ad16f6f825402b5dd5
2021-03-23 18:41:59 +00:00
John Sully c6fc1bcfe3 Perform GET command inline
Former-commit-id: 5623936d99e334ab103f3dc1541b145c125d0ee8
2021-03-23 03:44:20 +00:00
benschermel 5c145039d4 update enterprise wording for keydb.config lk
Former-commit-id: feb2d31e6544763c94f4abaea69bc98bd1cb8b17
2021-03-21 05:19:28 +00:00
VivekSainiEQ 50884c6a20 Updated jemalloc to version 5.2.1
Former-commit-id: 7fefc7b245
2021-03-19 20:10:27 +00:00
VivekSainiEQ f4dbaab531 Removed hasModuleGIL boolean and added fix from PR #292
Former-commit-id: 68d213f4c9
2021-03-19 20:10:24 +00:00
VivekSainiEQ 932fd2e79a added lock releasing w/ hasModuleGIL, changed module serverTL, and moved module_blocking_pipe to global scope to fix issue #276
Former-commit-id: 7d9a2ce827
2021-03-19 20:08:28 +00:00
benschermel 2fd3097269 update rpm script for centos8
Former-commit-id: c6ef287452
2021-03-18 19:31:54 +00:00
benschermel 2cddb1f6e9 bump version
Former-commit-id: d5b042f010395628734848fc0b7db370fa9106c4
2021-03-18 02:11:19 +00:00
benschermel 20de526037 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: c03c45a1a1bf3c92a75804e123e34ea394adad07
2021-03-18 02:01:15 +00:00
benschermel 2e5ecd9003 minor fixes
Former-commit-id: ad7a27d41fb9e8e47966bbee72b28a4be66bbd8f
2021-03-18 01:16:57 +00:00
christianEQ 0436e62b7a fix old reference to c variable (monkey)
Former-commit-id: 0b9b6413c70d4ba71bbabcd0b22fb004d804958f
2021-03-17 20:22:01 +00:00
christianEQ 4944836478 removed unused stuff from monkey
Former-commit-id: be55daa6f7bcbf137b37269d1ee7a5fcacc14ff0
2021-03-17 20:17:52 +00:00
christianEQ 34d019f483 fixed runtime arg for monkey
Former-commit-id: b3e6e1f13b3d24c92d9f7e8441831232f47ff053
2021-03-17 19:50:28 +00:00
christianEQ ca97f6e454 working blpop test in monkey
Former-commit-id: 21af13c2a38741ad9e036fad42b23ea2454ac33c
2021-03-17 16:10:06 +00:00
christianEQ a2d8079d49 track each command separately in monkey
Former-commit-id: e3accdaad985fd9f93490a5cc6704d9ecb909604
2021-03-17 16:03:51 +00:00
benschermel 2c6d5c991f fix rpm script for centos8
Former-commit-id: 6790d9b793b1995b2faae7dbfb5d09dce90a878c
2021-03-17 05:11:01 +00:00
benschermel d1bfe49bc2 update all packaging to support enterprise dist
Former-commit-id: 1fd4f27cd271090fc66dba3b09a3800bf1c33b0e
2021-03-17 02:30:34 +00:00
christianEQ 6119273c5e unblocking test to monkey, works with 1 client
Former-commit-id: 9fbe8cf6a8aeb141d4a502532a456e4256f4daf8
2021-03-17 01:40:38 +00:00
christianEQ a93234accc parameterized monkey options
Former-commit-id: eda1055689587c25dca3e889dd3a74d3f9c9378f
2021-03-16 23:19:29 +00:00
John Sully 44603c8227 Make async rehash behave with snapshots (thread safety issues)
Former-commit-id: 372adf39a80252b8035e3c948fcaf7d5ef6f928f
2021-03-16 02:38:41 +00:00
John Sully 61d548079c Remove snapshot consolidation because its not properly thread safe
Former-commit-id: dcb86d2b92e3ecdb9f914b6f5de9e184cdd23036
2021-03-16 02:37:49 +00:00
John Sully 15e1ee620f Fix TSAN errors in tests
Former-commit-id: 30207d2ab34f175b94f430f97581191343d23f1e
2021-03-16 02:29:24 +00:00
benschermel e40fe53395 re-label keydb-pro-server to keydb-server
Former-commit-id: eb6f61ad372f0f4e573b9b731eac6c7f2ada0d9f
2021-03-16 01:57:26 +00:00
John Sully dc658ba47b Support deletes in the monkey
Former-commit-id: 84101aaa1bd0c89fbaffc11a264788cd75458c48
2021-03-15 19:41:38 +00:00
John Sully ada1f2a527 Add the monkey script to enhance testing
Former-commit-id: 57ce7b9e9976ca6827415d756ea3cabef1a0d615
2021-03-15 15:32:43 +00:00
John Sully 319b4039af We can't swap databases if there are async rehashes
Former-commit-id: 4b8967f94667309c5585032db7403bf4c8885145
2021-03-15 05:46:52 +00:00
John Sully d7f3f2b4e5 Enable more asserts to better validate snapshots
Former-commit-id: 01113e2eec3a0dbe0d07f98289a0050df7713047
2021-03-14 23:40:41 +00:00
John Sully 7197ba2fe5 Fix incorrect memory order on refcounted strings
Former-commit-id: fcf3368b1d56ad7a11e510e5a66e415a46277e8b
2021-03-14 19:42:56 +00:00
John Sully 5bd11ae0eb Avoid queuing null pointers to be freed
Former-commit-id: f50541d437cd1d98139c29407bb3fb4d6ce17fca
2021-03-14 03:22:10 +00:00
John Sully 767efb2519 Ensure the hash is passed through when moving tombstones
Former-commit-id: 91c8d2d38a33175c64c987b75e94c4b8782a3cdc
2021-03-14 03:21:09 +00:00
John Sully bb96b066e2 Reduce log spam
Former-commit-id: a5ba7bdde5435ad5b7cf066e0b45f6df1f784808
2021-03-14 03:19:41 +00:00
John Sully 650fa335eb Remove rarely used bug-prone code paths from tricky snapshot code
Former-commit-id: dff84228afb97962d77caefe948154090dd5ce23
2021-03-14 03:19:04 +00:00
John Sully 6bf6956c30 Add checked build support to makefile
Former-commit-id: 7e27c371679d780137a5d39b03b9472651ddf686
2021-03-14 03:18:24 +00:00
John Sully d2c9ce84df bump version
Former-commit-id: c802ea93a167ff6c59e585d4ab72c9f7b6b03a1c
2021-03-10 04:03:56 +00:00
John Sully ff3c13a938 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 066f984e5223f58b239d99c115901ea9845da513
2021-03-10 04:03:13 +00:00
John Sully bf81e55547 If we're clearing the command queue we need to reset the parse length
Former-commit-id: 19068f990a77fb428a50a8f751ed6f8cf59a8a74
2021-03-10 02:53:52 +00:00
John Sully 7636676988 When we add a delay to rdb save for test purposes we still need to check for aborts
Former-commit-id: b057b4d05aae6c08b855bfc9ae48d41ad0e881f8
2021-03-10 02:53:15 +00:00
John Sully a2c2337cd9 Fix failed merge due to overwriting the hashidx and pretending no rehash is in progress
Former-commit-id: 0524b822a05b732e0f3e510dcaeb3304069d3595
2021-03-10 02:52:22 +00:00
John Sully 50060b4a13 Fix crash saving an RDB
Former-commit-id: 51c35f03a84f7ada0f150a1c3992df574ab89b95
2021-03-05 00:54:11 +00:00
VivekSainiEQ 883fba7f04 Updated module tests to default to multithreaded and added tests for RM_CreateTimer while loading .rdb
Former-commit-id: e6091a2b7e
2021-03-04 23:33:01 +00:00
John Sully 902264efb7 Load perf fixes with a storage provider set
Former-commit-id: 861b19de00c75c9167cc25031292284ad1c21893
2021-03-04 07:41:06 +00:00
John Sully 50ce24a10c Fix compile warnings
Former-commit-id: c314cab888e9c8b3e825b2dfe0c0392ee998bdc4
2021-03-03 22:12:51 +00:00
jsully ba5b7a6da1 Merge branch 'time_thread_priority' into 'keydbpro'
time thread priority + nanosleep

See merge request keydb-dev/KeyDB-Pro!11

Former-commit-id: 423b76a2bbbd568f525f6469ce829ab053972536
2021-03-03 18:55:07 +00:00
John Sully 08b9f21d71 Data loss issue due to async rehash interfering with snapshots
Former-commit-id: 5245ca9a67c74b34139cafc9754543d1b8bed90a
2021-03-03 07:06:19 +00:00
John Sully ea6ba8370d In low load async rehash may not complete in time, do it in the cron
Former-commit-id: 0a27d30753d887b6251e645abe26118068c55587
2021-03-03 07:05:51 +00:00
John Sully 4066ce8f3a Don't let dictionaries shrink too rapidly. It can cause massive perf issues while in the shrink rehash
Former-commit-id: a7ad346e4f03c85d22a29c8268d35471e86283aa
2021-03-03 07:05:12 +00:00
John Sully 76698beeaf Drastically improve perf when loading an RDB with a storage provider
Former-commit-id: 0133b42d54676e8fac2c5cb006cc87988dced268
2021-03-02 04:16:20 +00:00
John Sully 6065f276c4 Key prefetch error handling instead of crashign
Former-commit-id: b322a14efb1b897134b229c1726b45264b57783f
2021-03-02 01:38:12 +00:00
VivekSainiEQ d855afdcac Fixed bug where make USE_SYSTEMD=yes would not pass in correct flags, issue #226
Former-commit-id: 69dc0a06bf
2021-03-01 21:31:33 +00:00
John Sully eabfae81b3 Bump version
Former-commit-id: 31392562b27a6fc1576476626a27a3defe13795f
2021-02-28 21:02:25 +00:00
John Sully 0cba72ba14 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 7609673e282b46a760a3d0e0b42d685af9b4d056
2021-02-28 20:46:08 +00:00
christianEQ 175b266c34 time thread priority + nanosleep
Former-commit-id: c84f296edabc001a1836ab8437f746dcff811148
2021-02-26 20:17:34 +00:00
John Sully 877ad1e4b2 Don't complain about unclean shutdowns with an empty database
Former-commit-id: 99f5c02e87062552eaa2f26e960eb7c9dd977c84
2021-02-26 06:06:58 +00:00
John Sully bbb310f419 Eliminate needless lock
Former-commit-id: 60f972d463f202edb33ff9a25bc2bd3e2558105c
2021-02-26 05:40:56 +00:00
John Sully 6ee9d69763 Eliminate the need for an mfence by tricking the CPU into ordering the futex read
Former-commit-id: 340e6f5bc94cd1c3b0c6fb6da833e8504acaf23a
2021-02-26 01:28:05 +00:00
John Sully 4f632962c1 eliminate syscall in call()
Former-commit-id: 3ee111a2e50bc29818ba85ae4fb786171d695c37
2021-02-26 01:03:10 +00:00
jsully 1459d88a6d Merge branch 'timethread' into 'keydbpro'
Offload updating cached time to dedicated thread

See merge request keydb-dev/KeyDB-Pro!10

Former-commit-id: 31786a995d0220ec0cb4502917a8cc0f192da4cb
2021-02-26 00:50:22 +00:00
christian 53b7b83af6 Offload updating cached time to dedicated thread
Former-commit-id: 9bfc8a43952481b5b54a7b051d44b8bece4a18dd
2021-02-26 00:50:22 +00:00
John Sully ca13fda90f Fix issue where finding random keys is slow due to not shrinking the hash table.
Former-commit-id: fd05010cdcf9d6a6187ca2e18bc55adbaa680a02
2021-02-22 09:14:24 +00:00
John Sully 87fc018415 Implement maxstorage config
Former-commit-id: 79e07859dfec14edf2a39646013e1a82db033d4f
2021-02-19 05:17:41 +00:00
John Sully 3ac42ec80c Disable async rehash with single threads, it causes slowdowns as the rehash never completes
Former-commit-id: 5d08dbdf76c0fd1e0cfcf86b97ef3e656f0e4f5d
2021-02-16 21:07:43 +00:00
John Sully c43bb8e8b5 Fix deadlock in storage prefetch
Former-commit-id: 9e6162de08248f7726b97b73aee2f23808ff4e7b
2021-02-12 19:38:57 +00:00
John Sully ef471e6e53 Enable prefetch with storage providers
Former-commit-id: 21f9c52c446ad1b460a340c3d873839b2355728f
2021-02-11 00:50:21 +00:00
John Sully fdfbd8cc91 Fix polarity issue in async rehash
Former-commit-id: dfea168499
2021-02-09 05:10:22 +00:00
John Sully e5e1350219 Fix polarity issue in async rehash
Former-commit-id: 9eefba49d4fcde7f12929929d7aeb36f5186a63d
2021-02-09 02:41:44 +00:00
John Sully 3de15c16ac Fix deadlock with disconnecting client and storage provider
Former-commit-id: 0831745323e425f463322e8c0dc27fc25854868e
2021-02-08 19:02:01 +00:00
John Sully 078abba316 Merge branch 'unstable' into keydbpro
Former-commit-id: e2140793f2bf565972ada799af73bf4457e2718d
2021-02-08 18:17:09 +00:00
John Sully 4efab08466 Fix bug in fastlock stack metadata
Former-commit-id: 241d1bd7e1
2021-02-07 19:11:05 -05:00
John Sully 662fc28fdc Disable multithreaded rehash when active defrag is enabled. The two are not compatible
Former-commit-id: 56addcd172
2021-02-07 19:11:05 -05:00
John Sully 1b3dc3d422 The server should recalibrate periodically. Also reduce log noise
Former-commit-id: 8d8e1810d4
2021-02-07 19:11:05 -05:00
John Sully 27552cb307 Ensure the C lock implementation behaves the same as the ASM
Former-commit-id: b5ddc11c46
2021-02-07 19:11:05 -05:00
John Sully ba006abe02 Ensure rehash completes even when we're in a long running task
Former-commit-id: f107746e90
2021-02-07 19:11:05 -05:00
John Sully 495dff1e8c Implement rehash during spinlock
Former-commit-id: f68a26381a
2021-02-07 19:11:05 -05:00
John Sully 071ecb801a Allow multiple threads to rehash simultaneously
Former-commit-id: 5a2cc90786
2021-02-07 19:11:05 -05:00
John Sully 6379ae6c7f Fix races in free
Former-commit-id: 3881d5c1f2
2021-02-07 19:11:05 -05:00
John Sully 1c0b603def Initial implementation
Former-commit-id: 958f2c00c8
2021-02-07 19:11:05 -05:00
John Sully 5c884b6fd8 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 4a269c3382083f6ad7f697ef07eebc552e0de9d8
2021-02-08 00:02:54 +00:00
John Sully f4c7da7284 Merge branch 'unstable' into RELEASE_6
Former-commit-id: 0b7b5332f2
2021-02-07 23:55:58 +00:00
John Sully aa47e643b0 Fix memory leak in mvccRestore
Former-commit-id: 165333b0fc
2021-02-07 23:38:49 +00:00
John Sully e2f634aef5 Fix cluster test failure
Former-commit-id: 230fde39882766426d892fd30d0c8349f5cca912
2021-02-07 23:38:25 +00:00
John Sully 6a7b193fc1 Fix memory leak in mvccRestore
Former-commit-id: 92da1cbd0a08b66264f170a9b57ef7270f270157
2021-02-07 23:38:09 +00:00
John Sully 52c1d17127 Update test to handle forkless bgsave
Former-commit-id: fc8c6de8252e6b802688413050f1a823093d0a1d
2021-02-07 21:41:19 +00:00
John Sully b20ab1fd21 Merge branch 'keydbpro' of https://gitlab.eqalpha.com/keydb-dev/KeyDB-Pro into keydbpro
Former-commit-id: 8bad923169b2a73f249fd8b3153236d6a74100c9
2021-02-07 20:53:07 +00:00
jsully 1c0c0ebd3f Merge branch 'opensourcemerge_2021-02-01' into 'keydbpro'
Merge from open source Feb 5 2021

See merge request keydb-dev/KeyDB-Pro!9

Former-commit-id: 1a2e2b99cc0123b1b03b78b5f28107df395decdb
2021-02-07 20:49:08 +00:00
christianEQ fc83515309 fixed up backup stuff
Former-commit-id: 8a23162c24dc13a4268928c5defd85b0b5249d39
2021-02-04 22:36:32 +00:00
christianEQ ed2a86c98f removed bgsave test, not applicable to keydb pro
Former-commit-id: d017c160662702ebcdbf063df239b907c2a193c5
2021-02-03 19:13:53 +00:00
christianEQ c69b2845fd Merge remote-tracking branch 'opensource/unstable' into keydbpro
Former-commit-id: 5bad058733de2c217340bb9ee48f02b07d754808
2021-02-03 18:10:27 +00:00
John Sully 651abfdca0 Module test reliability
Former-commit-id: cc827e157a
2021-02-01 22:21:49 +00:00
John Sully cb5119b756 Simplify the handling of CreateTimer
Former-commit-id: 7b4e25008a
2021-02-01 15:51:22 -05:00
VivekSainiEQ b0f94bd4b5 Modified RM_CreateTimer to prevent more that one function being posted at a time
Former-commit-id: f66e5a9c3d
2021-02-01 15:51:22 -05:00
VivekSainiEQ cf122aa54d Changed RM_CreateTimer to only call aePostFunction is existing aePostFunction isn't in flight
Former-commit-id: 9954f5b4a4
2021-02-01 15:51:22 -05:00
VivekSainiEQ 84dc6401c7 Now post entire timer installation process as one function to make atomic with respect to global locks
Former-commit-id: 53936661c8
2021-02-01 15:51:22 -05:00
VivekSainiEQ 49132539dd Updated header file to remove fSynchronous flag
Former-commit-id: e2552ff8a9
2021-02-01 15:51:22 -05:00
VivekSainiEQ 662037e3a3 Removed more uses of fSynchronous and the use of condition variable and mutex on the control struct.
Former-commit-id: 6ab08cc3e1
2021-02-01 15:51:22 -05:00
VivekSainiEQ 2addbe7e4a Added fix for scenario where module thread waiting for s_mutexModule in acquireGIL can deadlock with module thread waiting for s_mutex in releaseGIL
Former-commit-id: 3205373bb3
2021-02-01 15:51:22 -05:00
VivekSainiEQ dd0b8af2c5 removed synchronous calls to aePostFunction and changed scope of g_fModuleThread in order to prevent module related deadlocks, issue #214
Former-commit-id: 3b8d1f7076
2021-02-01 15:51:22 -05:00
John Sully 3c663b69b8 Bump version
Former-commit-id: d30fcfbe8a
2021-01-31 21:24:49 +00:00
John Sully 9c59979955 Merge branch 'unstable' into RELEASE_6
Former-commit-id: 32b11ab809
2021-01-31 21:24:07 +00:00
John Sully 84576e9b39 ARM build fix
Former-commit-id: 5832c25ad1
2021-01-31 21:22:23 +00:00
John Sully 68ed1292ee Fix test failure caused by allowing pings during load
Former-commit-id: 569a3d9ff8
2021-01-31 07:15:55 +00:00
John Sully 10a745df65 Reduce intermittent failures by giving tests more time
Former-commit-id: 69bc7108bd
2021-01-31 06:33:13 +00:00
christianEQ a0ae32a9f0 added exception to allow pings during loading
Former-commit-id: 8a557e9d71
2021-01-31 00:12:49 -05:00
christianEQ 19dc63bd3a added severity levels for afterErrorReply
Former-commit-id: fe0f071993
2021-01-31 00:12:49 -05:00
John Sully d4408580b5 Improve multithreaded test reliability
Former-commit-id: effa53339c
2021-01-31 04:33:27 +00:00
John Sully 7766b37062 Fix test failure due to bad merge
Former-commit-id: f6fb0e4620
2021-01-31 03:40:57 +00:00
John Sully 516eee7a1a Fix CI failure due to missing package
Former-commit-id: cf46a014c1
2021-01-31 02:36:30 +00:00
John Sully 543d92d0ff Fix crash on shutdown command
Former-commit-id: d72b5fa16d
2021-01-31 02:30:28 +00:00
christianEQ 7d3b48fc33 Merge pull request #284 from christianEQ/redismerge_2021-01-20
Merge Redis 6.0.10 into KeyDB

Former-commit-id: 0151507cef
2021-01-29 10:59:36 -05:00
christianEQ 5a6f7c395f killMainThread -> killServerThreads
Former-commit-id: 0fea781f8f
2021-01-28 23:57:19 +00:00
christianEQ 3d2a59d7ae compare_exchange in connSocketRead, explicitly enforce memory order (even if redundant)
Former-commit-id: 3c4cadc020
2021-01-28 23:17:48 +00:00
christianEQ 9d62e397bd fixed replicaof no one config, added test case
Former-commit-id: e2615ccf88
2021-01-28 19:49:22 +00:00
christianEQ 304a037cb3 updated version num to 255.255.255
Former-commit-id: 595deb0e13
2021-01-28 16:54:22 +00:00
christianEQ 3949e90920 Merge remote-tracking branch 'john/unstable' into redismerge_2021-01-20
Former-commit-id: 5372d1aab2
2021-01-27 22:25:14 +00:00
christianEQ 70960ffe12 arm locker before checking zmalloc_used_memory
Former-commit-id: 52eca14ca6
2021-01-27 22:24:06 +00:00
Daniel Dai 6ffb95a313 Fix Swapdb crash
Former-commit-id: 1155f5ac63
2021-01-27 15:24:10 -05:00
christianEQ 5668a5d02d fixed uninitialized variables in ACLSetUserCommandBit
Former-commit-id: 7319953ae3
2021-01-26 23:29:15 +00:00
christianEQ b840a1a3eb fixed strncpy off-by-one errors
Former-commit-id: b8e106a72e
2021-01-26 23:27:28 +00:00
christianEQ 59ffc79765 removed unimplemented killIOThreads function declaration
Former-commit-id: f30f8eba2f
2021-01-26 22:27:22 +00:00
christianEQ 8d7142488b fixed server.cpp mentions
Former-commit-id: 7ed2296fc5
2021-01-26 22:22:19 +00:00
christianEQ 0312d89c7a added note about io-threads to keydb.conf
Former-commit-id: 0691a46669
2021-01-26 22:10:53 +00:00
christianEQ 237f3e8524 fixed race condition in connSocketWrite
Former-commit-id: d7f01c1f7d
2021-01-26 22:08:07 +00:00
christianEQ 1907c4f6f8 Removed Redis-specific things from conf file
Former-commit-id: 4d71929c60
2021-01-26 21:50:45 +00:00
christianEQ c068f2cd3d Merge tag 'tags/6.0.10' into redismerge_2021-01-20
Former-commit-id: dadce055f8
2021-01-26 21:43:09 +00:00
christianEQ ab80e23152 changed loading process config types to be consistent across environments
Former-commit-id: d2867580ab
2021-01-14 21:12:36 -05:00
christianEQ 464a08226d renamed loaded key counter to be more clear
Former-commit-id: 8dc238efae
2021-01-14 13:06:57 -05:00
christianEQ 81f4f73c30 removed 'comment arguments' from config options (doesn't ignore inline comments)
Former-commit-id: 7cd4b5e11c
2021-01-14 13:06:57 -05:00
christianEQ 047e1174d9 fixed signedness warning
Former-commit-id: 00043f9509
2021-01-14 13:06:57 -05:00
christianEQ 9262739be2 added section to keydb.conf for new options, tweaked default
Former-commit-id: 9b81f3f263
2021-01-14 13:06:57 -05:00
christianEQ 327c44f8eb ping replicas during key load
Former-commit-id: 2747d1a1a9
2021-01-14 13:06:57 -05:00
christianEQ 28a0cdc572 added config option for loading callback interval keys
Former-commit-id: 9f7ed0b232
2021-01-14 13:06:57 -05:00
christianEQ fc3388acfe configurized loading_process_events_interval_bytes
Former-commit-id: c176ea7366
2021-01-14 13:06:57 -05:00
John Sully e9274a0a93 Fix intermittent module test failure, resizing the repl backlog is not good enough to clear the backlog
Former-commit-id: d50e4bb819
2021-01-12 00:29:07 +00:00
benschermel dd58268712 update perf chart, build info, job post link
Former-commit-id: 4485ca74f6
2021-01-11 11:40:00 -05:00
benschermel ca7ca0ee3a created ascii logo image
Former-commit-id: 7f72b214e5
2021-01-11 11:40:00 -05:00
John Sully 64d24938b3 Merge branch 'repl_perf' into unstable
Former-commit-id: bc8cc1adb3
2020-12-24 02:22:57 +00:00
John Sully 7d3d900cc5 Don't write in the lock
Former-commit-id: 93b7364aaecbe578be4b75c18c840c4b396c7d4e
2020-12-17 06:52:59 +00:00
John Sully b6479099d3 Merge branch 'unstable' into keydbpro
Former-commit-id: 53a062a6b796ccbd43560fed1b05367ba759da96
2020-12-11 18:39:30 +00:00
John Sully 248b6a52e3 Merge branch 'unstable' of https://github.com/JohnSully/KeyDB into unstable
Former-commit-id: d03c2de901
2020-12-11 03:59:50 +00:00
John Sully fb3c28ee49 don't try and free a client that can't be freed
Former-commit-id: 7d3c5f1e64
2020-12-11 03:59:39 +00:00
John Sully 5fbe23164d Prevent use after free
Former-commit-id: 81573de393
2020-12-11 03:59:26 +00:00
John Sully 34c014fb41 Merge branch 'unstable' into keydbpro
Former-commit-id: e59c3945d3ed0b05a3e42713b091b1b5c96a9db2
2020-12-11 00:49:54 +00:00
John Sully aab452cf61 Remove AE_ASSERT and use the proper assert infra
Former-commit-id: a80dd5d001
2020-12-11 00:24:27 +00:00
John Sully 3e8ac111b5 Prevent test crash due to unimplemented save for nested hash
Former-commit-id: 7e0077f293
2020-12-11 00:23:44 +00:00
John Sully 68665aeeb3 Fix crash freeing nested hash with list
Former-commit-id: 1eb035e6ad
2020-12-11 00:23:14 +00:00
John Sully 856dd45bf6 Fix test timeouts
Former-commit-id: 6f3feee67678b594fbe9fd592f9f823a7a07b770
2020-12-10 20:09:19 +00:00
John Sully 6b6ae228e1 Merge branch 'repl_perf' into keydbpro
Former-commit-id: c4431a6be7a1ddc05abdd4510630fac2a2a6664e
2020-12-10 18:45:52 +00:00
John Sully 5c832c5ad0 Merge branch 'unstable' into keydbpro
Former-commit-id: b7a1e16c0f04e8aeb3764e3681fa14fc0f97f6a3
2020-12-10 02:37:28 +00:00
Kajaruban Surendran ed3835ce5e Addressing PR comments
Former-commit-id: bdd14ac517
2020-12-04 14:54:06 -05:00
Kajaruban Surendran b09730b4e2 Addressing PR comments
Former-commit-id: 63e5d00bdf
2020-12-04 14:54:06 -05:00
Kajaruban Surendran 877f94734c Handling of aeResizeSetSize's return code for current thread
Former-commit-id: c25fb3d74f
2020-12-04 14:54:06 -05:00
Kajaruban Surendran d25fc8a950 check the aeResizeSetSize return code
Former-commit-id: 572d41325b
2020-12-04 14:54:06 -05:00
Kajaruban Surendran e62592666c Adding thread index to the error message
Former-commit-id: e02120cdf7
2020-12-04 14:54:06 -05:00
Kajaruban Surendran e53d00c320 Call aePostFunction to change the setsize of each threads by that thread
Former-commit-id: 7b1221a74d
2020-12-04 14:54:06 -05:00
Kajaruban Surendran 04ad6b5078 Calling initServerThread function cserver.cthreads(server-threads) times than MAX_EVENT_LOOPS(constant)
Former-commit-id: d6b4f994ad
2020-12-04 14:52:28 -05:00
christianEQ e6b4537a5d Issue: #204 Allocate 8 MB to thread stack
Former-commit-id: 66a41dafc4
2020-12-01 14:50:03 -05:00
John Sully abd543c8e9 Issue: #260 Don't use C++ static_assert in C files
Former-commit-id: f19b9c155e
2020-11-30 23:01:20 +00:00
John Sully c470266991 code coverage reports should test multithreaded
Former-commit-id: 5d016fdb6b
2020-11-30 22:59:00 +00:00
VivekSainiEQ 6da123ce77 Added module data type load/save tests
Former-commit-id: cae9924fd9
2020-11-30 17:47:04 -05:00
VivekSainiEQ 363cb7ec5b Removed use of module datatypes, now should work if tests/modules is not built
Former-commit-id: 089f28e8ba
2020-11-30 17:47:04 -05:00
VivekSainiEQ 6e00ea188b Added tests for saving various data types to disk and loading them back, and for loading data types from redis to maintain compatibility
Former-commit-id: dcb44d3a09
2020-11-30 17:47:04 -05:00
VivekSainiEQ 14bfa4618a Added remainder of runtest scripts to make lcov command. Code coverage goes from 57.9% to 72.1%
Former-commit-id: f99cba0b92
2020-11-30 17:47:04 -05:00
VivekSainiEQ fd3f2c7da4 Added KeyDB.info to .gitignore file
Former-commit-id: e10dc0dace
2020-11-30 17:47:04 -05:00
Kajaruban Surendran 188e7a5693 Configurable option for MOTD
Former-commit-id: 49a89d636b
2020-11-30 10:42:48 -05:00
VivekSainiEQ 9748c7af67 Added references to KeyDB.info instead of redis.info
Former-commit-id: b94f91b9b2
2020-11-25 18:49:20 -05:00
VivekSainiEQ 16c7fe3490 Properly escaped $ in lcov command
Former-commit-id: 06a17c8511
2020-11-25 18:49:20 -05:00
VivekSainiEQ e6a8c99eef Updated 'make lcov' command to exclude external dependancies and generate final code coverage percentage
Former-commit-id: eebd70aaa6
2020-11-25 18:49:20 -05:00
VivekSainiEQ 67fcffe545 Added test for issue #257
Former-commit-id: 779c775df9
2020-11-25 17:21:37 -05:00
VivekSainiEQ c7fd0951c5 Made NULL pointer check explicit, issue #257
Former-commit-id: 1d4d2925c2
2020-11-25 17:21:37 -05:00
VivekSainiEQ b9089ab13c Added NULL check to function objFromAllocPtr, now NULL input will map to NULL output even if active replica is enabled
Former-commit-id: b67db7c2d5
2020-11-25 17:21:37 -05:00
John Sully a2439842f6 Merge branch 'unstable' of https://github.com/JohnSully/KeyDB into unstable
Former-commit-id: 18953b2998
2020-11-23 02:01:54 +00:00
John Sully 50c2a8524c Fix issue where active replication doesn't replicate RDB data
Former-commit-id: 527b7eb074
2020-11-23 02:01:40 +00:00
Kajaruban Surendran 1b77279021 fix for the server crash when the maxclients increased via config set
Former-commit-id: 34a97c447f
2020-11-20 15:20:46 -05:00
John Sully 3366f914d4 Blocking clients should not crash if an active replica loads a remote RDB with a key in the blocklist
Former-commit-id: 1c525e20b1
2020-11-19 23:28:01 +00:00
John Sully 5d68c2ca8f Merge branch 'RELEASE_6' into keydbpro
Former-commit-id: 2ee33cb050b26cbe34f0b390b8807cdc1b908ded
2020-11-19 20:38:47 +00:00
John Sully 3e828a5988 Ensure multithreaded tests pass
Former-commit-id: 0bcce50285
2020-11-13 21:08:10 +00:00
John Sully 973b769b21 Improve replication performance in multithreaded scenarios
Former-commit-id: 96e0b2a2b1
2020-11-13 21:08:10 +00:00
John Sully 104164aa14 Add ability to compile KeyDB without MOTD and curl
Former-commit-id: f3794d2c42
2020-11-13 20:51:30 +00:00
John Sully 2fdac516a6 Add missing file
Former-commit-id: 97fd736923
2020-11-11 03:29:38 +00:00
John Sully 4f7ac9c11f Second implementation of nested hashes
Former-commit-id: ba950a3d1f
2020-11-06 19:24:48 +00:00
John Sully f6f5fc3ccf Additional test reliability fixes
Former-commit-id: dad5a902d3
2020-10-27 07:25:43 +00:00
John Sully 67003ec714 Disarm not release D'oh
Former-commit-id: 3e33fbcd35
2020-10-27 06:41:33 +00:00
John Sully c3ef2f00bb Active replica test reliability enhancements
Former-commit-id: 444555d3e4
2020-10-27 06:23:14 +00:00
John Sully 2ae013910b Prevent crashes on shutdown due to lock being held
Former-commit-id: 6a74f524e5
2020-10-27 04:53:19 +00:00
John Sully 366ef70f6e Ensure MVCC timestamp is incremented after the real time is updated
Former-commit-id: 9c5b59ac01
2020-10-27 04:52:35 +00:00
John Sully a3323d2b5b Fix multithreaded test failure
Former-commit-id: 1840601f8e
2020-10-27 01:54:13 +00:00
John Sully 418b6206ea Avoid unnecessary memory fences
Former-commit-id: 88962af8b2
2020-10-26 02:28:38 +00:00
John Sully 19a4d2d358 Remove addReply*Async methods since we already know if its async or not. This is just a source of bugs
Former-commit-id: df22cdf6e9
2020-10-24 02:18:03 +00:00
John Sully 7a9fbad132 Allow the locker to be used even without a client
Former-commit-id: 041446005b
2020-10-23 20:21:49 +00:00
John Sully 0691608ba0 Fix multithread test failures
Former-commit-id: 7c39a9b0e1
2020-10-23 15:57:39 +00:00
John Sully 5fb0c880a8 Remove leak warning with ASAN in the CLI
Former-commit-id: 05cd92f766
2020-10-21 21:16:08 +00:00
John Sully 4c4a8da208 run when necessary
Former-commit-id: d724e7226c
2020-10-16 07:00:03 +00:00
John Sully 91388bd42d Fix replica buffer overflows
Former-commit-id: 738c782f02
2020-10-16 06:47:40 +00:00
John Sully 9c65bd8f3d Avoid locking if we won't run a time event
Former-commit-id: 33b05c859a
2020-10-16 06:19:52 +00:00
John Sully 85492ccee8 Reduce async write copies
Former-commit-id: ed369d7223
2020-10-15 23:10:17 +00:00
John Sully 654379bd0c Fix branding
Former-commit-id: fb32bb12b1
2020-10-15 20:15:35 +00:00
John Sully f275456439 Relax memory order where possible
Former-commit-id: 3e996035ea
2020-10-13 06:35:16 +00:00
John Sully 8c33983e57 Significantly improve perf in replication scenarios
Former-commit-id: ae8a94d615
2020-10-12 15:27:03 +00:00
John Sully 6496ea5145 Avoid excess locking, seeing up to 8% performance improvements
Former-commit-id: 69a74a567b
2020-10-12 05:50:58 +00:00
John Sully 6de6515bfc Perf: remove unnecessary vector operations
Former-commit-id: 1b46d4f09a
2020-10-12 04:28:39 +00:00
John Sully 27e17220c2 Remove dead code
Former-commit-id: c6f13892e0
2020-10-09 21:02:09 +00:00
Hanif Bin Ariffin b238eca1ce Fixed non-empty check in src/Makefile
Per [GNU Make Manual](https://www.gnu.org/software/make/manual/html_node/Conditional-Syntax.html).
To properly check for non-empty variable, one must strip whitespaces.

Signed-off-by: Hanif Bin Ariffin <hanif.ariffin.4326@gmail.com>

Former-commit-id: 05e0f32345
2020-10-05 10:58:49 -04:00
Hanif Bin Ariffin 4b63a5202b Removed dead code from a macro in zmalloc.cpp
I think the compiler would have removed this no-op anyways but it
definitely wasted me some 30 minutes on this :(

I was hoping I could remove the branch through some bit-hacking but
apparently its dead code :). Oh well, its 30 minutes of refreshing
bit hacking.

Signed-off-by: Hanif Bin Ariffin <hanif.ariffin.4326@gmail.com>

Former-commit-id: 8171e6de13
2020-10-03 20:41:26 -04:00
John Sully 9d8897c50e Delete CONTRIBUTING
Former-commit-id: b042495f37
2020-10-01 11:17:56 -04:00
John Sully 04f834037a Fix module test failures due to locking
Former-commit-id: 420ccdfbae
2020-10-01 00:08:54 +00:00
John Sully 3529a1564b Fix TLS test failure due to bad merge
Former-commit-id: 41466a4147
2020-09-30 20:21:40 +00:00
John Sully 13d472b160 Keep redis-cli.c C89 compatible
Former-commit-id: 9798f2d711
2020-09-30 20:17:51 +00:00
John Sully 5fd3c39c05 Mac build break fix
Former-commit-id: 5f3543921b
2020-09-30 20:17:02 +00:00
John Sully 6448de4461 Fix stream replication failure with active replication, issue #238
Former-commit-id: a41366cc3a
2020-09-30 20:12:54 +00:00
John Sully 14daf6f909 Merge tag '6.0.8' into unstable
Former-commit-id: 4c7e4b91a6
2020-09-30 19:47:55 +00:00
John Sully c0df1ac173 Test RDB merge on load with active replication
Former-commit-id: 28183f4b66
2020-09-29 03:26:06 +00:00
Ben Schermel a0ca031b8c update deb changelog
Former-commit-id: 63c47a09e9
2020-09-28 23:42:54 +00:00
Ben Schermel f338a3024b update deb changelog
Former-commit-id: 087af94c22
2020-09-28 20:51:31 +00:00
John Sully 3fbb5b5efa Drop min-clients-per-thread to a more reasonable number
Former-commit-id: bf3a3225fc
2020-09-28 19:19:47 +00:00
John Sully 59e86a111b Drop min-clients-per-thread to a more reasonable number
Former-commit-id: a0abc1eddd
2020-09-28 19:17:36 +00:00
John Sully bdd58afb8f bump version 6.0.16
Former-commit-id: dab9296d7c
2020-09-28 19:14:17 +00:00
John Sully 0f9bb23dc5 Merge branch 'unstable' into RELEASE_6
Former-commit-id: a6f5a391a1
2020-09-28 18:55:24 +00:00
John Sully cb6bc67a87 Merge branch 'unstable' into keydbpro
Former-commit-id: d1986d9fcdfd56f2c30ee95edef6d5260e0aa777
2020-09-24 22:02:30 +00:00
John Sully c373c2b652 Support read only replicas attaching to active replicas (Bug #229)
Former-commit-id: 676644f2db
2020-09-23 04:16:08 +00:00
John Sully 28fdf8d7d4 Active replicas memory leak
Former-commit-id: 22ac56d62d
2020-09-22 21:38:35 +00:00
John Sully 18a3e0ba35 Merge branch 'unstable' of https://github.com/JohnSully/KeyDB into unstable
Former-commit-id: 143f7f634d
2020-09-21 04:42:46 +00:00
Dmitry Dorofeev a830b2fdbf Fix to support FreeBSD pthread_getthreadid_np call
Former-commit-id: 955faef23a
2020-09-21 00:41:41 -04:00
John Sully b81dee212a Fix TSAN errors in fastlock
Former-commit-id: 2e159e6ea3
2020-09-21 03:26:50 +00:00
John Sully 3b66147997 Fix issue #222
Former-commit-id: 02b533fec3
2020-09-21 01:09:58 +00:00
John Sully d38583454c Make multimaster replication info statelessly paresable
Former-commit-id: de3099e6d8
2020-09-20 23:57:06 +00:00
John Sully 17648d9705 Dramatically improve the performance of subkey expires
Former-commit-id: 368f67f422
2020-09-20 23:30:21 +00:00
John Sully fb53b5630c Reduce test noise
Former-commit-id: 13c9a094d1
2020-09-19 22:00:17 +00:00
John Sully 2f1a99efa5 Fix CI failure due to apt host changes
Former-commit-id: 0f8b7a19ef
2020-09-19 21:49:59 +00:00
John Sully bf6569afb3 Avoid memory overhead in situations it won't be used (active rep only)
Former-commit-id: 8f7d977f90
2020-09-19 21:44:59 +00:00
John Sully ced0413189 Update endurance test for ubuntu 20
Former-commit-id: 064440ee84
2020-09-17 02:10:18 +00:00
John Sully ec72a9451e Fix build break
Former-commit-id: 50641d0569
2020-09-17 00:53:56 +00:00
John Sully 17592f1da3 master_global_link_status should respect the quorum
Former-commit-id: f5ecc77e29
2020-09-17 00:31:10 +00:00
John Sully de3769b3ee Allow reads during an active replica load, optionally allow writes as an experimental feature
Former-commit-id: 655bb6e21c
2020-09-17 00:13:03 +00:00
John Sully e125742671 Implement replica-quorum config
Former-commit-id: ab4cdd2ed4
2020-09-16 03:26:31 +00:00
Yossi Gottlieb 3d111508a1 TLS: Session caching configuration support. (#7420)
* TLS: Session caching configuration support.
* TLS: Remove redundant config initialization.


Former-commit-id: d3834c5069
2020-09-16 02:10:29 +00:00
John Sully dc9b75314b Protocol error in client command
Former-commit-id: 7a1b2c58c3
2020-09-11 20:48:18 +00:00
John Sully 4a3e312551 Fix more protocol errors
Former-commit-id: 7fc6d6c6b1
2020-09-11 20:47:27 +00:00
John Sully caac3d12f9 Fix protocol difference with Redis
Former-commit-id: dec5db4e71
2020-09-11 20:08:26 +00:00
John Sully ac42f938e8 Fix whitespace
Former-commit-id: d47aeb1fc8
2020-09-07 03:35:46 +00:00
John Sully 1c1b114555 Dramatically improve perf by blocking commands
Former-commit-id: e47584b286
2020-09-07 00:49:53 +00:00
John Sully ff9df842d8 Implement use-fork config (fails with diskless repl)
Former-commit-id: f2d5c2bca22e9fd506db123c47b7f60cdded7e2c
2020-08-24 03:17:59 +00:00
John Sully 91bd125fb4 Implement use-fork config (fails with diskless repl)
Former-commit-id: 4e941b8d30612c1051a9dde67effaf8c5a86456f
2020-08-24 03:17:31 +00:00
John Sully dcf607622c Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: ed98be0ba81ffdc501847ea0d2486f5f01391319
2020-08-17 02:26:51 +00:00
John Sully 93a67abe52 Fix ARM build of RocksDB
Former-commit-id: 7301d6d5e76b65115e2610a5fc5afee443782d7c
2020-08-17 02:25:45 +00:00
John Sully e8e7061a73 Fast cleanup of snapshots without leaving them forever
Former-commit-id: fdd83b2b49244ed2988b080892ee5cffe9fd2684
2020-08-17 00:33:37 +00:00
John Sully c0586b3aed Allow garbage collection of generic data
Former-commit-id: feadb7fb1845027422bcfca43dbcb6097409b8dc
2020-08-17 00:32:48 +00:00
John Sully 00934cd341 Add snapshot depth to info string
Former-commit-id: 66aef678e9d6d7ab6c28622d54ada0ea8cdd2a99
2020-08-16 00:27:10 +00:00
John Sully 4a356ac13f Don't try and consolidate snapshots with a depth of 1
Former-commit-id: 26c298bd9bc4e2c6981de5c20284120ea54580c3
2020-08-16 00:26:05 +00:00
John Sully 3093d9e117 Only save MVCC tstamps if its an active replica
Former-commit-id: 5aded7dbad055308dc3932f7797fc71684b60966
2020-08-16 00:24:18 +00:00
John Sully cf4e74006f Don't free snapshot objects in a critical path (under the AE lock)
Former-commit-id: d0da3d3cb74334cc8a2d14f4bdaef7935181700a
2020-08-16 00:13:19 +00:00
John Sully 311b286d41 BUG: Cannot have an EMBSTR bigger than 255
Former-commit-id: e2d6e2d9d585cb7a73f469a8580f9cb0ec71a429
2020-08-15 23:30:22 +00:00
John Sully 82989540c4 remove unnecessary allocation in rdb save
Former-commit-id: dfa76f04fd862e0cc7b4d3284b3922e3a5e5549d
2020-08-15 23:27:32 +00:00
John Sully ce69a765f8 Remove unnecessary key comparisons in perf critical snapshot paths
Former-commit-id: 40f8a8d102fdca9443399ef03a47df609b146d58
2020-08-15 23:25:58 +00:00
John Sully 1055543817 dictMerge perf improvements
Former-commit-id: 48401ec369c5693689ef658cca518dc94ab1402e
2020-08-15 23:14:29 +00:00
John Sully eb572c57e2 Rehash efficiency
Former-commit-id: fab383156626ec683881101c22eb2f6c2cea4c5d
2020-08-15 23:05:56 +00:00
John Sully 6c6ca43eef Prevent unnecessary copy when overwriting a value from a snapshot
Former-commit-id: 654a7bc6ea82f4ac45a1c1a25c794e1c27c0d902
2020-08-15 22:59:01 +00:00
John Sully c804b28446 Merge branch 'unstable' into keydbpro
Former-commit-id: ae482585f0dc470efd73833f74111c2f87a172c5
2020-08-15 21:29:00 +00:00
John Sully 6b8e979434 Prehash the tombstone for cleanup
Former-commit-id: c9d97a7c7448fc769486175bea1648589487c87c
2020-08-14 16:05:39 +00:00
benschermel b3861ac64c update changelog
Former-commit-id: 6709f3c8b776921fafd59046c646283f383cab71
2020-08-11 04:39:08 +00:00
John Sully 636ea4db9f 6.0.15 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 05140de5a46d05e39815472f96be526868800f30
2020-08-11 00:27:31 -04:00
John Sully 9090e26aca Add build flag to disable MVCC tstamps
Former-commit-id: f17d178d03
2020-08-10 06:10:24 +00:00
John Sully 9928562dad Fix lock after free in module API
Former-commit-id: d88fd1588d
2020-08-10 06:10:24 +00:00
John Sully 0cb8d4ca63 MVCC Perf fixes
Former-commit-id: 5a4afe5fb4231bec34d434f9e3214a7320842091
2020-08-10 05:45:56 +00:00
John Sully 4037ee98a4 Fix assert caused by freeTombstoneObjects and null check in consolidate_children
Former-commit-id: 8565a02b331cd2bba2a1c7c6693dfb3f6e61c845
2020-08-10 05:01:36 +00:00
John Sully 848057ff19 RocksDB Read Performance Improvements
Former-commit-id: 80cca4869888e048e10e11f1f20796c482c3e5b3
2020-08-09 23:36:20 +00:00
John Sully 94020160dc Ensure we use the SSE CRC32 instruction
Former-commit-id: 78ef8976e86d07d4c1fa7c4631a610babf2f4776
2020-08-09 01:47:53 +00:00
John Sully 80dc68e497 Start off storage cache with a larger size
Former-commit-id: 5f6fb970a81cc73586ba595b35564e7865e7262d
2020-08-09 00:57:56 +00:00
John Sully 3c13a4bc25 Disable compression it destroys read perf
Former-commit-id: d3fffc12ae5339886f54c064127497f277393b00
2020-08-06 22:30:56 +00:00
John Sully ef7198e24d keydbpro unstable version should be 0.0.0
Former-commit-id: 4a6e0772f36d5dd721ad2e9b83f9fccce2e38ff0
2020-08-06 02:13:23 +00:00
John Sully 2c9c4a98ea Latency normalization with SCAN
Former-commit-id: 237f25d854e70d4d7a3095fdf56aaa80770e492e
2020-08-04 04:37:16 +00:00
John Sully 6f320425d6 Bump version
Former-commit-id: 76c557e9f3c15094aa4f2c5f8a4484f73c7a96a4
2020-07-16 22:45:13 +00:00
John Sully d12e90823c Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 9bc0cb29f1c8dc8258603ea1c353fe495c1228ae
2020-07-16 22:42:48 +00:00
John Sully 6ec308c30f Fix memory leak in MVCC scan
Former-commit-id: 3acf80f8dd5ebc311670398745ef3400333a1fcb
2020-07-16 22:42:24 +00:00
John Sully 4f908b1096 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: eb00c2dddc385dad4b0695d64b4f99f7a003c208
2020-07-14 04:34:56 +00:00
John Sully 658ebaa454 Fix test failure
Former-commit-id: 05d84f5fc184676d32c4bb61ac5957f1787cd4f8
2020-07-14 04:34:40 +00:00
John Sully 6cf5e8f2b2 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 08264b4e755cee34704c85b191606a2b28d6d883
2020-07-14 04:25:05 +00:00
John Sully 9112445059 Add new storage-provider-options config
Former-commit-id: 195a28beecc6094f959ddafef7fe33f5b55e4047
2020-07-14 04:24:46 +00:00
John Sully 198db651d2 Remove gitter, we don't check it often enough
Former-commit-id: 119797014c
2020-07-13 21:14:03 -04:00
John Sully c9ff0292d8 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 86eb3f5c5ea3c17d798e74126e08114a2dd2449e
2020-07-13 18:16:05 +00:00
John Sully 731de57fb7 Merge branch 'keydbpro' of https://github.com/JohnSully/KeyDB-Pro into keydbpro
Former-commit-id: 7ce91d858f298d6172df7152fcf49188ca8251f3
2020-07-13 18:15:15 +00:00
John Sully 503ca68e8c Perf fixes on expire lock
Former-commit-id: 7f23ac087720317f54a0bc0e0c4774e7b0ef4337
2020-07-13 18:14:52 +00:00
John Sully ad5ad52841 Build fixes from cherry-pick
Former-commit-id: 70efd87cf71bb230e8b53d1c4ed3dd91997b4d23
2020-07-13 16:09:03 +00:00
John Sully af10f809b4 unoredered_map is faster, reduce latency with the switch
Former-commit-id: f241e435ed0fd2988ada887f02e19884fd82be51
2020-07-13 16:04:00 +00:00
John Sully fc119b3e56 Remove unnecessary work from critical path (Latency Fixes)
Former-commit-id: 096a90deb7afe489875d3186f3f8f43e41fea329
2020-07-13 16:03:52 +00:00
benschermel a8b68d0a45 updating deb changelog
Former-commit-id: ea03d462ceddfbece66099304a91cc706fc93411
2020-07-13 01:41:18 -04:00
benschermel 2cbf586ec7 update deb changelog
Former-commit-id: a6782a3c0d
2020-07-13 01:35:25 -04:00
John Sully 15ce65a170 Bump version
Former-commit-id: 297f50e491030c2a65448aa80ec543263e28c298
2020-07-13 04:00:24 +00:00
John Sully 7ed6e1a197 Bump version
Former-commit-id: f7d7baccc9
2020-07-13 03:59:16 +00:00
John Sully 414b3102ca Merge branch 'flash_cache' into keydbpro
Former-commit-id: 2a721ef645921d62b39f1374c0a3f5c92b00fae5
2020-07-13 03:53:34 +00:00
John Sully 8c2c0fba12 Merge branch 'PRO_RELEASE_6' into keydbpro
Former-commit-id: bffe010ea5279bee869bc61cc6d933979e10bbea
2020-07-13 03:32:14 +00:00
John Sully f17dab1f67 Merge branch 'unstable' into keydbpro
Former-commit-id: 0dafbc254a0efd5ee302d5c58fb2ca0a85110104
2020-07-13 03:31:47 +00:00
John Sully 7ace525b7b Merge branch 'unstable' into RELEASE_6
Former-commit-id: eff294e374
2020-07-13 01:05:36 +00:00
John Sully 6f8e9a64fa Merge branch 'unstable' of https://github.com/JohnSully/KeyDB into unstable
Former-commit-id: e8f568644b
2020-07-13 01:05:17 +00:00
John Sully 7f36b5541e Merge branch 'unstable' into RELEASE_6
Former-commit-id: f7c2006bf6
2020-07-13 01:04:49 +00:00
John Sully 84bf240caa Merge tag '6.0.5' into unstable
Redis 6.0.5


Former-commit-id: b736a95b0d
2020-07-13 00:55:23 +00:00
benschermel ed77abee5e update rpm permissions
Former-commit-id: 7aec1e5c6463ea77d27833c66e124e8184c4a123
2020-07-12 18:08:29 -04:00
benschermel 76426c3172 Merge branch 'unstable' of https://github.com/JohnSully/KeyDB into unstable
Former-commit-id: d909d12cb3
2020-07-12 18:04:40 -04:00
benschermel 6c48ba994e update rpm permissions
Former-commit-id: 201ffa9d62
2020-07-12 18:03:21 -04:00
John Sully 70824b3bdb Add the KEYDB.MEXISTS command, see issue #203
Former-commit-id: 5619f51528
2020-07-12 21:42:11 +00:00
John Sully f853142083 Add multi-master-no-forward command to reduce bus traffic with multi-master
Former-commit-id: d99d06b125
2020-07-12 19:25:19 +00:00
John Sully c6e5ba8313 Document min-clients-per-thread
Former-commit-id: 1b9ade7f65
2020-07-12 18:49:02 +00:00
John Sully 6158cdfd29 Prevent deadlock in RM_ThreadSafeContextLock() when triggered as part of a module callback in a server thread
Former-commit-id: e01312642b
2020-07-12 18:17:53 +00:00
John Sully 3eca9ea38d Fix CLI crash on arch with hostname
Former-commit-id: 55fd37e8d6c3775d0b1bd13966ca033f63945d7e
2020-07-12 05:38:08 +00:00
John Sully 336ee77691 Fix CLI crash on arch with hostname
Former-commit-id: a5b584d7d36c60cbbcf815572229b6c80a3a3dce
2020-07-12 05:37:43 +00:00
John Sully dedfe2d63c Fix failure to replicate with license key
Former-commit-id: d34723c567b36f8222c93fac6f0ed1f79104f33e
2020-07-12 05:15:22 +00:00
John Sully 6c66fef004 Fix failure to replicate with license key
Former-commit-id: 41a72a795ade90b1aea509e9e3ebad819a997acf
2020-07-12 05:14:59 +00:00
John Sully 785779ee40 Fix failure to merge databases on active replica sync, due to bad merge with Redis 6
Former-commit-id: cd9514f4c8
2020-07-12 01:13:22 +00:00
John Sully d1a03fcd62 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 507b791211b4b0c3251dc538fa385cd95a189e80
2020-07-11 22:27:32 +00:00
John Sully ead6e22865 Add KeyDB Pro info section
Former-commit-id: d73015fae36ece6db7b088cc55843385688b1866
2020-07-11 22:21:12 +00:00
John Sully 074cb1edc1 Sentinel doesn't need a license key
Former-commit-id: bc2d8c18255214b873bf45d8db8af3727ebc4723
2020-07-11 22:13:07 +00:00
John Sully 06a8e2aa2a Fix failure to replicate with non-pro server when license key is set
Former-commit-id: a69beef7d92223c8dcebb9c39ca2409183571e57
2020-07-11 22:09:27 +00:00
John Sully 3af243a447 Support missing Redis 6 config options
Former-commit-id: f111c23415
2020-07-11 21:39:20 +00:00
John Sully 4b58160c61 Support missing Redis 6 config options
Former-commit-id: d467701c6cd8ebe2937c6fda816a706a6b17182a
2020-07-11 21:38:17 +00:00
John Sully d67265de66 Implement storage key cache, and writeback memory model
Former-commit-id: 732bd9c153459f1174475ad67de36c399ddbe359
2020-07-11 21:23:48 +00:00
John Sully 6912b10aed Eliminate eviction loops. And don't OOM so often with storage providers set
Former-commit-id: 6e61cd33b4366f008b07aae88f49fd0ac9cbcaec
2020-07-11 06:51:08 +00:00
John Sully a3cf9ce109 Eliminate eviction loops. And don't OOM so often with storage providers set
Former-commit-id: 189674aea74c483bf0869050ecf7bf2b0b49f34e
2020-07-11 04:23:35 +00:00
John Sully 8256661b7a Bump version
Former-commit-id: ee5a281ed0012aca359b9448df5236bef719f4a7
2020-07-10 04:13:42 +00:00
John Sully 2cc88a96ab Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 243dcb3853cc965109cb24a940229db7844cdd11
2020-07-10 04:11:57 +00:00
John Sully dab9d8d90b Merge branch 'mvcc_scan' into keydbpro
Former-commit-id: f0a3f491b61a9bb7ee4ab86098958cb161b75f59
2020-07-10 03:44:20 +00:00
John Sully 2192c97d35 MVCC scan support filtering by type on the async thread
Former-commit-id: 14f8c0ff686b93976eead5fa6bf526c2eecb5ae0
2020-07-10 03:43:56 +00:00
John Sully 3692771457 Fix issue where SCAN misses elements while snapshot is in flight
Former-commit-id: ce005d748ebf0e116d674a96f74d698d17394010
2020-07-10 01:43:51 +00:00
John Sully 1fef6c42b7 Disable MVCC GET, the overhead is not worth it
Former-commit-id: 8c7e1001e98be0d0e6fe0079fc9406d5d65366ff
2020-07-10 01:43:32 +00:00
John Sully 4ec5c3eb31 Fix issue where we fail to return all data
Former-commit-id: 7341c9ed14d13386a045afd6deda9c0db422cd5f
2020-07-10 00:18:10 +00:00
John Sully 2db9eef2b1 Graceful shutdown running async jobs
Former-commit-id: 2ce5b94741d384b2dfd6d3b347fa1582cd45df8f
2020-07-10 00:17:39 +00:00
John Sully 993359e1bb Fix race in db iterators in scan
Former-commit-id: a6444870660c0d3f52cd7b1dc0b80223f0d58e70
2020-07-09 22:29:27 +00:00
John Sully bce5cb098b Do actual filtering on the async thread
Former-commit-id: 64b17139b7b5ff55bb52f27dc6f91cb81adde031
2020-07-09 21:58:06 +00:00
John Sully 29e4973d7b Initial scan implementation (not tested)
Former-commit-id: 0f3911d56e6878d91b6e3cacc7d637934ffe6099
2020-07-09 12:57:35 -04:00
John Sully ffc3aefc41 Latency fixes
Former-commit-id: 6857c4c208
2020-07-01 21:59:38 -04:00
Muhammad Zahalqa f024fe30f4 replace memcpy with cctor on objects
Former-commit-id: 52897f8f9a
2020-06-24 23:20:59 -04:00
Muhammad Zahalqa ec28161271 unique lock used with cv.wait already owns mutex
Former-commit-id: 8bc70e9840
2020-06-24 23:18:53 -04:00
Muhammad Zahalqa 63bb6cb419 Fix bug in condition_variabe.wait usage
consition variable wait should always be called with a locked mutex.
This code break the pre-conditions of using wait.


Former-commit-id: 5b81303f04
2020-06-24 23:18:53 -04:00
Muhammad Zahalqa e25ec37484 fixes for robj_sharedptr
1. fix cases where null pointer might be accessed
2. make assignmnet op safe
3. make operator bool explicit (safe bool idiom)
4. make comparison operators symetric

fix robj_sharedptr use in rdb.cpp


Former-commit-id: ede524c064
2020-06-24 23:18:27 -04:00
Muhammad Zahalqa c4cd846388 aeCommand objects no need for memset and missing init of some memebers.
Former-commit-id: aeed09c346
2020-06-24 23:15:29 -04:00
benschermel cd8b82db55 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 6e9ec7ae3ca49a6054f012e567eb74307227c330
2020-06-24 00:34:35 -04:00
benschermel 9c2769804e update deb changelog
Former-commit-id: 85fe16238fdb692067f77f631b0589366823ba34
2020-06-24 00:32:10 -04:00
John Sully 638926621a Merge PKG files from unstable
No code change


Former-commit-id: 42c4d85d72
2020-06-24 00:16:21 -04:00
Ben Schermel 4d6b7c278b bump version after merge
Former-commit-id: 59279d36e9337ca89518c4d1edef6c26911ea190
2020-06-16 14:17:20 -04:00
Ben Schermel e0d2a1cff6 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: cf7ed118553af55a27c3a57c121bc26e18e0ab7e
2020-06-16 14:16:03 -04:00
Ben Schermel 38f5ed20a0 Merge branch 'PRO_RELEASE_6' of https://github.com/JohnSully/KeyDB-Pro into PRO_RELEASE_6
Former-commit-id: ff7ec3ec39d692ed59c945ace5c9a4ec140f5e52
2020-06-16 14:15:51 -04:00
John Sully e81a4a159a Fix crash in async delete when storage provider is not set and key doesn't actually exist
Former-commit-id: 4a4828390118ab52851d8bf229c4ae853100053c
2020-06-15 19:47:06 -04:00
Ben Schermel 9e9064782d Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 97280cec291bca779739e008b9467fbb40a19a5f
2020-06-10 17:35:21 -04:00
Ben Schermel b301f19c7e Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: f70e34b999ba842617ed39b88a7f5bb453d570c5
2020-06-10 17:27:34 -04:00
John Sully ab9e3f1d2a Fix failure to find expire during rehash
Former-commit-id: b66269865cb71a5e1dd33588b012206da2765824
2020-06-10 12:48:54 -04:00
John Sully 15e2b066f3 Bump version
Former-commit-id: c7b16835b1c52e9d8a4859a5b6e42ea5f6a31df2
2020-06-09 21:03:11 -04:00
John Sully 10908dc384 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 9d8d3a54fdb9eaad0a7cfc3d938fa35d2819fa93
2020-06-09 21:02:55 -04:00
John Sully 29faa06028 Fix assert false alarm when freeTombstoneObjects is called
Former-commit-id: e21a011072505cfa0a37afefb94f7270e80625c5
2020-06-09 20:59:09 -04:00
John Sully ec01cc23b1 Fix lock inversion
Former-commit-id: 430cf88623fce8f0675ea19f73d98f6cafe9070f
2020-06-09 20:58:03 -04:00
John Sully 324e8e01f2 COW pointer is not thread safe so we need a global expire lock
Former-commit-id: ac12eef75301564d920e622a08e4f586486fd395
2020-06-09 19:58:42 -04:00
John Sully 725fa84a06 keys command should look at the snapshots expire datastructure
Former-commit-id: 70563afab48e607e127c07d637660d94d1eede6d
2020-06-09 18:57:36 -04:00
John Sully 49fecbe1d4 Implement replicaof remove as requested in issue #192
Former-commit-id: 70b80aa5fa
2020-06-09 12:43:58 -04:00
Ben Schermel 18527706b6 fix issues from rebase
Former-commit-id: 5d7cc28208bbe7b49eed0d1b1c2bb1c31e65e865
2020-06-09 00:10:58 -04:00
Ben Schermel c6dea493ac update Dockerfile
Former-commit-id: 3f8dcfdf865ca0857bf2d5261b858cc3daa22f3f
2020-06-09 00:10:58 -04:00
Ben Schermel e0ab07a560 updating changelog
Former-commit-id: 5affe6dd268bb333214f70f5f809050e4b00b28b
2020-06-09 00:10:58 -04:00
Ben Schermel aecd839fa9 dh9 for stretch deb pkg
Former-commit-id: 5cf02197ba418b5302759c14195ffa33a1db70fe
2020-06-09 00:10:58 -04:00
Ben Schermel 6f52e35b02 fix missing sentinel
Former-commit-id: 01fe9274e8cb73a065d8550f220d07e5eacd0156
2020-06-09 00:10:58 -04:00
Ben Schermel 267c11b427 update changelog
Former-commit-id: e2be81157e9cd1f57b9d734c5536dc0f4d5dbb0b
2020-06-09 00:10:58 -04:00
Ben Schermel 6eac8be435 update changelog
Former-commit-id: f0fe6c6b3f249a919ad5f4a233049c7a931bf5cc
2020-06-09 00:10:58 -04:00
Ben Schermel 7be2964052 update changelog
Former-commit-id: 5acb71ac79be4b0404fc56e82485a28f9664a017
2020-06-09 00:10:58 -04:00
Ben Schermel 267b7e72ef update changelog
Former-commit-id: adb5f42d945960cbe153e3614a1126972c8ce841
2020-06-09 00:10:58 -04:00
Ben Schermel d7a1fe14a8 include support for dists < dh11
Former-commit-id: 1930b759a9acce126342709acfb7884649023f3d
2020-06-09 00:10:58 -04:00
Ben Schermel ada1407ac8 enable source build from dh9 where applicable
Former-commit-id: 9e8ea41f73674fb836f89e5d53474b271abf10d8
2020-06-09 00:10:58 -04:00
Ben Schermel 33afd43dde update rpm versioning
Former-commit-id: a3ccaeee78279356ec70b136df07026a9fdd43d7
2020-06-09 00:10:58 -04:00
Ben Schermel 46e96f23a4 fix rpmbuild dirs
Former-commit-id: 2cf077e6d3bc98cf75120185c7985030b0aa4040
2020-06-09 00:10:58 -04:00
Ben Schermel c8e6e23fb8 fix rpmbuild directories
Former-commit-id: 185b6459b065c740990ca503fad880e87d15c436
2020-06-09 00:10:58 -04:00
Ben Schermel ac1e1cec8b fix rpmbuild directories
Former-commit-id: 314639460f4959ad6f9d4342d5baa6ad4446e7d4
2020-06-09 00:10:58 -04:00
Ben Schermel 7778eb248b use dh_installsystemd
Former-commit-id: 9d6d4fba41550442bf04153dc6d6f19a42afb207
2020-06-09 00:10:58 -04:00
Ben Schermel 7b1ae4ceb9 adding dh_installsystemd
Former-commit-id: 39817055d85b4f6a0d575b94737f1b1b2c952708
2020-06-09 00:10:58 -04:00
Ben Schermel 9e067c12c7 fix pkg errors
Former-commit-id: 91ef1a50fb8602c7f09156a84eca17dca70b3d2e
2020-06-09 00:10:58 -04:00
Ben Schermel 54b1e673ce adding packaging
Former-commit-id: 108c58ba5333129eabf64f775e69f5cb7b6cbdf9
2020-06-09 00:10:58 -04:00
John Sully 8503b69bf9 Merge branch 'unstable' into keydbpro
Former-commit-id: ca3a50537e987bd30aec38265be535d89bb260f3
2020-06-08 16:51:16 -04:00
John Sully 76070d51a6 Update gcov for C++
Former-commit-id: e8d4d095cc
2020-06-08 16:48:44 -04:00
Ben Schermel 804f45b86f update Dockerfile
Former-commit-id: c50a3568a5
2020-06-08 15:34:22 -04:00
Ben Schermel d46b26cbc5 updating changelog
Former-commit-id: 17e96b91b5
2020-06-08 15:34:22 -04:00
Ben Schermel 5213d7e873 dh9 for stretch deb pkg
Former-commit-id: c5e7a8517b
2020-06-08 15:34:22 -04:00
Ben Schermel 0cd8d8abb7 fix missing sentinel
Former-commit-id: c36773777d
2020-06-08 15:34:22 -04:00
Ben Schermel 10ebe65658 update changelog
Former-commit-id: d69e0b8561
2020-06-08 15:34:22 -04:00
Ben Schermel 110cc2d6fc update changelog
Former-commit-id: 19ccc22a43
2020-06-08 15:34:22 -04:00
Ben Schermel a38376bf37 update changelog
Former-commit-id: 6968a0cfcb
2020-06-08 15:34:22 -04:00
Ben Schermel 5969877486 include support for dists < dh11
Former-commit-id: df618fbd9f
2020-06-08 15:34:22 -04:00
Ben Schermel b3dbf5d520 fix rpmbuild dirs
Former-commit-id: 94acd43340
2020-06-08 15:34:22 -04:00
Ben Schermel 4fe2e7d6fe fix rpmbuild dirs
Former-commit-id: 14bdd745d1
2020-06-08 15:34:22 -04:00
Ben Schermel b36b726312 adding dh_installsystemd
Former-commit-id: aa3f5de16f
2020-06-08 15:34:22 -04:00
Ben Schermel 58823a969f strip unused from deb source
Former-commit-id: 9f7890cb1a
2020-06-08 15:34:22 -04:00
benschermel f03f51694c add deb/rpm/docker support
Former-commit-id: 1dc34c16b5
2020-06-08 15:34:22 -04:00
benschermel d279e38f8c add deb/rpm/docker support
Former-commit-id: b0e7be7ce2
2020-06-08 15:34:22 -04:00
benschermel 1f331f05ef update github CI for deb
Former-commit-id: 026ab4c922
2020-06-08 15:34:22 -04:00
Ben Schermel 628a9d5cd1 update rpm versioning
Former-commit-id: 07ba64c200
2020-06-08 15:34:22 -04:00
benschermel 5ebad6291f add package utilities
Former-commit-id: b4b35cf904
2020-06-08 15:34:22 -04:00
John Sully ad4d76422c Some valgrind fixes
Former-commit-id: ba974c9810
2020-06-07 23:20:10 -04:00
John Sully f252cc9e41 fix valgrind false error
Former-commit-id: 9817db7edd
2020-06-07 20:17:47 -04:00
John Sully 27f454bafc fix valgrind false error
Former-commit-id: 887d8bdd110e04b30ffb215726e8aade39f0387a
2020-06-07 20:17:32 -04:00
John Sully 46f14ffc54 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 3106f60e0ebdba5db944e704d4b148ea81c806f6
2020-06-07 17:05:00 -04:00
John Sully 3004ca80a4 Fix merge bug
Former-commit-id: cc03c32271997d26ce7f07f96588f126c5939e69
2020-06-07 17:04:46 -04:00
John Sully 08842f8d6e Endurance mode for tests ignore flaky ones
Former-commit-id: 515bb0e6bd
2020-06-07 16:59:59 -04:00
John Sully 00ae6d58a9 Bump version
Former-commit-id: 4a3e1f3b9b
2020-06-07 16:43:07 -04:00
John Sully f26d5048cd Solo tests should work with loopn
Former-commit-id: 575fc98010
2020-06-07 16:43:07 -04:00
John Sully 3c63be7159 Stream tests rely on deferring clients, mitigate races caused by them
Former-commit-id: eb18345a61
2020-06-07 16:43:07 -04:00
John Sully cb7b03aeea replication test race
Former-commit-id: d528c5c2c2
2020-06-07 16:43:07 -04:00
John Sully 3b083f4ed9 fix race in test
Former-commit-id: fa03a539f3
2020-06-07 16:43:07 -04:00
John Sully 668d482f08 Make lazyfree more reliable
Former-commit-id: 9646b1d944
2020-06-07 16:43:07 -04:00
John Sully 55633ab401 Detect issues like #189
Former-commit-id: cc5e906ebd
2020-06-07 16:43:07 -04:00
John Sully d0d24e04f0 Ensure CRON jobs run in a clean environment
Former-commit-id: b0e14683b2
2020-06-07 16:43:07 -04:00
John Sully e2cd106d2d Undecorated new is OK to use
Former-commit-id: 8d5cc4cf0c
2020-06-07 16:43:07 -04:00
John Sully 16f86db5e4 Bump version
Former-commit-id: 52a0556ba15b26d84ca9b5c804eb8fe438c9c888
2020-06-07 16:41:59 -04:00
John Sully 8c24082f87 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 6495fe1c7878f96dffa25a2879cb2b825c9e10b2
2020-06-07 16:41:36 -04:00
John Sully 4001a99481 Merge branch 'unstable' into keydbpro
Former-commit-id: 461eea07260a31cd75753d5b7be691f5793a6f1b
2020-06-07 16:41:21 -04:00
John Sully d1208196ee Report flash disk usage
Former-commit-id: 8e4a71ccd31e3c643a6f7b5154d8f2a65d2de76f
2020-06-07 16:40:03 -04:00
John Sully 0120d23a48 Solo tests should work with loopn
Former-commit-id: bc7ea8fb20
2020-06-07 15:06:50 -04:00
John Sully 97908941bf Stream tests rely on deferring clients, mitigate races caused by them
Former-commit-id: 2caf8e4c80
2020-06-07 13:59:41 -04:00
John Sully 7384abfe56 replication test race
Former-commit-id: e1f3cd6ec3
2020-06-07 01:14:57 -04:00
John Sully c60bf228b4 fix race in test
Former-commit-id: 02e821530a
2020-06-07 00:44:11 -04:00
John Sully ebf5d2826a Make lazyfree more reliable
Former-commit-id: b6c3d80edb
2020-06-07 00:40:58 -04:00
John Sully 8f8015bb22 Detect issues like #189
Former-commit-id: 0042586190
2020-06-05 22:18:28 -04:00
John Sully 779023beff Ensure CRON jobs run in a clean environment
Former-commit-id: c6dce838b7
2020-06-05 21:35:47 -04:00
John Sully 848cd33d51 We need to search snapshots before deciding to not save a key
Former-commit-id: 357b09c500eecfe61970e121644a7200ac2387b9
2020-06-05 00:39:58 -04:00
John Sully a0e502684d Fix dangling lock
Former-commit-id: 212e56984edfa3221c73b1d3c083efcd28f0dd25
2020-06-04 22:59:24 -04:00
John Sully 9204f7b629 Fix race when we free an item before we finish writing to disk making it temporarily unavailable
Former-commit-id: 6139cfee295261d0210f2af6217c2a23eeaf52b8
2020-06-04 22:18:03 -04:00
John Sully e522540e2f Add latency marker for process changes phase for FLASH
Former-commit-id: 61e20b025d45b0af8ed60aab96246b30e4d0ed3d
2020-06-04 01:29:17 -04:00
John Sully bec9bb1e0f Latency doctor updated for KeyDB Pro
Former-commit-id: a2690fca4a74e92eb44d5e38f886b08363a6d7b0
2020-06-04 01:28:52 -04:00
John Sully 689c1354be maxmem samples way too high
Former-commit-id: 599cac856d4ec77d59c5f5b4fae5b9f194c202ef
2020-06-04 01:28:34 -04:00
John Sully 8888498bfd Make snapshot completion faster and add latency monitor
Former-commit-id: 8063be6ee70a652c22c3263dccf318366e208891
2020-06-04 01:07:14 -04:00
John Sully cb4bb9d7eb Consolidate snapshots should not consider keys in bulk storage
Former-commit-id: e02a8f503d45daf63150c60a8a8c3751b9b8581e
2020-06-04 00:26:51 -04:00
John Sully e7586ddca1 Disambiguate temp rdb files so its less likely two servers with the same working dir will collide
Former-commit-id: 8fbc5a63c54589bb42aa1b1b53c56f399211605c
2020-06-04 00:25:37 -04:00
John Sully f50ed30ad2 Only set tombstone if there is something to mask
Former-commit-id: ea092693f53ff0803c44a851219993a933166cc3
2020-06-04 00:23:37 -04:00
John Sully 28397f140a Extra debug checks in dictmerge
Former-commit-id: 839b2a151e6bad67017de87d7a637359f6ae63d1
2020-06-04 00:22:59 -04:00
John Sully b39f917335 Clear tombstone dict when clearing database we don't need it
Former-commit-id: a8e1ef075eacfc0b767302f2514ca6f0342982bc
2020-06-04 00:17:19 -04:00
John Sully 4cf14b6e49 Fix crash where tombstone is evicted
Former-commit-id: 1f6ff7cc0fc0173610d77a69076eeaf478c3b701
2020-06-03 23:30:35 -04:00
John Sully 1f9ca52b35 RocksDB compression is too slow
Former-commit-id: 665a8ff0a0a10ffecc36a8410030abd73879944c
2020-06-03 22:21:03 -04:00
John Sully cebc1b7e48 Add DB commit latency samples
Former-commit-id: 557ea8d285045496105e3330f0007e02aa4359d7
2020-06-03 22:06:05 -04:00
John Sully 589448bdf0 Fix crash when overwriting key stored in FLASH but not in ram during a BGSAVE while clustering is enabled
Former-commit-id: 32967b1d671b151bed976e3d13ce26c7e1496c82
2020-06-02 23:59:24 -04:00
John Sully f0849df48c Endurance not setup for pro
Former-commit-id: 97ad41effac1322a4ad14c441e23838bb20528da
2020-06-02 23:47:13 -04:00
John Sully 638993d992 Fix unmerged script
Former-commit-id: bb0df646cf4362b7f56b29ded89d167fc0f832a9
2020-06-02 21:16:24 -04:00
John Sully ffbd43fbfa Bump maxmemory samples by a lot
Former-commit-id: ae46d64b2e6b16f81df6b4e12ddc9fed63a9785b
2020-06-02 17:22:45 -04:00
John Sully ad174ab352 Merge error, server always flushes on eviction
Former-commit-id: 9b3b0c9a40ab5dcdac9620f0fbad84887cc9c832
2020-06-02 17:21:41 -04:00
John Sully 64adf015b1 Undecorated new is OK to use
Former-commit-id: 5b885bb164
2020-06-01 23:36:01 -04:00
John Sully 8bdca52222 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: a901505e562c0dc341fa939cce502da25642f7ba
2020-06-01 17:42:32 -04:00
John Sully 69a4ab0851 Merge branch 'keydbpro' of https://github.com/JohnSully/KeyDB-Pro into keydbpro
Former-commit-id: dd8cd6a00851b00120db9e52030c0bb85d15b54f
2020-06-01 17:42:09 -04:00
John Sully df3f1e8d8e Merge branch 'unstable' into keydbpro
Former-commit-id: 08a36155e3db9918048e87c3d691b7317787c9ab
2020-06-01 17:41:37 -04:00
John Sully a90ff44fb8 RELEASE endurance tests should run offset from unstable
Former-commit-id: b608acb349
2020-06-01 17:02:16 -04:00
John Sully c799f6855b Bump version
Former-commit-id: 8dbea2a050
2020-06-01 17:01:50 -04:00
John Sully 419720d5ef maxmem tests should be run solo for higher reliability
Former-commit-id: 95f46e6077
2020-06-01 16:50:30 -04:00
John Sully b2a885c98f Remove debug logs that shouldn't have been checked in
Former-commit-id: 31f58311e3
2020-06-01 16:34:05 -04:00
John Sully 4820142896 PSYNC test shouldn't wait forever
Former-commit-id: 130613e166
2020-06-01 16:13:58 -04:00
John Sully 92de178bfe PSYNC test reliability improvements (test only issue)
Former-commit-id: 50fd4fa7e6
2020-06-01 16:01:26 -04:00
John Sully 9e87395c34 Fix for issue #187 we need to properly handle the case where a key with a subkey expirey itself expires during load
Former-commit-id: e6a9a6b428
2020-06-01 15:33:19 -04:00
John Sully 02d602b3fd Update endurance.yml
Former-commit-id: d6be93537e
2020-06-01 00:25:31 -04:00
John Sully 0a9a32e5d7 Fix module multithreaded test failures
Former-commit-id: 1ef35cf466
2020-05-31 23:46:12 -04:00
John Sully 08fca5ef31 sendfile has high latency in some scenarios, don't use it
Former-commit-id: 1eb0e3c1c6
2020-05-31 23:22:25 -04:00
John Sully b30fa046f4 we must always respect the output of sdscat, also change the string so its not a substring of other config params
Former-commit-id: e50313b207
2020-05-31 23:22:10 -04:00
John Sully 9b9c54b4ce Do another iteration for endurance
Former-commit-id: ac3f8d1ac7
2020-05-31 22:51:02 -04:00
John Sully 4b317392be Don't start multimaster tests until all nodes are connected
Former-commit-id: 202b97eff7
2020-05-31 22:50:30 -04:00
John Sully de0540d34b Fix client race in test (test only issue)
Former-commit-id: f25aebf269
2020-05-31 21:39:50 -04:00
John Sully dd45ade779 --loop should run forever
Former-commit-id: 9b1e636a66
2020-05-31 21:27:15 -04:00
John Sully 9ab9a7684d PUBSUB test reliability: A client race was erroneously failing tests (test only issue)
Former-commit-id: 5147f0153a
2020-05-31 21:27:15 -04:00
John Sully 8919c770fe Update endurance.yml
Former-commit-id: 88f7739ae0
2020-05-31 17:50:02 -04:00
John Sully 7eb0563241 Active replicas referencing eachother should connect one at a time
Former-commit-id: c0c033a0c1
2020-05-31 16:03:50 -04:00
John Sully 891977d9b7 Fix race in futex_sleep
Former-commit-id: 73300c5700
2020-05-31 16:03:50 -04:00
John Sully 4a110615f3 Update endurance.yml
Former-commit-id: 37033179fe
2020-05-31 14:18:12 -04:00
John Sully e00b2a6386 Update endurance.yml
Former-commit-id: 3e6a5ac9cf
2020-05-31 03:43:06 -04:00
John Sully 412df47945 Endurance tests need more cores
Former-commit-id: dcd297eb5b
2020-05-30 22:16:56 -04:00
John Sully b58db1f7b9 Update endurance.yml
Former-commit-id: 4a9742e696
2020-05-30 20:03:04 -04:00
John Sully d344d9b0b9 Auto tune lock for high CPU tension scenarios
Former-commit-id: 8edbae2e04
2020-05-30 18:22:27 -04:00
John Sully 003dfea7f9 Ensure endurance run can complete in an hour
Former-commit-id: 63c6735ffc
2020-05-30 15:31:54 -04:00
John Sully baadab90e7 We only want one master connection in progress at a time, ensure that if the connection fails we try a different master
Former-commit-id: 8a0441c144
2020-05-30 15:13:28 -04:00
John Sully fcf183e4b5 daily CI config fix
Former-commit-id: 460c5ed2b3
2020-05-30 03:27:37 -04:00
John Sully 8fec593def More clients for endurance
Former-commit-id: 8f44f0937b
2020-05-30 03:13:04 -04:00
John Sully 73db61ea86 Endurance tests need to be faster, reduce loops
Former-commit-id: 1803b1587b
2020-05-30 02:40:44 -04:00
John Sully e48e8511ec Only CI ARM daily
Former-commit-id: a5325061f2
2020-05-30 02:34:37 -04:00
John Sully cc49720fd5 Also test with multiple threads
Former-commit-id: a10a0df09f
2020-05-30 02:10:00 -04:00
John Sully aedbb558ab Reduce clients for endurance test
Former-commit-id: 031044c7ea
2020-05-30 02:07:30 -04:00
John Sully d3b89c69ad Fix cron syntax
Former-commit-id: ca755e4905
2020-05-30 01:53:21 -04:00
John Sully 76b5b55da9 Add endurance CI tests
Former-commit-id: 3063a028b3
2020-05-30 01:47:26 -04:00
John Sully 7000884239 Update daily CI job
Former-commit-id: 2c659acc7d
2020-05-30 01:21:50 -04:00
John Sully f37ee5bd4d TLS requires we explicitly marshal connected sockets when using them on a different thread
Former-commit-id: 341a8caef9
2020-05-30 01:14:53 -04:00
John Sully ed77c35b15 Merge branch 'unstable' of https://github.com/JohnSully/KeyDB into unstable
Former-commit-id: 366f8c2dc6
2020-05-30 00:06:23 -04:00
John Sully bbff81e891 Fix memory test failures with multithreading enabled
Former-commit-id: 5803540422
2020-05-30 00:06:15 -04:00
Ben Schermel be6f1df429 centos build fix
Former-commit-id: f17c492a63
2020-05-29 22:23:48 -04:00
Ben Schermel 9936463c07 centos build fix
Former-commit-id: 6fe4571bf959432127b8741c22d8264fd55969b8
2020-05-29 22:21:01 -04:00
John Sully 5316f656d9 sendFile blocks too long for use with active replication
Former-commit-id: aad6a7ce15
2020-05-29 20:27:45 -04:00
John Sully 68bf5a04a0 Unify beforeSleep handling
Former-commit-id: 1cb48c7bf6
2020-05-29 17:44:55 -04:00
John Sully f18ba66242 Cluster crash
Former-commit-id: f25c405ad2
2020-05-29 03:40:52 -04:00
John Sully 2e0c684324 active replica tests on slow computers
Former-commit-id: c9920849dd
2020-05-29 01:58:15 -04:00
John Sully 688dceb3a8 Fix test issue with TLS
Former-commit-id: 81b240f81d
2020-05-29 01:44:52 -04:00
John Sully f79cc0011a Fix CI
Former-commit-id: 6a902b29e1
2020-05-29 01:01:41 -04:00
John Sully ed2e0e66f6 Merge tag '6.0.4' into unstable
Redis 6.0.4.


Former-commit-id: 9c31ac7925
2020-05-29 00:57:07 -04:00
John Sully a768c260dc Fix TLS tests
Former-commit-id: f0d8d1680f
2020-05-29 00:16:06 -04:00
John Sully 34d3bac791 gencert its own step
Former-commit-id: 6dcbcacb10
2020-05-28 23:49:13 -04:00
John Sully 8bb3ac40f1 CI yml syntax error
Former-commit-id: 3196717cee
2020-05-28 23:18:02 -04:00
John Sully f4f9e83ead Fix TLS tests in CI
Former-commit-id: f95578ac02
2020-05-28 23:16:42 -04:00
John Sully 71fbeb65b6 fix TLS test failure
Former-commit-id: 57ca6facc3
2020-05-28 23:16:27 -04:00
John Sully d9164a07b5 Test TLS as part of CI
Former-commit-id: 561a1f8d8a
2020-05-26 01:39:54 -04:00
John Sully 8ff703992c Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: f98c1999f95ec59f7201056781cb89dc465a1461
2020-05-26 01:38:52 -04:00
John Sully ef32f81fd9 Complete TLS merge
Former-commit-id: 856d23023259d59ce766e9cd00526de0e7d06c2f
2020-05-26 01:38:29 -04:00
John Sully f617eafbe1 Merge branch 'unstable' into keydbpro
Former-commit-id: b0636273806ce323627ce31c1ad7f86ceb39696d
2020-05-26 01:34:19 -04:00
John Sully ef4284c439 Merge branch 'unstable' of https://github.com/JohnSully/KeyDB into unstable
Former-commit-id: 1449c8b9fe
2020-05-26 01:29:08 -04:00
John Sully 5b44b62854 Fix client tracking, also ensure tracking tests are enabled
Former-commit-id: 1938af27f5
2020-05-26 01:28:52 -04:00
Maxime de Roucy c0f60008cb acl: @replication command group
containing mandatory commands for replication (used by masteruser user)


Former-commit-id: 123bc125cf
2020-05-25 02:35:22 -04:00
John Sully 4bb5c35548 Fix issue #170. Intermittent crash destroying fastlock due to implicit type conversion in assert
Former-commit-id: ecbe168b54
2020-05-25 02:13:57 -04:00
John Sully 9a357ec4b5 Fix infinite logs of Error in rreplay
Former-commit-id: 00cef78858
2020-05-24 20:05:22 -04:00
John Sully 845027c291 Enable TLS connections
Former-commit-id: d05da0fabd
2020-05-24 19:57:16 -04:00
John Sully 2857bed8bd bump version
Former-commit-id: 9353b3aac2ab65120f2ad5caa2f8272ae02df380
2020-05-24 18:35:03 -04:00
John Sully 9267a55e42 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 056c672cf60a00980cb10e97fc5da93d8eada937
2020-05-24 18:34:15 -04:00
John Sully 25f0bdf527 Fix test failures
Former-commit-id: c0b2263478d79f33d04ed409a68caa312884fa4c
2020-05-24 18:33:15 -04:00
John Sully 7db546130f Fix crash on shutdown with snapshots pending
Former-commit-id: 124e79a81d6995ea7d5ba39d1830b591b705acbf
2020-05-24 17:11:56 -04:00
John Sully 1e39ccbb2d Merge branch 'keydbpro' of https://github.com/JohnSully/KeyDB-Pro into keydbpro
Former-commit-id: 9e473a9957f274f641ddad16d67d848f9a3c93c1
2020-05-24 14:47:55 -04:00
John Sully e0a0d93a07 Merge branch 'unstable' into keydbpro
Former-commit-id: a830cf85df236885558c5571c0bf23cfb23e3655
2020-05-24 14:41:53 -04:00
John Sully d176ae50ec don't keep feeding data to clients pending close
Former-commit-id: 4db3f2a443
2020-05-24 12:46:11 -04:00
John Sully 5c35593937 Quiet TSAN during exit
Former-commit-id: fd710d590a
2020-05-24 12:45:10 -04:00
John Sully 6b93792f8f Install deps for daily workflow
Former-commit-id: 9b98c9edd3
2020-05-24 11:19:53 -04:00
John Sully 7630b63f06 Hold the AE lock until we process the repl backlog after a command
Former-commit-id: 4893eedacb
2020-05-24 11:19:23 -04:00
John Sully 0d8c7c7182 Add standardized way to post client dependent functions
Former-commit-id: fb50163b47
2020-05-24 02:46:39 -04:00
John Sully 65e4f82982 remove unnecessary cplusplus guard
Former-commit-id: 3b8463f9d2
2020-05-24 02:45:55 -04:00
John Sully 0dd0ea7eda race in connection state when setting a handler on a different thread
Former-commit-id: 42c7677690
2020-05-24 02:45:11 -04:00
John Sully d3bd1ab56b Fix ASAN races
Former-commit-id: 8665f25031
2020-05-24 01:58:33 -04:00
John Sully 4136a1084b Incorrect locking in replication error paths
Former-commit-id: 1c6b573147
2020-05-24 01:57:49 -04:00
John Sully 2ea5bf4f55 Incorrect memory order on weak ordered architectures
Former-commit-id: 90162da1a6
2020-05-24 01:57:18 -04:00
John Sully dde860c60b If we request shutdown from a client on a different thread than a blocking lua script we fail to actually shutdown until the script completes
Former-commit-id: 1ca6c1dd56
2020-05-24 01:56:23 -04:00
John Sully aaff167eb9 race calculating client overhead
Former-commit-id: 2d27c8ecdb
2020-05-24 01:53:43 -04:00
John Sully 3813d5835e During RDB load we can only handle clients on the main thread as our workers are not yet created. This change also unifies the accept logic across the socket types
Former-commit-id: 59cda9cfb9
2020-05-23 16:03:24 -04:00
John Sully 3c0e1a1baf Diskless replication handler needs to run on the main thread
Former-commit-id: 091af64003
2020-05-23 15:15:42 -04:00
ShooterIT 646cc81c96 Fix reply bytes calculation error
Fix #7275.


Former-commit-id: a12210c875
2020-05-23 13:02:55 -04:00
John Sully 36032618b2 Merge tag '6.0.3' into unstable
Redis 6.0.3


Former-commit-id: 43649fc5b4
2020-05-22 16:53:10 -04:00
John Sully c86b45c6a0 Merge branch 'unstable' of https://github.com/JohnSully/KeyDB into unstable
Former-commit-id: 01cc25653a
2020-05-22 16:45:27 -04:00
John Sully fa0be83fd9 Merge tag '6.0.2' into unstable
Redis 6.0.2


Former-commit-id: a010e4a4b2
2020-05-22 16:45:18 -04:00
John Sully c03e9a3e2c Merge commit 'e834acb91c89d083d0075e320dea6ad7188f2d0d' into unstable
Former-commit-id: 817a11ff11
2020-05-22 15:56:35 -04:00
John Sully bd3deb6c67 Merge commit '05b332e550e7ce32e364dde6cdd8820e8665eb21' into unstable
Former-commit-id: c52e1fc78c
2020-05-22 15:42:50 -04:00
John Sully 5a7ce664d0 Merge commit '78cbd3039858407837632bc37abb36e36ec60ce5' into unstable
Former-commit-id: d74871da40
2020-05-22 15:36:44 -04:00
John Sully 1ee6c44a96 Update README.md
Former-commit-id: a25cf15ecd
2020-05-22 14:03:29 -04:00
John Sully 2fa3fb9573 Merge tag '6.0.1' into unstable
Redis 6.0.1.


Former-commit-id: c505df8830
2020-05-21 23:41:36 -04:00
John Sully 6402c28d5c Missing noexcept
Former-commit-id: f214ada545
2020-05-21 23:25:50 -04:00
John Sully 62261642cc build failure on macos
Former-commit-id: c10aa3b8b0
2020-05-21 23:24:34 -04:00
John Sully 193d7c76cb Fix bad merge in CI.yml
Former-commit-id: 6311d709c3
2020-05-21 22:09:06 -04:00
John Sully e245fdbb89 Merge commit '97e58ee026675e70fbd8843f7a86e98f53a3c791' into unstable
Former-commit-id: 8ab77465db
2020-05-21 19:37:42 -04:00
John Sully cc8d7c1afd Merge commit '3b373fbb0b05ee862dfef32199cfb63459019cd9' into unstable
Former-commit-id: 201bf73ef7
2020-05-21 18:57:28 -04:00
John Sully ccedb2fa73 Merge commit 'd7b07d3ded06b4cd843baffd3a6d33dd96efd401' into unstable
Former-commit-id: 49784c8122
2020-05-21 18:48:49 -04:00
John Sully 8377df8330 Merge commit '87924d673138531cbaf606015ea7b6a9e3ae2465' into unstable
Former-commit-id: 3e03f308b5
2020-05-21 17:55:09 -04:00
John Sully 327d543f2c Merge commit 'c5d805f87771581d3f6b29861ed2062c0ae2a688' into unstable
Former-commit-id: 95cecb0229
2020-05-21 17:45:15 -04:00
John Sully 4246199553 Merge commit '7cb94fd6cc9e1ad106964171023457ae3ff0a40b' into unstable
Former-commit-id: 7676f5b15f
2020-05-21 17:36:53 -04:00
John Sully b47d7715a4 Merge commit '71134e357ffd6ced7c40c145205dbbac173ee181' into unstable
Former-commit-id: d5b057534a
2020-05-21 17:32:53 -04:00
John Sully 5935707790 Merge commit '2535a172c1247d5d32d6f2fefe51b95c27ba8ae1' into unstable
Former-commit-id: 7a15f6dfc7
2020-05-21 17:30:56 -04:00
John Sully 903aeda836 Override missing new, fix new/delete mismatch
Former-commit-id: 712d825c23
2020-05-20 15:57:08 -04:00
John Sully fe8acd0b30 Remove debugging logs
Former-commit-id: 4073758874
2020-05-14 22:18:29 -04:00
John Sully 14e32ff682 Update ci.yml
Former-commit-id: d4b1d3f755f7c1f6ca4642b5258b4a5157eacb5a
2020-05-12 01:06:08 -04:00
John Sully 27e605293e Update ci.yml
Former-commit-id: d06c6c67ea36a21e515390405a0f947a23ec4b42
2020-05-11 22:09:27 -04:00
John Sully 35ad3b53fc Reduce test load for more reliability
Former-commit-id: 3f8f9743c1f6d75647cfbdbc1544a8c8a5142df3
2020-05-11 22:04:52 -04:00
John Sully 464326eb07 limit clients to make tests more reliable
Former-commit-id: 2c130a816647bacaba5d99d76c19e09b9c9875da
2020-05-11 21:56:17 -04:00
John Sully 84ce8b3ca8 Update cached time only in main cron
Former-commit-id: 5396dd9587599d6672e8d80967aa1fd8ba16e7ec
2020-05-11 20:31:47 -04:00
John 063672dbdb more reliability fixes for multimaster
Former-commit-id: 3543a3c763
2020-05-11 05:38:21 -04:00
John b03c4ccc50 more reliability fixes for multimaster
Former-commit-id: fd5b541260908423c35227ff9e42a83f96ace6c0
2020-05-11 09:37:42 +00:00
John 0e6add2e84 Make multimaster tests more reliable
Former-commit-id: 3122912920
2020-05-11 05:23:47 -04:00
John 680a6ac90f Make multimaster tests more reliable
Former-commit-id: 4fe59ba11b720864ea0124885b358cb72127cc2d
2020-05-11 09:22:27 +00:00
John Sully c48c9a57a9 too many clients makes tests unreliable
Former-commit-id: 89b39629980ab3e2930663c2922141e18e2fc38c
2020-05-11 04:54:17 -04:00
John 519db6a56d Run tests with more clients if possible
Former-commit-id: 3c73eb41bd904953c1e0e2d655d42599f3e9d2a2
2020-05-11 08:25:13 +00:00
John 39a7f92a97 link dependent libs
Former-commit-id: 165eb203f2a64f588b42b765afaafc370c547a25
2020-05-11 08:19:08 +00:00
John Sully 96744f633d run on self hosted
Former-commit-id: 51dba847764abc0014ef3be17a03afebd038854d
2020-05-11 03:10:27 -04:00
John Sully 42297389eb update ci.yml
Former-commit-id: 92a31cfd4d5bcf913f55c0f127b28738056f2a0a
2020-05-11 01:08:46 -04:00
John Sully 0ca8d8371c Fix bug merging LFU fix
Former-commit-id: 319099e1cb337d13444c16df1b5e1c300e6f2d15
2020-05-11 01:05:57 -04:00
John Sully 268f2efb48 Fix crash during RDB save with module events
Former-commit-id: 0f7eac411eccb853d7e50152e2bbd1ee28e6ee53
2020-05-11 01:02:58 -04:00
John Sully 5ea1948d68 Merge branch 'unstable' into keydbpro
Former-commit-id: d89c15518f984c1d4d4e7638a4e8ac5aa499632a
2020-05-11 00:53:38 -04:00
John Sully 87a9f79e20 Update access LFU/LRU access times when overwriting key
Former-commit-id: f11fdf6717
2020-05-11 00:42:46 -04:00
John Sully 4477a8b145 We should still send replies even if an async close is pending
Former-commit-id: 572bcca9c2
2020-05-10 23:56:29 -04:00
John Sully 344699b2ce Fix race on clients_to_close
Former-commit-id: 10fa064109
2020-05-10 23:14:15 -04:00
John Sully 73c436dba2 Fix crash in client unblock command
Former-commit-id: 7cd779d304
2020-05-10 22:08:50 -04:00
John Sully 03b811b13c Fix crash during hook module test
Former-commit-id: 628d168049
2020-05-10 21:57:16 -04:00
John Sully f76a52b957 Fix crash in module tests
Former-commit-id: 37423757b5
2020-05-10 21:06:38 -04:00
John Sully 73f60aca33 Run sentinel and module tests under CI
Former-commit-id: 58752bb8fe
2020-05-10 18:05:05 -04:00
John Sully f30fb5554f add help for hrename
Former-commit-id: 7e7f70ff3e
2020-05-10 17:41:01 -04:00
John Sully da7765a84e hrename tests
Former-commit-id: f77c227b2d
2020-05-10 17:14:44 -04:00
John Sully 02311d5c85 Implement keydb.hrename command
Former-commit-id: 21d842b0b0
2020-05-10 17:04:22 -04:00
John Sully 72293d62c9 Work around broken package installed on CI machines
Former-commit-id: 3340aaf8ad87fe0f7dd5c53254cd34605a3a8f12
2020-05-08 00:57:39 -04:00
John Sully bab6512408 Update CI
Former-commit-id: 332900e24a539c694929dd4163a25037ded6b19e
2020-05-08 00:44:00 -04:00
John Sully 87b5eb649a Bump version
Former-commit-id: 88eeb1c13cdf21df274ea9c364f35c4de522d215
2020-05-08 00:25:19 -04:00
John Sully e03a2bbb7f Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 219d7f3499fd826f039a1490ed3317791b084f94
2020-05-08 00:24:58 -04:00
John Sully f4e938e1af Free memory before we enter a script and may not have a chance
Former-commit-id: 7a3173c74ca617b4d0f9e852ab580731fa92f3df
2020-05-08 00:15:58 -04:00
John Sully da4cac6770 Fix bug where we don't correctly process maxmemory during bgsave
Former-commit-id: a0f2694d15784628df5d5ecb72b42c2979100f93
2020-05-08 00:14:55 -04:00
John Sully a3b80c293b Be *much* more aggressive flushing memory
Former-commit-id: f0bdc4fb5fce02d79c1aa2bcf384aa06580ff9e1
2020-05-07 23:07:31 -04:00
John Sully 22b46fa2f2 Disable cluster tests
They are unreliable on slow hardware.

Former-commit-id: 86f9ed6248
2020-05-07 01:49:04 -04:00
Diab Neiroukh 4e0d22e919 Clang requires libatomic to be linked via LDFLAGS
Clang requires the libatomic to be linked via LDFLAGS or else the linker
will fail to recognise __atomic macros.

An error as a result of not passing -latomic to the linker can be seen
below:

ld.lld: error: undefined symbol: __atomic_fetch_add_2
>>> referenced by sds.c:185
>>>               lto.tmp:(sdsdupshared)
clang-10: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [Makefile:276: keydb-server] Error 1
Former-commit-id: dcd7b684bb
2020-04-30 15:06:10 -04:00
John Sully a3e0c42dc4 cluster tests should be a named task
Former-commit-id: f715d0b860
2020-04-29 18:43:55 -04:00
John Sully 4a5aa68074 Run cluster tests as part of CI
Former-commit-id: 98d690b849
2020-04-29 18:41:51 -04:00
John Sully ad3de92c57 use serverAssert() instead of assert() to get callstacks in fastlock
Former-commit-id: 45535e8a63
2020-04-28 22:41:07 -04:00
John Sully d9409d3614 Merge branch 'unstable' of https://github.com/JohnSully/KeyDB into unstable
Former-commit-id: c78895aaea
2020-04-28 22:24:45 -04:00
John Sully 83118f2584 Bump version
Former-commit-id: 8e12ff0cd9e50867b42b165af278a7dc91fc17e1
2020-04-28 20:49:39 -04:00
John Sully c400e5825b Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 6e7ffcddfbde8ee310e07b510097b69104f862b8
2020-04-28 20:48:54 -04:00
John Sully 2ab2078085 Fix failure to count keys in cluster slots when reloading a FLASH database
Former-commit-id: f6dd863e51f91620f184ff80f08cfe518d29c87f
2020-04-28 20:48:46 -04:00
John Sully 16fd1ed48e shared pointer comparisons with other pointers
Former-commit-id: d5ede50b04
2020-04-24 22:20:26 -04:00
John Sully 1d8ecd93de EMBSTR size is lower than it needs to be
Former-commit-id: fab6132cb3
2020-04-24 22:19:55 -04:00
John Sully 92703d32cc Default yes in apt install
Former-commit-id: e0a8709c09
2020-04-22 02:17:28 -04:00
John Sully 41fcbc881b Run arm CI builds
Former-commit-id: 17795fd5ce
2020-04-22 02:13:02 -04:00
John Sully 4acd49c4fc MacOS Build Break Fix
Former-commit-id: d6738ffa5d
2020-04-22 01:21:35 -04:00
John Sully 34f50a49df Add deps to CI yml
Former-commit-id: 29d9fba802a24ba3e29bf5a66ab684c7d9d0959a
2020-04-22 01:11:06 -04:00
John Sully 6b02c556e8 Bump version
Former-commit-id: f527649f156147f29efb81a7a20057909fe43748
2020-04-22 01:07:14 -04:00
John Sully d054555570 Merge branch 'PRO_RELEASE_6' of https://github.com/JohnSully/KeyDB-Pro into PRO_RELEASE_6
Former-commit-id: 859540b68c54f86f97c33c87802d8c3e74437325
2020-04-22 01:06:43 -04:00
John Sully 3a06dd8265 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 6b6a1c711dbb7786e30be29e2d1930582037f7f9
2020-04-22 01:06:24 -04:00
John Sully 71897819ed Merge branch 'keydbpro' of https://github.com/JohnSully/KeyDB-Pro into keydbpro
Former-commit-id: 9004ecf11e31be1b0d43a0d8c6e8263636b3bac4
2020-04-22 01:06:06 -04:00
John Sully 7971c4b040 Don't CI build Pro on MacOS
Former-commit-id: aaed87516ea9f428ebea286dd936dd219691b4f6
2020-04-22 01:05:24 -04:00
John Sully e16dc21307 Don't show trial warning on license disabled builds
Former-commit-id: 08fd74360d1e0196db7a6b52717500325533576c
2020-04-22 01:04:29 -04:00
John Sully 435b926292 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 8ff5c0baef1d7ec8f225c3e115f37731e4ee8593
2020-04-22 00:56:43 -04:00
John Sully 0924f9b0c6 CI syntax error fix
Former-commit-id: 0845620384c08a3f937655931775a20728b19526
2020-04-22 00:55:31 -04:00
John Sully ace581d9f2 CI enable submodules
Former-commit-id: f57611e82fa7a63bd554568748338e8a116534b5
2020-04-22 00:53:31 -04:00
John Sully 9d407dd520 RDB load performance, eliminate useless reads
Former-commit-id: 68e5d1850dbba89a87710968d314cb8c0d3cb562
2020-04-22 00:47:49 -04:00
John Sully b7a9ef3fe4 Be more aggressive evicting when a storage provider is set
Former-commit-id: 4d1cabe2ab383939670e5ff0a2b91aa758f4e15e
2020-04-22 00:47:24 -04:00
John Sully 57ae5788f0 Periodically FLASH flush write queues during RDB load
Former-commit-id: 721129b18263eabfc2a29556a2b7a9a861110953
2020-04-21 21:39:36 -04:00
John Sully bd26d8bad7 don't swap iterators when swapping DB contents
Former-commit-id: 4971518d42218a63cf86919e91af54462f6dc8c0
2020-04-21 21:38:24 -04:00
John Sully 1739a6b2c2 Merge branch 'unstable' of https://github.com/JohnSully/KeyDB into unstable
Former-commit-id: e72642667f
2020-04-16 20:12:14 -04:00
John Sully 9bc3029a02 Fix some clang warnings
Former-commit-id: 3785b1efd4
2020-04-16 20:12:05 -04:00
John Sully 68c455a6d6 Always link libatomic
Former-commit-id: 7aeae62f84
2020-04-16 20:01:24 -04:00
John Sully fbecb9d5c9 Fix warning in cluster.cpp
Former-commit-id: e5e33f8cb7
2020-04-16 20:01:13 -04:00
John Sully 5a23a6da76 Merge branch 'unstable' into keydbpro
Former-commit-id: 642719cef20a88d23af84a16d3f6757088c23b1a
2020-04-16 17:06:33 -04:00
John Sully fe307bb1b1 quiet TSAN in serverLog
Former-commit-id: a836d5947d
2020-04-16 17:06:25 -04:00
John Sully f627dd8cbe Initial merge of unstable 6
Former-commit-id: aac140de199646914cc02997a45111c9c695e55d
2020-04-16 16:36:16 -04:00
John Sully c3f05b72e2 Update Readme to use github CI badge
Former-commit-id: 7cdd5d9e41
2020-04-15 23:21:10 -04:00
John Sully e177cdcd3c update TLS readme for KeyDB
Former-commit-id: 3f5d3fec36
2020-04-15 23:19:05 -04:00
John Sully 34d768f5ad Deprecate travis and finish setting up github CI
Former-commit-id: 90094a2dca
2020-04-15 23:04:04 -04:00
John Sully c001ea5b41 Merge branch 'unstable' into redis_6_merge
Former-commit-id: cc9924ffa6
2020-04-15 23:00:13 -04:00
Ubuntu 412e3a059f updating version
Former-commit-id: f994436486b2e8b4eb63f8ce29ab9c8595e1a694
2020-04-16 02:56:49 +00:00
John Sully fe06034b33 OS X build break
Former-commit-id: 5e6b4ab99e
2020-04-15 22:43:40 -04:00
John Sully e08314988a more dependencies for CI
Former-commit-id: 2d6d374162
2020-04-15 22:39:47 -04:00
John Sully 6f5fc21d1e Add CI dependency
Former-commit-id: 3137d4f35c
2020-04-15 22:36:16 -04:00
John Sully 822f64ed2f During AOF reload we can erroneously read incorrect aof_state values, so this variable must be read with the global lock acquired
Former-commit-id: 6ff9d23fd4
2020-04-15 22:30:19 -04:00
John Sully 32b028b9cb Quiet test only ASAN fd race
Former-commit-id: d4939c838b
2020-04-15 22:27:45 -04:00
John Sully d9c08a1db3 Run all KeyDB instances in testmode during tests
Former-commit-id: cd306f1d23
2020-04-15 22:27:04 -04:00
John Sully c177e6e34d Fix race in sendBulk
Former-commit-id: 5fd07e0889
2020-04-15 22:26:00 -04:00
John Sully e8270a2f0b Convert variables accessed outside lock to atomics
Former-commit-id: b0796ff5fd
2020-04-15 22:25:17 -04:00
John Sully c64f9d5d30 ASAN races in leak checker
Former-commit-id: 9dfa074cd6
2020-04-15 22:24:12 -04:00
John Sully 2687677ba6 Multithreading reliability, force single thread for test relying on internal behavior
Former-commit-id: 033761c5f9
2020-04-15 20:52:25 -04:00
John Sully e197baa90a rename to KeyDB (merge)
Former-commit-id: 2926ac494e
2020-04-15 16:44:06 -04:00
John Sully 009895cc65 Log stdout and stderr for cluster tests
Former-commit-id: 06143c2e8c
2020-04-15 16:35:24 -04:00
John Sully 4fba2ce074 Fix TSAN race
Former-commit-id: f00d28fdab
2020-04-15 16:34:38 -04:00
John Sully 2da48575e4 Fix incorrect cluster slot tracking (regression from merge)
Former-commit-id: 4705f29e2f
2020-04-15 16:34:07 -04:00
John Sully f69c169c04 Merge tag '6.0-rc3' into redis_6_merge
Redis 6.0 RC3.


Former-commit-id: b2cb10de5f
2020-04-14 22:56:19 -04:00
John Sully f7a49753a8 Fix merge issues and move timeout to C++
Former-commit-id: 1005a725d4
2020-04-14 22:37:26 -04:00
John Sully 3e656bcb3f Merge commit '2a820251c8ffba152e00ef7b1ca5e7a477087d33' into redis_6_merge
Former-commit-id: 50768cd242
2020-04-14 22:25:44 -04:00
John Sully ce54857237 Merge commit '454e12cb8961f21c9dd8502dc82ae6ffd7e22fe0' into redis_6_merge
Former-commit-id: cc3ebbe519
2020-04-14 22:19:29 -04:00
John Sully 7aaed24204 Merge commit '714ae38ee1fc260df6fc5708463accd74a93c215' into redis_6_merge
Former-commit-id: 8056e349e0
2020-04-14 21:26:51 -04:00
John Sully b223579bac Merge commit 'd3491c5182b97535cfdf2c3d4f9d0762c608e1ff' into redis_6_merge
Former-commit-id: 0001f59c8d
2020-04-14 21:16:38 -04:00
John Sully 8750cb5a3b Merge commit '07c75f60f3fe0b300fd7913bab3d2d7e612afb03' into redis_6_merge
Former-commit-id: 2941792a85
2020-04-14 21:13:42 -04:00
John Sully 0725491043 Merge commit 'c609bf3f2c7f0982f632f82623ee4802868b8ef1' into redis_6_merge
Former-commit-id: 320bc3c032
2020-04-14 21:04:42 -04:00
John Sully 90cbdd5573 Merge commit 'c208956fbe077e8249d2965dec2ea1b9b7588d6d' into redis_6_merge
Former-commit-id: 2825e51550
2020-04-14 20:55:29 -04:00
John Sully 4d4a7d656b Merge commit '00e53fb140fb67d329aff6cd2200f1eaf9e80cf5' into redis_6_merge
Former-commit-id: cbdd47d056
2020-04-14 20:44:27 -04:00
John Sully 4f56e9c3b0 Merge commit 'e91ca9fee9c56ef319b407b104afc435be0c53cb' into redis_6_merge
Former-commit-id: 516c8c6e23
2020-04-14 20:42:48 -04:00
John Sully 68c50ae876 Merge commit '6718d5d37517bd927635649708913affb98f67c9' into redis_6_merge
Former-commit-id: ef1236b600
2020-04-14 20:19:48 -04:00
John Sully 2c049c16a2 Merge commit '79e8b17d7b44c793d8b22668b8583a297ee1b387' into redis_6_merge
Former-commit-id: 28cbed1d13
2020-04-14 20:09:53 -04:00
John Sully d48ea996e7 Merge commit '13fbdf970660b15011c4312f31137e58bbda5b2c' into redis_6_merge
Former-commit-id: cde199a797
2020-04-14 19:43:04 -04:00
John Sully 6df76a3bfa Merge commit 'a8e2bbe8f6a3f4833f286cc5049e6b52c87de1a9' into redis_6_merge
Former-commit-id: 5589a0a69c
2020-04-14 19:22:44 -04:00
John Sully 2038fa270a Merge commit '491949ee5bf4ffbfc746ea4ed5a6d673b0e2fb81' into redis_6_merge
Former-commit-id: 09e8fb17cd
2020-04-14 18:44:42 -04:00
John Sully 9039879f80 Merge commit '2ad427f862084e0e18fbd6c313af35ccdb6c68f7' into redis_6_merge
Former-commit-id: d71c4c2215
2020-04-14 18:30:26 -04:00
John Sully 06017d7900 Merge commit '9a39a227fff45baa0f1532dba017f31ac71b68e5' into redis_6_merge
Former-commit-id: 6f621e6480
2020-04-14 18:29:03 -04:00
John Sully c198d81582 Merge commit 'dff5370c8be0dcef1728b95b17906d2494ce9bf2' into redis_6_merge
Former-commit-id: 8e33c2d301
2020-04-14 18:05:10 -04:00
John Sully 17a1637c89 Merge commit '87d059a7454aad2c3a9810ddafd33c3a9e4be383' into redis_6_merge
Former-commit-id: 52aca124c3
2020-04-14 18:04:51 -04:00
antirez 910db44fc5 Jump to right label on AOF parsing error.
Related to #6054.


Former-commit-id: c7159d58f1
2020-04-14 18:03:22 -04:00
antirez c38bc83f47 PSYNC2: meaningful offset implemented.
A very commonly signaled operational problem with Redis master-replicas
sets is that, once the master becomes unavailable for some reason,
especially because of network problems, many times it wont be able to
perform a partial resynchronization with the new master, once it rejoins
the partition, for the following reason:

1. The master becomes isolated, however it keeps sending PINGs to the
replicas. Such PINGs will never be received since the link connection is
actually already severed.
2. On the other side, one of the replicas will turn into the new master,
setting its secondary replication ID offset to the one of the last
command received from the old master: this offset will not include the
PINGs sent by the master once the link was already disconnected.
3. When the master rejoins the partion and is turned into a replica, its
offset will be too advanced because of the PINGs, so a PSYNC will fail,
and a full synchronization will be required.

Related to issue #7002 and other discussion we had in the past around
this problem.


Former-commit-id: 5d6e8fe3e3
2020-04-14 17:56:09 -04:00
Oran Agra 031d5044bf reduce repeated calls to use_diskless_load
this function possibly iterates on the module list


Former-commit-id: 99762dac23
2020-04-14 17:34:36 -04:00
John Sully c168ae6cfe Fix merge conflicts from cherry-pick
Former-commit-id: 57956b3fd2
2020-04-14 17:33:54 -04:00
antirez f7e8240900 Remove RDB files used for replication in persistence-less instances.
Former-commit-id: b323645227
2020-04-14 17:27:05 -04:00
Johannes Truschnigg 0ef7e8e0b2 Signal systemd readiness atfer Partial Resync
"Partial Resynchronization" is a special variant of replication success
that we have to tell systemd about if it is managing redis-server via a
Type=Notify service unit.


Former-commit-id: dd9502f373
2020-04-14 17:22:30 -04:00
Guy Benoish 49dda32114 Diskless-load emptyDb-related fixes
1. Call emptyDb even in case of diskless-load: We want modules
   to get the same FLUSHDB event as disk-based replication.
2. Do not fire any module events when flushing the backups array.
3. Delete redundant call to signalFlushedDb (Called from emptyDb).


Former-commit-id: aa8a3077a2
2020-04-14 17:21:10 -04:00
John Sully 2ecff6eccf Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 1dd55bec28e7bba38ff9fbd7c6b22b23b911a4eb
2020-04-14 01:01:20 -04:00
John Sully 8fb3be9ce1 Cache fake client in replicaFeedSlaves
Former-commit-id: 8e81e5f29e
2020-04-13 22:45:15 -04:00
John Sully 4ed8f38a13 Don't do active replica work if we're not an active replica
Former-commit-id: 63dd1fb599
2020-04-13 22:35:06 -04:00
John Sully dfdc0cefdd Optimize replicaFeedSlaves by removing use of snprintf
Former-commit-id: 32561a9912
2020-04-13 22:11:34 -04:00
John Sully 08c404120e Merge branch 'redis_6_merge' into keydbpro
Former-commit-id: 8d8115ff59f5838e13e911416eff7dfe2c0d92dc
2020-04-06 01:25:15 -04:00
John Sully a0447f23ac Fix failure to AUTH with master when masterauth is set last
Former-commit-id: 3fdc8608f3
2020-04-06 01:24:59 -04:00
John Sully 9b2392107c Add the ability to set a starting core # when setting thread affinity
Former-commit-id: 9e2e2067c6
2020-04-04 22:58:17 -04:00
John Sully a6444c8ce9 Fix issue #164
Former-commit-id: f112c77fcc
2020-04-04 22:45:12 -04:00
John Sully bf93e32e7e Role command protocol corruption with multiple masters
Former-commit-id: 888d69a87a
2020-04-04 22:32:15 -04:00
John Sully 2684a266c8 Fix subkey expires not replicating correctly, and AOF issues
Former-commit-id: bd183cdee1
2020-04-04 21:52:27 -04:00
John Sully 6d084434fc Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: e6c8a157e136ac5e5b44b5ea60c619ad4e55942b
2020-03-30 00:58:38 -04:00
John Sully 8e0aa4ec72 Merge branch 'redis_6_merge' into keydbpro
Former-commit-id: 86f7292ed375d509645458704828e72fdbfea936
2020-03-30 00:57:58 -04:00
John Sully 38d16ea581 Merge branch 'redis_6_merge' of https://github.com/JohnSully/KeyDB into redis_6_merge
Former-commit-id: 95b4f899c5
2020-03-30 00:52:43 -04:00
John Sully 549b15d5a2 Merge branch 'unstable' into redis_6_merge
Former-commit-id: 2946155313
2020-03-30 00:52:12 -04:00
John Sully 12f76b2b95 Allow active replicas to connect to each other when replica-serve-stale-data is set
Former-commit-id: f2ca2aa1f7
2020-03-30 00:51:40 -04:00
John Sully 883de95712 Don't send build log to stderr
Former-commit-id: b20bf10fda
2020-03-28 23:36:57 -04:00
John Sully f8f752f2ab Merge branch 'unstable' into redis_6_merge
Former-commit-id: 208c15bc16
2020-03-27 14:50:37 -04:00
John Sully 4af17a23d8 Raspberry Pi fixes (compile and replication)
Former-commit-id: c3d3c82f3a
2020-03-27 12:46:25 -04:00
John Sully 8becc84c61 OS X Build break fix
Former-commit-id: 98da479d9241c077d3c11787800075dea91e989e
2020-03-26 15:20:55 -04:00
John Sully 366e00df79 bump version
Former-commit-id: 8e855c4568fd555f6df9a5b00bab2e42248127e3
2020-03-26 01:18:21 -04:00
John Sully 6742a6a70c Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: a5d8a93a476366ef2aa6fe9c248f33288b322ff6
2020-03-26 01:17:56 -04:00
John Sully bdcdd1396b merge
Former-commit-id: 187773190f153f8a7236bc2e4f42bffe6885f727
2020-03-26 01:16:36 -04:00
John Sully f4caa84987 Fix merge issues
Former-commit-id: b22d9cc27d
2020-03-25 22:26:27 -04:00
John Sully 9c4b66b9a4 Merge branch 'unstable' into redis_6_merge
Former-commit-id: 908cf5042e
2020-03-25 22:12:22 -04:00
John Sully 71fe6f7ba9 Fix issue #143
Former-commit-id: 6ec1641294
2020-03-25 21:55:31 -04:00
John Sully b443553a3d Give a better error when handling std::terminate
Former-commit-id: 7b79ec360b
2020-03-25 16:27:24 -04:00
John Sully 6c04367c8d Fix breaks from merge
Former-commit-id: fa76d19bee9df21967c4d8554128eebdd19021fa
2020-03-25 16:22:32 -04:00
John Sully 1fc4cb38ce Merge branch 'redis_6_merge' into keydbpro
Former-commit-id: 44f1b065ed6d3b0ad2a62f093432743b98fad6be
2020-03-25 15:47:24 -04:00
John Sully b1c9dcaa05 Merge branch 'unstable' into redis_6_merge
Former-commit-id: 718aee242d
2020-03-25 15:47:12 -04:00
John Sully 118bd49a4e Add roundtrip test for subkey expires
Former-commit-id: 56fc6b7deb
2020-03-25 15:34:30 -04:00
John Sully 41dfd175a8 Fix failure to load subkey expires
Former-commit-id: 528a43bd6c
2020-03-25 01:38:58 -04:00
John Sully 9ff5d3f3c4 Expire entry needs to be resorted after a subkey expires
Former-commit-id: b357803362
2020-03-25 01:06:40 -04:00
John Sully 982175b584 Evict on load if we have a storage provider
Former-commit-id: bb091796c3da7282e040c7b72a28ec1c5f5ecfb7
2020-03-24 14:49:43 -04:00
John Sully aed3d33499 Prevent issue where count can be out of sync temporarily, causing crashes where we expect the count to be perfect
Former-commit-id: 77c9f36413c6f0cbb0b13a7ec746746c97faadcd
2020-03-24 00:21:12 -04:00
John Sully ad8a61697b Fix OOM errors during forkless bgsave
Former-commit-id: c31c64b13409c741e8d52ad06add78300c39fce2
2020-03-23 23:12:10 -04:00
John Sully f0e85993ad Fix incorrect prefix comparison
Former-commit-id: 1ef167546be0678edd457d65a5368e8706fde0a3
2020-03-23 22:51:46 -04:00
John Sully 28c632729e Fix incorrect count when loading FLASH
Former-commit-id: 38ee9c0df144621f7ca750527e9efb16e754ef40
2020-03-23 19:47:48 -04:00
John Sully b695c0279e Prevent bookkeeping keys from leaking through
Former-commit-id: 1a5af28e115fc123bf250b4a80ac69232bb3add0
2020-03-23 18:06:47 -04:00
John Sully 2b199b384d Unstable branch should always be version 0.0.0
Former-commit-id: 448808529a
2020-03-19 15:52:24 -04:00
John Sully 436ffa98de Merge branch 'RELEASE_5' into unstable
Former-commit-id: a0bc208412
2020-03-19 15:38:16 -04:00
John Sully 4f55afa948 Print stack traces of other threads in the deadlock detector
Former-commit-id: 6b0172b9bf
2020-03-19 15:37:49 -04:00
John Sully 833f5b39f4 Log which thread a message came from
Former-commit-id: bc1eccb66d
2020-03-19 15:37:24 -04:00
John Sully 1b9ef774da Fix lock inversion in processEventsWhileBlocked
Former-commit-id: a9249d4a82
2020-03-19 15:28:39 -04:00
John Sully 96be5f6a6c Prevent dangling lock when we can't free the client
Former-commit-id: 3c373494d6
2020-03-19 14:34:23 -04:00
John Sully 3b8f9b0d27 Merge branch 'PRO_RELEASE_6' of https://github.com/JohnSully/KeyDB-Pro into PRO_RELEASE_6
Former-commit-id: 1c1f3c920411ee94eb8b81922189b98c9631b3de
2020-03-17 17:48:27 -04:00
John Sully b0dceb9410 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 23c3316c10f2771bc26e50698b48934ec7549bcd
2020-03-17 17:47:55 -04:00
John Sully a767ba8447 Special case version 0.0.0 which is equal to any version
Former-commit-id: 869d037490b6905674f75a8552898aed72148558
2020-03-17 17:25:36 -04:00
John Sully b25ac5e6c1 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: dd8339da10c17f0e2f238310a10e97395f8f12ac
2020-03-17 17:11:51 -04:00
John Sully 9ae07e994d Cache count of keys in database
Former-commit-id: 7cd266030ad82b5fddd4668d666adc95e1bed475
2020-03-17 17:11:41 -04:00
John Sully 0249ff44a5 Merge branch 'redis_6_merge' into keydbpro
Former-commit-id: ff3190cac5c5d222904aa2d57d97c752c1b7e554
2020-03-17 00:10:09 -04:00
John Sully e800858c4c Merge branch 'unstable' into redis_6_merge
Former-commit-id: 40761e4031
2020-03-17 00:09:48 -04:00
John Sully 72f6847f95 Fix issue #153: Config get replicaof returns a corrupt response
Former-commit-id: 5aef606d3b
2020-03-16 20:43:46 -04:00
John Sully b1356bb175 Merge branch 'redis_6_merge' into keydbpro
Former-commit-id: aea8413a15001e2c27cf03dd41fa15151b0d3ccb
2020-03-15 18:48:45 -04:00
John Sully 61176a1a5e Merge branch 'unstable' into redis_6_merge
Former-commit-id: 4671cd6002
2020-03-15 18:47:27 -04:00
John Sully af3afa979a Handle HTTP error codes with MOTD
Former-commit-id: 2ec0b2cd20
2020-03-15 18:47:01 -04:00
John Sully 8061e3460d Update MOTD url for Pro
Former-commit-id: feed518042f3046016c26beda1c08cc721914943
2020-03-15 18:34:42 -04:00
John Sully 0e7552ff36 Merge branch 'redis_6_merge' into keydbpro
Former-commit-id: 2765895981196adf6a8300eb4a704d60ec651f56
2020-03-15 18:34:15 -04:00
John Sully 97537d0525 Merge branch 'unstable' into redis_6_merge
Former-commit-id: 07effa3925
2020-03-15 18:33:24 -04:00
John Sully 143ae07899 Update MOTD URL
Former-commit-id: cd76a71de3
2020-03-15 18:32:05 -04:00
John Sully 009dc09a56 Merge branch 'keydbpro' of https://github.com/JohnSully/KeyDB-Pro into keydbpro
Former-commit-id: c70edb09d33b746fa6893488327f301aff455b58
2020-03-15 18:28:00 -04:00
John Sully 9a54e3f530 Add fallback if we fail to evict normally with FLASH (flush everything)
Former-commit-id: 66ee85a8d5e24514083aa3478dcf0cf3da86520e
2020-03-15 18:27:10 -04:00
John Sully 20c1b7eb63 Change the default for maxmemory samples to 10 to reduce issues with FLASH storage and eviction failure
Former-commit-id: 8571d8aca9b462d600b78854c0795c8b33520088
2020-03-15 18:26:46 -04:00
John Sully 063d585555 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 1982bf26a5d24327389676031ecc599a5a6d88a7
2020-03-04 17:24:51 -05:00
John Sully 264895dcec Merge branch 'redis_6_merge' into keydbpro
Former-commit-id: b0a3bb848937d24dd74de63032306fd92c61dd7b
2020-03-04 17:24:36 -05:00
John Sully 1187fb6afc Fix CLANG build break
Former-commit-id: 5e63c0955d
2020-03-04 17:24:17 -05:00
John Sully 591cc30206 Fix CLANG build break
Former-commit-id: e523afa741
2020-03-04 17:24:00 -05:00
John Sully 435bd4c2fb Fix CLANG build break
Former-commit-id: c2a98a60f9
2020-03-04 17:23:40 -05:00
John Sully 7033048f7a finish merge
Former-commit-id: 66063a19f6cdbc87ead8ecbd4887134438ee1ccd
2020-03-04 17:22:57 -05:00
John Sully 4ccd0c7a0f Merge branch 'redis_6_merge' into keydbpro
Former-commit-id: bef19fefeb293e44e31dfefe383eef99e4cd7721
2020-03-04 17:15:54 -05:00
John Sully 958b0b110c Merge branch 'unstable' into redis_6_merge
Former-commit-id: 6bc92d6d31
2020-03-04 17:13:50 -05:00
John Sully 2105a6300c Merge branch 'unstable' into RELEASE_5
Former-commit-id: 13cf8bbeb7
2020-03-04 17:13:32 -05:00
John Sully 6a8fa9eeb1 Add missing files from last checkin
Former-commit-id: 60c0d4104d
2020-03-04 17:13:18 -05:00
John Sully e39dd04f6c Merge branch 'unstable' into redis_6_merge
Former-commit-id: 52fd4445a4
2020-03-04 17:13:01 -05:00
John Sully 0a67cb4c6a Merge branch 'unstable' into RELEASE_5
Former-commit-id: 693ba4ed4a
2020-03-04 17:09:29 -05:00
John Sully 01a85ba7fe Add extra logging when reporting errors from masters - especially in rreplay
Former-commit-id: 5397f0b033
2020-03-04 17:09:12 -05:00
John Sully 550413070c MOTD refactor
Former-commit-id: 6c78ec7c41
2020-03-04 16:22:55 -05:00
John Sully 864871b57b Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 5b89b51192154e66e8ad87ce342a9cd4ab7a0130
2020-03-04 15:34:27 -05:00
John Sully f9c70eff94 Merge branch 'redis_6_merge' into keydbpro
Former-commit-id: a14d1d5b55a507a83cf5b85920607a0d013e7037
2020-03-04 15:33:59 -05:00
John Sully bd0bfe4d05 min-clients-per-thread needs to use the new config code
Former-commit-id: fed4bd5269
2020-03-04 15:14:41 -05:00
John Sully 0f89436537 Update README.md
Former-commit-id: c0882864f2
2020-03-03 13:58:48 -08:00
John Sully 2e973febb5 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 51e889277c59adb25a8724b25706631e6adca366
2020-03-01 22:17:04 -05:00
John Sully 8366d765c0 Add option to build pro without license checks
Former-commit-id: 0713518d2f34559a06db31a9023228b91ce60af3
2020-03-01 22:16:25 -05:00
John Sully 5528c40348 Merge branch 'redis_6_merge' into keydbpro
Former-commit-id: 656bacd614f359742f6bd2df3fd2009c44c3d788
2020-03-01 21:49:21 -05:00
John Sully 24ea373e68 Merge branch 'unstable' into redis_6_merge
Former-commit-id: 1a7e2e663e
2020-03-01 21:48:51 -05:00
John Sully 9a0bb834e9 Merge branch 'unstable' into RELEASE_5
Former-commit-id: faa87ed839
2020-03-01 21:43:21 -05:00
John Sully aab740a2e3 Update tests to reflect new CRON name (keydb.cron)
Former-commit-id: 83f585e30a
2020-03-01 21:42:01 -05:00
benschermel 278916ca16 Merge branch 'unstable' into RELEASE_5
Former-commit-id: 7a244bb847
2020-03-01 19:53:32 -05:00
John Sully 556108ae22 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 197022aa76949664dfd866e0e71602bf23cbc3a0
2020-03-01 19:18:56 -05:00
John Sully 95b0448e4d Merge branch 'redis_6_merge' into keydbpro
Former-commit-id: 4e8000d43cd4e23c90bf7e262835fae5ae6da34d
2020-03-01 19:18:34 -05:00
John Sully 4ae77acde4 Rename cron command to KEYDB.CRON and add help
Former-commit-id: 1b925119b5
2020-03-01 19:18:21 -05:00
John Sully cb82710daf Rename cron command to KEYDB.CRON and add help
Former-commit-id: 3eb847e28f
2020-03-01 19:17:58 -05:00
John Sully b950b89326 Bump version
Former-commit-id: e5776fd1a05b329c3113b94d26fba9e39816644f
2020-02-29 00:04:24 -05:00
John Sully f7c93230d8 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: e559a947e6d233146416e68a7c69d4e9b2eadd6c
2020-02-29 00:03:55 -05:00
John Sully e9501f7e0c Merge branch 'redis_6_merge' into keydbpro
Former-commit-id: a60d71e13335bdf231b5f1bec61b457056dc5e0a
2020-02-28 23:57:45 -05:00
John Sully 0af756d4d7 Merge branch 'unstable' into redis_6_merge
Former-commit-id: 9dc8f30e47
2020-02-28 23:56:26 -05:00
John Sully b69a8826fa Bump version
Former-commit-id: 3ce6441a0c
2020-02-28 23:53:54 -05:00
John Sully c27596230d Merge branch 'unstable' into RELEASE_5
Former-commit-id: 6d00a1a5cf
2020-02-28 23:53:00 -05:00
John Sully 1d804ef499 Fix compile failure on raspberry pi machines, issue #141
Former-commit-id: aaca32a5cd
2020-02-28 23:49:17 -05:00
John Sully f2c68909dc Fix not respecting max clients config, issue #147
Former-commit-id: 54c96d1995
2020-02-28 22:04:42 -05:00
John Sully 67d78e7808 Fix issue #146
Former-commit-id: e5a2d59446
2020-02-28 21:21:05 -05:00
John Sully e8b9258890 Fix crash propogating stale keys
Former-commit-id: d95bead383
2020-02-26 21:49:40 -05:00
John Sully f45939f147 Change Redis to KeyDB
Former-commit-id: ee5f026eea133ad851bfb3e8788a15ac798ca7e6
2020-02-17 23:46:29 -05:00
John Sully 79f0c0c8d9 Change Redis to KeyDB
Former-commit-id: e6316c8106caa9103d2bef6af35721a0be87aae0
2020-02-17 23:46:17 -05:00
John Sully 014db04212 Change Redis to KeyDB
Former-commit-id: 51ea3cf30c
2020-02-17 23:46:01 -05:00
John Sully 67eccf74ba Change Redis to KeyDB
Former-commit-id: 6ad6c1d780
2020-02-17 23:45:40 -05:00
John Sully a711a040e4 C++14 build fix
Former-commit-id: b45f50efa2fb56aa995ee6ceb6bd91380c28187c
2020-02-17 23:29:23 -05:00
John Sully 31cfd1ad41 C++14 build fix
Former-commit-id: 5a3e3c9fe20dabe294c439cd2b22e929a228f596
2020-02-17 23:29:03 -05:00
John Sully fbf7074169 Bump version
Former-commit-id: 7f84d6d6301303a3277910bf93e5d8dc900908c1
2020-02-17 22:27:50 -05:00
John Sully 4dbdce7494 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 5db2ab0ef538391eb2e20cce6a6af6b750458db0
2020-02-17 22:27:11 -05:00
John Sully 2102880699 override eviction policy for flash
Former-commit-id: 48a4f967e66ba765be96c9f8e113f808a4390f88
2020-02-17 22:26:48 -05:00
John Sully 4777e98e92 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: ad5a015388a3180bcbfefebf106a1a56e304e380
2020-02-17 22:03:54 -05:00
John Sully c248e27638 We should give a nice error message when we can't init a storage provider
Former-commit-id: 6c5acd8fe926d9f66fa5b13a2b962e5632f148de
2020-02-17 22:03:35 -05:00
John Sully 848be11ba0 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 50127eec445cb8d7abceb683f2afbd7aad90a3ae
2020-02-17 21:51:02 -05:00
John Sully 48d95c8e76 Tune rocksdb
Former-commit-id: 95d91b1ff8c8080dfcbf59e51d3eff73d27dcfb5
2020-02-17 21:50:45 -05:00
John Sully a6bc30fc09 Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: bc4b0ff8c18410ae1d1b029410580c96c430510f
2020-02-17 19:56:38 -05:00
John Sully dfd7e80228 Merge branch 'redis_6_merge' into keydbpro
Former-commit-id: 82b957be47c828238554ba8b365e2d0a45994bc2
2020-02-17 19:56:07 -05:00
John Sully 8d720e220d Merge branch 'unstable' into redis_6_merge
Former-commit-id: 32f34f63fd
2020-02-17 19:55:29 -05:00
John Sully 1d368edc10 Add double unlock detection and improve fastlock_unlock assmebly
Former-commit-id: 98aefac09b
2020-02-17 19:54:05 -05:00
John Sully 950cda8ea5 Incorrect use of std::atomic
Former-commit-id: 5dc84850ad
2020-02-17 19:07:13 -05:00
John Sully 2c28a3f3d7 processEventsWhileBlocked not exception safe
Former-commit-id: 45b711f9d1
2020-02-17 19:04:11 -05:00
John Sully c810823abe processEventsWhileBlocked not exception safe
Former-commit-id: 1ef187533c
2020-02-17 19:03:49 -05:00
John Sully 4b12a63b3a Fix race condition with IStorage batches
Former-commit-id: a2eabd044c9048662a63ff0f980ed947dc145912
2020-02-17 19:00:31 -05:00
John Sully 0adc93ab41 processEventsWhileBlocked not exception safe
Former-commit-id: 432543956c74351a12af2cb258a7a0ba5daa9b27
2020-02-17 18:57:13 -05:00
John Sully 8bd2b39367 Merge branch 'redis_6_merge' into keydbpro
Former-commit-id: b16090958d392a6de908562dee65a02c851f07ae
2020-02-16 20:07:03 -05:00
John Sully bd5ffe7069 Merge branch 'unstable' into redis_6_merge
Former-commit-id: 6a71de7835
2020-02-16 19:14:51 -05:00
John Sully d229b03b2c Support C++14 and remove dependency on future standard 2a
Former-commit-id: 18496b6285
2020-02-16 19:04:56 -05:00
John Sully b6db2d32ad Graceful shutdown of server threads when quit is requested
Former-commit-id: b9db899f6c
2020-02-16 18:53:46 -05:00
John Sully 6011a072d1 Virtual dtor for DB base class
Former-commit-id: 953b1cb3a2fec808751d2e7507efe8896f671921
2020-02-16 18:43:36 -05:00
John Sully dde7fc4c18 Fix memory leak in RDB load
Former-commit-id: 4e9d2f08b1
2020-02-16 18:42:14 -05:00
John Sully d3a69998e4 Fix memory leak in RDB load
Former-commit-id: 06ad1c15d7
2020-02-16 18:41:50 -05:00
John Sully 0337da40da Fix memory leak in RDB load
Former-commit-id: a424194f42e61a324489464a0fed14837b8191e4
2020-02-16 18:41:29 -05:00
John Sully ccb4ce65c8 Fix leak deserializing expire
Former-commit-id: 1a7e14d8ef96f7849ecdb120f3339b2423ca25d8
2020-02-16 18:40:00 -05:00
John Sully f76e237d24 Merge branch 'keydbpro' of https://github.com/JohnSully/KeyDB-Pro into keydbpro
Former-commit-id: 770941923d183c0dfed8d5bf8f2299fc4fadf9c6
2020-02-16 18:38:15 -05:00
John Sully 74c7901a5e Merge branch 'redis_6_merge' into keydbpro
Former-commit-id: 8456e92d6e446f1cc20d9cea2328998da0a4d7d5
2020-02-16 18:28:45 -05:00
John Sully 04d174ba1a Merge branch 'unstable' into redis_6_merge
Former-commit-id: 30a603ce05
2020-02-16 18:18:24 -05:00
John Sully fd375eb95c Merge branch 'unstable' of https://github.com/JohnSully/KeyDB into unstable
Former-commit-id: 63ae679fe1
2020-02-16 18:12:11 -05:00
John Sully 8f6f496c7e Memory leak fix on config, and redisDb dtor
Former-commit-id: b92bbf4de8
2020-02-16 17:08:00 -05:00
John Sully b1ccb096a4 Add GC shutdown command
Former-commit-id: 28e8f68016b554f3d410502c2af1641368c2bb92
2020-02-16 16:49:04 -05:00
John Sully 3fad87ca13 Merge branch 'unstable' into keydbpro
Former-commit-id: f3457e2a9a8464bac656b57256316bbddb65d9e9
2020-02-16 04:04:34 -05:00
John Sully 41c75234bd Fix memory leak of ReplicaNestState on shutdown
Former-commit-id: 4781eda722
2020-02-16 03:43:29 -05:00
John Sully 00f80cce27 Fix leak when tombstone exists
Former-commit-id: 3d0ccdf6d2ddc523a3532c46cf905023d207b8cb
2020-02-16 03:36:47 -05:00
John Sully 4bf9beb484 aeDeleteEventLoop use after free and leak fixes
Former-commit-id: 2fd93c5789
2020-02-16 03:34:25 -05:00
John Sully 3b496ea282 aeDeleteEventLoop use after free and leak fixes
Former-commit-id: 77820e5d50e0426570285a2c740c47b05a7c6c2f
2020-02-16 03:33:45 -05:00
John Sully e216a1f386 Merge branch 'redis_6_merge' into keydbpro
Former-commit-id: 4bd4159e2d8a7cdd0af9719776dca3e7d161d166
2020-02-11 03:48:24 -05:00
John Sully 968e668245 Merge branch 'unstable' into redis_6_merge
Former-commit-id: 329519d4aa
2020-02-11 03:48:08 -05:00
John Sully 4748094356 Fix race condition in allocating connections to threads
Former-commit-id: 52434a583a
2020-02-11 03:44:28 -05:00
John Sully 23e7de94a8 Merge branch 'redis_6_merge' into keydbpro
Former-commit-id: 4091800e499cade8bc188c9e6f52f535c500f282
2020-02-11 02:54:24 -05:00
John Sully fbaa46505c Merge branch 'unstable' into redis_6_merge
Former-commit-id: 18a5f46b61
2020-02-11 02:39:08 -05:00
John Sully d4c1e98124 Implement an error handler so bug #125 can't happen
Former-commit-id: 16a019dba0
2020-02-11 01:41:00 -05:00
John Sully fef9925b7f Fix higher latency at low load by grouping clients to threads. This fixes slow perf in cluster benchmarks mentioned in issue #102
Former-commit-id: 1a4c3224c9
2020-02-11 01:00:21 -05:00
John Sully e4d74b993f Fix cases where duplicate RREPLAY is applied
Former-commit-id: c3317686f8
2020-02-11 00:59:07 -05:00
John Sully 30ece138d5 Fix issue #119
Former-commit-id: 4622472123
2020-02-10 19:52:57 -05:00
John Sully 68235881e9 Fix memory leak in cron
Former-commit-id: f1748f8c76
2020-02-10 18:26:04 -05:00
John Sully d346ad7734 Add missing test file
Former-commit-id: 0c101dccc8
2020-02-10 18:15:29 -05:00
John Sully eac3cffe41 CLANG build fix
Former-commit-id: dc78bf1ccb
2020-02-10 00:29:26 -05:00
John Sully 25ef65463e Ensure multi-master works for ring topologies
Former-commit-id: a7cc3aac28
2020-02-10 00:25:03 -05:00
John Sully d292477625 Merge branch 'unstable' of https://github.com/JohnSully/KeyDB into unstable
Former-commit-id: 339631530a
2020-02-09 02:25:20 -05:00
John Sully 6c2cef7687 Addmissing test file
Former-commit-id: fb2bdf7d05
2020-02-08 16:49:41 -05:00
John Sully 3aa271fe38 Merge branch 'unstable' into keydbpro
Former-commit-id: fec8209c1996112976d927d65dbc2b4492131681
2020-02-07 16:46:13 -05:00
John Sully bf83742b4f merge 5.0 unstable
Former-commit-id: c45f1328ac
2020-02-07 16:45:59 -05:00
John Sully eabc436814 Fix issue #137 and #132
Former-commit-id: 050d58007f
2020-02-06 23:31:31 -05:00
John Sully 8800a516d1 Add test to detect issue #137 and #132
Former-commit-id: 49d86746ed
2020-02-06 23:31:12 -05:00
John Sully 6bb1429a46 module fixes
Former-commit-id: ef4e11ecb8
2020-02-04 01:22:25 -05:00
John Sully 41f26be34a rename to pro binary
Former-commit-id: a8854bfd83de72d6aa418ee6d9b44fae1f622787
2020-02-04 00:30:13 -05:00
John Sully 5a1d83abec Merge branch 'keydbpro' into PRO_RELEASE_6
Former-commit-id: 055eaa99ab918609f4ac6b533da3067e5e32a170
2020-02-03 20:16:20 -05:00
John Sully 8001e2a6a5 Ensure create-cluster launches pro
Former-commit-id: 8b3773805d2208070e807ede219821c524495c34
2020-02-03 20:15:59 -05:00
John Sully 42b3e32c8d Bump version
Former-commit-id: ac84153f61b213d42ad503ac38948f9740a5f923
2020-02-03 20:01:53 -05:00
John Sully 78810588e1 Merge branch 'unstable' into keydbpro
Former-commit-id: 0db79c793e30ab268cb0f771928468e477e3b8da
2020-02-03 20:00:16 -05:00
John Sully 771787273a Fix cluster test failures from Redis 6 merge
Former-commit-id: fd702e43f1
2020-02-03 20:00:09 -05:00
John Sully 590b3de028 Build portable rocksdb binaries
Former-commit-id: e94db969f8ac584b75b2ad015b65c1d0d73d0776
2020-02-03 17:33:15 -05:00
John Sully 316ac20087 Fix failure to save RDB on shutdown
Former-commit-id: 1a8331c88a17deaa5faf34c7ea65957c57530546
2020-02-03 16:00:01 -05:00
John Sully 3610783851 Optimize bgsave snapshotting
Former-commit-id: 15b4bf003537fe6fd926146f46d38203683846be
2020-02-02 23:42:44 -05:00
John Sully 6ead122691 3 fixes, 0 array access on boot, getAsync is useless on single theaded, and don't print COW info for BG thread work since it will be inaccurate
Former-commit-id: 09362ff44afed8525816437aead84f215eb59c36
2020-02-02 23:30:42 -05:00
John Sully 88a148d86e RDB thread cleanup fixes
Former-commit-id: 3e30cf6de930c40c3a1c63a761b2018836d4ae52
2020-02-02 23:29:20 -05:00
John Sully 424981309d Handle case where src dict is larger in dictMerge
Former-commit-id: c750fdb381f5dd3e92d251a82bd86533eb2cadf5
2020-02-02 23:27:25 -05:00
John Sully 78da9b3af1 endSnapshotAsync implementation (fails tests w/ multithreading)
Former-commit-id: b401e9fcae40cf1d4e4c1584f57e760d9adf36a9
2020-02-01 22:28:24 -05:00
John Sully cb9c7d3a80 Merge branch 'unstable' into keydbpro
Former-commit-id: 53b36801cede2dbebbf33ec665af69f810b438d5
2020-02-01 21:52:26 -05:00
John Sully ae0a3e9f65 addRef memory model too restrictive
Former-commit-id: 249e0fdd36
2020-02-01 21:52:17 -05:00
John Sully 40fc4eefbb use dictMerge() in endSnapshot for speed and cleaner code
Former-commit-id: ed8e10234e4499506f2557b0858dba86c30c9dc0
2020-02-01 21:08:26 -05:00
John Sully 2b86140abb Allow rehashing if RDB thread is active, it doesn't suffer from COW madness
Former-commit-id: 2f1f2eaa9d160701f45eed52fc7903fcccd7656b
2020-02-01 20:28:17 -05:00
John Sully 82cb879485 Fix spurious error messages trying to join the RDB save thread
Former-commit-id: 775f3477655207a4df2b0b3609f3ee83d41098af
2020-02-01 20:26:09 -05:00
John Sully d715bc15e1 Add new faster dictionary merging for use by snapshotting code
Former-commit-id: b6f120b3d401c92ef5cf1cc6f5e77da139e33a97
2020-02-01 20:17:40 -05:00
John Sully 1e50be75f9 Increase trial timeout to 2 hours
Former-commit-id: 2614f902e4292c84b9bc473c8d3a5bba9dfdbc2d
2020-01-31 23:35:13 -05:00
John Sully e3e64034e2 snapshot optimizations
Former-commit-id: 642f67376a480497554f2891ebfbe7639583c6f1
2020-01-31 17:32:48 -05:00
John Sully 9adc302858 Initialize the storage provider after daemonize
Former-commit-id: 5910af623b024b087c69b17ec32ce351fc4d00c2
2020-01-30 22:26:44 -05:00
John Sully 5321e425a0 build break non-TLS
Former-commit-id: 72e455b94739625a217a664b61f4a4b7ae98f7f1
2020-01-30 21:19:08 -05:00
John Sully 5f061c9178 Merge branch 'unstable' into keydbpro
Former-commit-id: aca1a6605685811833729d746df85781177d5a78
2020-01-30 21:15:42 -05:00
John Sully 8ea5d731ad RDB memory leaks
Former-commit-id: 6208118b13
2020-01-30 17:57:10 -05:00
John Sully 24c9edd93b replication memory leaks
Former-commit-id: 73020b6a93
2020-01-30 17:56:24 -05:00
John Sully 1cfc7071f5 Fix memory leak in cron
Former-commit-id: a9667e84ad
2020-01-30 17:55:48 -05:00
John Sully 8f9fc831a6 Merge branch 'redis_merge' into unstable
Former-commit-id: ab1524ff1a
2020-01-30 16:05:40 -05:00
John Sully b5911e82cd Merge branch 'redis_merge' into keydb_pro_merge
Former-commit-id: 2a760ac3b2cf12e45a9db9d0c2efe6efc4dc2aed
2020-01-29 21:30:20 -05:00
John Sully f5b08185b1 TLS Thread Safety fixes
Former-commit-id: e98a5fc108c5448307a8cc38182c79263f01102a
2020-01-29 21:21:47 -05:00
John Sully 978e1fdda5 fix leak in cron
Former-commit-id: c1f4e344bdaf21bc74fae6e1b0cb7fc1ce687e62
2020-01-29 19:03:18 -05:00
John Sully 1b44a0d391 Merge branch 'redis_merge' into keydb_pro_merge
Former-commit-id: e4f455a991b468a7abea169e5672d3039a8645f9
2020-01-29 15:57:43 -05:00
John Sully 8090e2866f TLS compile fixes
Former-commit-id: 0516809832cf22557592d15f39d64162fcd5083d
2020-01-29 15:57:25 -05:00
John Sully 40a893026a Merge branch 'redis_merge' into keydb_pro_merge
Former-commit-id: e10d9de29059f42193560712991df0950eeef679
2020-01-29 13:43:45 -05:00
John Sully 2e84764f1b Fix active rep not merging on sync and add tests
Former-commit-id: fcb77d0431b195553eb1cd563286e5441f0c94cd
2020-01-29 13:26:04 -05:00
John Sully 3186cb683f Merge KeyDB 6
Former-commit-id: 9129b98c12b0da856bbda3eb68b4ddc7530693c9
2020-01-29 12:55:23 -05:00
John Sully dc4d3a607f Yet more multithreading fixes
Former-commit-id: 9f23062ebdf389f0c95e1f4ab22c36ca96060e1f
2020-01-28 21:42:55 -05:00
John Sully 363212f39b failure to post a function is not fatal unless we wrote part of a command (should be impossible)
Former-commit-id: e1c642a033ab0157a66571189e81817cb84fd421
2020-01-28 21:41:56 -05:00
John Sully ae344960f1 CRON jobs were running half as often as required
Former-commit-id: 1069d0b4bf
2020-01-28 21:40:40 -05:00
John Sully b0c68c94bb CRON jobs were running half as often as required
Former-commit-id: a8f758144b8d79f9816ede3ae86c5c2d5d7d10dd
2020-01-28 21:39:56 -05:00
John Sully 854859dc97 Support C++14 and remove dependency on future standard 2a
Former-commit-id: 7ba1920069821bf369cae40926e0ac82923ad784
2020-01-28 19:06:33 -05:00
John Sully 1adc5e9832 More threading fixes from merge
Former-commit-id: 4a980f4ddb
2020-01-28 17:54:00 -05:00
John Sully d9c070408b reenable multithreading after merge
Former-commit-id: 9fbb9a551e
2020-01-27 19:59:04 -05:00
John Sully 527aeda2db cron reliability
Former-commit-id: c24a7c03c2
2020-01-27 18:31:02 -05:00
John Sully d57e98ac5e fix expire test failures during overwrite
Former-commit-id: 5a8280d577
2020-01-27 18:26:23 -05:00
John Sully 14188ef92d Fix most tests (still some failures)
Former-commit-id: da83e84125
2020-01-27 18:16:19 -05:00
John Sully 6193e9ad4f Merge remote-tracking branch 'redis/6.0' into redis_merge
Former-commit-id: ef9a3cadcf
2020-01-27 02:55:48 -05:00
John Sully 3be0eac7b6 Missing cron files
Former-commit-id: c983d57f73
2020-01-21 19:51:16 -05:00
John Sully 1116b63a0e Initial implementation of the CRON command
Former-commit-id: 3204a39ada
2020-01-21 19:50:28 -05:00
John Sully 5f3fde673b Bump version
Former-commit-id: f4319c1280
2020-01-20 19:20:50 -05:00
John Sully 9a16678a7d Fix build break for X64
Former-commit-id: 76590fdce3ccf7bf3124832f6034c31caf7a8269
2020-01-12 01:28:30 -05:00
John Sully 7f74e0409f Merge branch 'keydbpro' of https://github.com/JohnSully/KeyDB-Pro into keydbpro
Former-commit-id: 4f39ca139f15a5f585f829937a46a56f20644db0
2020-01-12 01:27:22 -05:00
John Sully 49c2b7b77f Fix snapshot consolidation bugs and reduce log noise
Former-commit-id: 7f3cb2981529277d3f02dceb2f60e7aa8385847d
2020-01-12 01:22:44 -05:00
John Sully 46d5a1977e remove debug printfs
Former-commit-id: 3dbd455321e4a2ee47a24662e164eac0e5614965
2020-01-12 01:20:52 -05:00
John Sully f40359cde6 Merge branch 'moar_perf' into keydbpro_moarperf
Former-commit-id: d0990a465c3c5c29b71f239d84a875af40699281
2020-01-11 22:06:20 -05:00
John Sully 793f0bf274 Avoid locking as late as possible
Former-commit-id: acc894fe41
2020-01-11 19:28:13 -05:00
John Sully 9af43f254d Merge branch 'unstable' of https://github.com/JohnSully/KeyDB into unstable
Former-commit-id: 762396d997
2020-01-11 16:35:06 -05:00
John Sully 6e096ca33e Avoid crash due to excessive posted functions for AOF rewrite
Former-commit-id: c575e7df94
2020-01-11 16:34:30 -05:00
John Sully b9b8272724 Avoid crash due to excessive posted functions for AOF rewrite
Former-commit-id: aa6409f2e8
2020-01-11 16:34:09 -05:00
John Sully 18df86fcde Merge branch 'unstable' into RELEASE_5
Former-commit-id: e603e57588
2020-01-10 17:46:23 -05:00
John Sully 18cc4b3ebe Ignore other flags after pro is enabled since we won't understand them
Former-commit-id: 049b48ef79
2020-01-10 17:46:02 -05:00
John Sully 900e596440 Update README.md
Former-commit-id: 0ba0a6ab0a
2020-01-10 14:21:11 -05:00
John Sully 09ff507ee9 Update graphs
Former-commit-id: 7475ea1b0b
2020-01-10 14:19:44 -05:00
John Sully c6cda62f04 Merge branch 'unstable' into RELEASE_5
Former-commit-id: d0654af74f
2020-01-06 14:24:49 -05:00
John Sully 174a8b886d pro launch should respect KEYDB_PRO_DIRECTORY
Former-commit-id: d5f8df5997
2020-01-06 14:24:37 -05:00
John Sully 7f6389a9d0 Add license key lib for aarch64
Former-commit-id: 8b804d91e3dc810b6d8cc585dd3747ba962ead18
2020-01-06 19:16:48 +00:00
John Sully 2d5197d30e Bump version
Former-commit-id: 39acb312ef
2020-01-06 12:07:57 -05:00
John Sully 0bc26f88bb Merge branch 'unstable' into RELEASE_5
Former-commit-id: b643c38204
2020-01-06 12:07:11 -05:00
John Sully 4a6748d29f Merge branch 'unstable' of https://github.com/JohnSully/KeyDB into unstable
Former-commit-id: dd70f5efd7
2020-01-06 12:04:00 -05:00
John Sully 64c07168d7 Merge branch 'keydbpro' of https://github.com/JohnSully/KeyDB-Pro into keydbpro
Former-commit-id: 3d63d38aae762c60a22154109827ebfd46aae2a5
2020-01-05 20:19:55 -05:00
John Sully 5907dccdae Add new flags to example configuration file
Former-commit-id: bb38628f0e
2020-01-05 20:19:28 -05:00
John Sully 78924a295e Enforce seperate license keys for connected replicas
Former-commit-id: bc005cb50b1010a2bc9170e261cd93dba849c35f
2020-01-04 17:15:06 -05:00
John Sully 2109d8972e Additional flash tests
Former-commit-id: 3f9b1a35821cb3a3bf82aabb180c13a9eddf4e93
2020-01-03 17:11:23 -05:00
John Sully efdf09be36 Fix crash with subkey expire
Former-commit-id: 8e1d416714484ff6ff4242c5d9a24b1458bbfb7b
2020-01-03 17:06:07 -05:00
John Sully 4301cfb8e9 Merge branch 'unstable' into keydbpro
Former-commit-id: 76ddbed0708277443660ffab2a2289e120fe87cd
2020-01-03 16:53:40 -05:00
John Sully e49ec97f98 subkey expire testes
Former-commit-id: 0cf3af6857
2020-01-03 16:50:13 -05:00
John Sully ce0fde973a Add support for storing expirations in FLASH
Former-commit-id: 1dca07bd564042fce1b01d275641f35b918ae557
2020-01-03 15:53:36 -05:00
John Sully 6ab3e82e45 Drop severity of master disconnect log when multimaster is enabled
Former-commit-id: edb993d52b
2020-01-02 15:36:02 -05:00
John Sully 85c8fc72b7 Fix issue where expire is lost when performing a defrag
Former-commit-id: aea333bb78
2020-01-01 20:41:17 -05:00
John Sully 2e50d383a6 C++ wrapper classes for SDS
Former-commit-id: 45817db8c3
2020-01-01 19:13:48 -05:00
John Sully ad0cb8da40 Fix issue #130 due to fastlock timeout reduction
Former-commit-id: dbef17c2e1
2020-01-01 11:52:00 -05:00
John Sully bbbe030e78 Merge branch 'unstable' into keydbpro
Former-commit-id: 7ddcbb8ec0c842bd4a79b6e14ebd33616174e793
2019-12-27 18:17:36 -05:00
John Sully 55cddbe82f Fix some static analysis warnings
Former-commit-id: 42a8f22c21
2019-12-27 18:17:22 -05:00
John Sully 55361c65d8 Merge branch 'keydbpro' of https://github.com/JohnSully/KeyDB-Pro into keydbpro
Former-commit-id: b52725163ec6ea128102880be33c43437693cc9e
2019-12-27 17:46:51 -05:00
John Sully df3b99bf62 Ignore dependency files
Former-commit-id: f18d973adcf38483400edac85e9258c37aa4e8e5
2019-12-27 17:46:16 -05:00
John Sully 8f20fc7f33 Ignore dependency files
Former-commit-id: 6e06e0dfc7
2019-12-27 17:45:56 -05:00
John Sully 0fd9a4c67a Merge keydb community
Former-commit-id: b9dcd0997c3dfd3cd2a5908ba540bc4d389104a0
2019-12-27 17:44:48 -05:00
John Sully 082e493d32 Make incremental building work with header files
Former-commit-id: bf500ab44b
2019-12-27 17:34:41 -05:00
John Sully bb6aa59883 recommended rocksdb tuning
Former-commit-id: 2a634365f901968f9758d2d362f211b8e0fddc2a
2019-12-24 02:22:47 -05:00
John Sully 098684bf8e Track key count accurately before we've committed to the database. Also use this to optimize DB lookups when all keys are in memory
Former-commit-id: 78c07f0276109a085761b7044d4edc63af26d3da
2019-12-24 00:03:38 -05:00
John Sully 7da74195a8 Perf remove extra lookup in rocksdb
Former-commit-id: 8074472c7a25572a53f1166911920c2cb168c141
2019-12-23 23:32:04 -05:00
John Sully cded9874a0 More testing
Former-commit-id: 564d94f0653315ce05495a8d83ff8577a365c11b
2019-12-23 22:14:43 -05:00
John Sully 054bbe9baa Fix issue where database size is off when setting key with expire
Former-commit-id: 7796918bfb4a98bc056b3b8f4065f1416da8d89a
2019-12-23 22:07:33 -05:00
John Sully ef62b9b14c Add missing files
Former-commit-id: 4eadf8f0923ee70ffa3af329a4d636d508bfad8d
2019-12-23 19:07:53 -05:00
John Sully 4fd552d8b6 Add more test code, and fix bugs uncovered
Former-commit-id: 5362fa4b62f89cbc1e92e01c73a45c4e3718708b
2019-12-23 17:17:41 -05:00
John Sully bd4d372d45 Key count is innacurate after overwrite
Former-commit-id: 180c5a8e401415cede36548ab8d01f3e4ff8fb7f
2019-12-22 19:41:36 -05:00
John Sully 59f7bd49c9 Add additional tests
Former-commit-id: e7d2c78e776b8262fd54caeb7b6bd210182e9bdb
2019-12-22 19:16:30 -05:00
John Sully ca3c4474c2 Fix FLASH eviction issue, the algo relies on correct key count
Former-commit-id: dc260a7f44fe197b9b0022d044d559be88bf91be
2019-12-22 18:38:10 -05:00
John Sully 1e49dfe8e7 Optimization fails because dbAdd() will ensure the key
Former-commit-id: 1448b555c49fb5ba4a573a97681f7843ba02141f
2019-12-22 17:49:54 -05:00
John Sully 8ef2ec84de Merge remote-tracking branch 'nonfree/tests' into keydbpro
Former-commit-id: 180b059c05290aa403197bca819ec092c5ab326d
2019-12-22 17:31:05 -05:00
John Sully 7c8dda47cb Fix issue where DELETE always returns 1 when using FLASH
Former-commit-id: 0574db59fdc740255388ae77d2ece8622898bb49
2019-12-22 17:30:15 -05:00
John Sully e530793e82 Multimaster requires Active Replication
Former-commit-id: 4d4eca5433
2019-12-21 18:24:02 -05:00
Petr Vaněk 8146f24391 Rename redis.conf to keydb.conf
Former-commit-id: 4b01ad1e30
2019-12-21 15:00:24 -05:00
Petr Vaněk 8c7a04d747 Rename default pid file
Former-commit-id: 3b60929bdc
2019-12-21 15:00:24 -05:00
John Sully afce86838e Only override maxmemory settings if everything is default
Former-commit-id: 9fb240d49c61f5a69124a17cfc769095cadd3d98
2019-12-20 18:19:24 -05:00
John Sully 448b1093cd Evicted flash no longer keeps the key around
Former-commit-id: 908b303d1a8dd032c092f0bc035361a09c0291a5
2019-12-20 17:45:07 -05:00
John Sully 439362992f FLASH storage no longer keeps evicted keys in memory
Former-commit-id: 65c2b47c895d57231bbd3f451ecf1f6d9871f5f7
2019-12-19 17:30:31 -05:00
John Sully a0a33f7607 tests should use the new binary name
Former-commit-id: b4ee3c4ea57041d7c87ec228994ff5397bb6139f
2019-12-19 17:13:51 -05:00
John Sully 9f37260413 Fix crash when using rocksdb and jemalloc but scope it to just jemalloc
Former-commit-id: 6fa0cfd35fd1158f190db27bfb734ea2f763cb20
2019-12-19 15:44:09 -05:00
John Sully b24479051d add missing file
Former-commit-id: 24e85bc84f58bbfbef973eab64017a08e3f34d7d
2019-12-18 13:38:59 -05:00
benschermel 4129ed553c adding flash test
Former-commit-id: 879b17c053695ee09562e2ec320e269141e31fdb
2019-12-18 00:47:08 -05:00
benschermel 27b8e8cdd8 adding flash test
Former-commit-id: 8c0f0bd1b5c83027e64765f9942f284bdb8ebcb4
2019-12-18 00:24:07 -05:00
John Sully 9f5d7d44c7 Implement subkey expires for sorted sets
Former-commit-id: a45d141597
2019-12-18 00:10:05 -05:00
John Sully a9967659cd Implement subkey expire for hashes
Former-commit-id: 8cbe254491
2019-12-18 00:04:48 -05:00
John Sully 643a0e730f Launch the pro binary with --enable-pro
Former-commit-id: ab365ce3da
2019-12-17 23:52:19 -05:00
John Sully d64b9c6bc3 rename binary to keydb-pro-server
Former-commit-id: 717dd64fe33b997e8d05ca9ebfb598dbe1605990
2019-12-17 23:43:14 -05:00
John Sully 186189ecae Ignore enable-pro with no license key. makes it easier to launch a demo from the open source version
Former-commit-id: 31ab6bcd6f39f0a4a9e50a5af613b293eecfb4c2
2019-12-17 23:40:59 -05:00
John Sully 103fbf663e Implement license key checks
Former-commit-id: 62ed5b2956aebe70ef8cf758888098e1f4bb530b
2019-12-17 23:35:14 -05:00
John Sully d50da19fb4 Implement pro badge and trial timeout
Former-commit-id: 9d6a284eb45c8a137c7f59645294b4fa4be389e5
2019-12-17 20:32:53 -05:00
John Sully a0d8d52ef3 Merge branch 'unstable' into advanced_db
Former-commit-id: 1f9cb22fd370741c2f60517376af5008c25704f5
2019-12-17 19:00:02 -05:00
John Sully 8844174763 Fix type in makefile
Former-commit-id: aa3e70f9a0
2019-12-17 18:23:19 -05:00
John Sully ca6a26f115 Enusre CXXFLAGS has the same settings as CFLAGS
Former-commit-id: cda8d42a76
2019-12-17 17:49:51 -05:00
Petr Vaněk c8ca8b2ab8 Correct C++ related makefile variables
FINAL_CXXFLAGS should not inherit CFLAGS because they can contain C
specific options unsupported by C++.

REDIS_CXX should point to the C++ compiler rather than C.


Former-commit-id: 67f32bf1b1
2019-12-17 17:43:15 -05:00
John Sully 5449859ede Perf fixes for expire snapshots
Former-commit-id: da805e4442815c89e85ca7b9fc855dd11ef2a6c8
2019-12-17 17:39:04 -05:00
John Sully 67e429e898 Threading fixes
Former-commit-id: 4f1cec6abd72d6e215880f2ce7812e88509cd218
2019-12-16 22:08:18 -05:00
John Sully b8015a4c2f complete snapshot handling of expires, may still be perf issues
Former-commit-id: 7c6cf4ba4696ba8a7b4069491e8ad0a583958bdc
2019-12-16 22:07:53 -05:00
John Sully 2e05aa89d0 snapshots no longer have dangling keys in the expire set
Former-commit-id: 939b6b61084fbec7b7bd0ada49f6853e334f87dd
2019-12-16 21:14:16 -05:00
John Sully 4d7b05baf3 SDS refcounted type
Former-commit-id: 361d0308febd5da0c7291469ea7e922e7147c1d6
2019-12-16 20:16:51 -05:00
John Sully 7cc892284f Extra expire validation on save
Former-commit-id: 037290cd2ec1b237df5236a86915d63d53fb48ce
2019-12-16 20:16:07 -05:00
John Sully 0b24112fe2 Merge the expire datastructs on endsnapshot
Former-commit-id: 968681ac37d1505a7b38628425f60e08b2cd41c4
2019-12-16 20:13:19 -05:00
John Sully 7900642444 We shouldn't define libc functions...
Former-commit-id: 9da8b7e25b8f423dc0efa54f49307c425eeabc55
2019-12-16 20:11:01 -05:00
John Sully c4b9d485a1 Expireset should do a deep hash
Former-commit-id: cdcdf57dd1419ec09eab6579caf5e5ff9a5a242c
2019-12-16 19:06:07 -05:00
John Sully 9c5400a223 The mitigation was bogus, fix it so it works
Former-commit-id: c7f1e069bf7e7b6f5321f920af9a0ed80f3853b0
2019-12-16 18:40:55 -05:00
John Sully e9bf0c0271 IStorage related build issues
Former-commit-id: 45bc344bfe678a633a005506a690e86ddf2efd5f
2019-12-16 18:32:30 -05:00
Petr Vaněk a319e8a4f4 readme: fix typo
Former-commit-id: 7a3f363f34
2019-12-16 15:40:09 -05:00
John Sully 31d42faf27 Try harder to free memory
Former-commit-id: 48f7c34c91c51ef06d9a1f4e8bc5f1f5cd88cfaa
2019-12-14 19:46:39 -05:00
John Sully fce67c145f A bunch of bug fixes
Former-commit-id: 228339586a19874f869cf45dc3834a270f99768a
2019-12-10 01:01:45 -05:00
John Sully 74cbadb753 Make the storage provider configurable, and show it in the info command
Former-commit-id: e201ce622ff3c7832d03c6b5759386f0efc23cdf
2019-12-09 21:07:37 -05:00
John Sully 38f7cca61a Add support for multiple databases with rocksdb
Former-commit-id: cfa3b760b00776876134692d42e25a60fcd8dea9
2019-12-09 20:45:58 -05:00
Tais P. Hansen 56a28a7c1e Fix keydb-cli crashing on read-only filesystem
Former-commit-id: 91eac2cdb3
2019-12-09 14:23:10 -05:00
John Sully cb136d2ac5 Flash running well
Former-commit-id: 9cf393eb9fb69bcc7550cd8b83e1568b3f360310
2019-12-08 20:06:22 -05:00
John Sully 992784c21d modify how the database array is stored so swaps are easier
Former-commit-id: 48fd6ec5ca69dd505d0e757862c09a898c19cf22
2019-12-08 16:49:59 -05:00
John Sully 86cd47fe80 Prevent extra copy of key
Former-commit-id: 9c3ef97039e59c6b820f71a90f8a9fb4eae8a7b1
2019-12-08 16:02:24 -05:00
John Sully 1e92c7b117 Optimize remote storage by bulk saving keys after processing operations but before sending responses to clients
Former-commit-id: 63a6dc2a29680d5d3f3f245168ca7de5d6bee1eb
2019-12-08 10:56:05 -05:00
John Sully 130589d8d1 Initial RocksDB integration
Former-commit-id: 0de9e5b692c02e779e538ddd0a56d10215e501bb
2019-12-06 20:39:32 -05:00
John Sully 11f710c5fc Fixup IStorage uses
Former-commit-id: 5ea0ce143a79365fb3903c6fc7caeb1c9760b0cc
2019-12-06 17:43:28 -05:00
John Sully e61aa0261b Initial standup of RocksDB dependency
Former-commit-id: 19bb40ffdc794cf9cafa9f4132a0facf1e074101
2019-12-06 17:33:18 -05:00
John Sully ec853485da Fix warning
Former-commit-id: 1d5ae423e039de437e8e48b5d15eb9908846bf04
2019-12-01 20:28:21 -05:00
John Sully b06901a295 Fix Issue #107
Former-commit-id: 98a928147f
2019-12-01 18:17:33 -05:00
John Sully 729825f359 Merge branch 'unstable' into advanced_db
Former-commit-id: d1ae8f2d1b03c0a79a36d710e4bb6594c37028b4
2019-11-30 00:52:33 -05:00
John Sully e16deddd05 Fix deadlock in spinlock (mfence) also spin for less time before sleeping
Former-commit-id: 8a9045c028
2019-11-30 00:51:58 -05:00
John Sully 5f1331cc3c It is permissible to call dictFind() while iterating
Former-commit-id: 43a598c145d5ea9f2c0b2a16f93f5a8cbb724e7e
2019-11-30 00:03:34 -05:00
John Sully 6533428887 Reduce snapshot window to 1 second instead of 10
Former-commit-id: 4f91f0503fe4eea1c20b977a5858ac345c3e7b9b
2019-11-29 22:21:49 -05:00
John Sully b0e6cc85ef Bug: only update global flags for sync save
Former-commit-id: f01a7cf59bf965b35e5bb23e3ecbb7265ef8942a
2019-11-29 22:21:17 -05:00
John Sully fd7a278eea rehash MS does too little work before checking the time
Former-commit-id: 3e57b5c961f7dd91ddb24331eba9a3fa39b08fdd
2019-11-29 15:18:37 -05:00
John Sully 5fd848eedc Nested snapshot garbage collection. Works but huge fragmentation
Former-commit-id: 82b2a3f3dbf8f864d9157655b5422c69845c4019
2019-11-28 19:00:51 -05:00
John Sully b8cf7ef35c Fastlock should yield in ARM
Former-commit-id: 6c65a11b8d
2019-11-28 14:26:43 -05:00
John Sully 65a3485dfb Ensure size() count is accurate, and fix find_threadsafe which didn't check children
Former-commit-id: ffa44b636afd4fe907c79fe7deebac3d1e091ee9
2019-11-25 17:50:40 -05:00
John Sully 6ae66162c5 Move snapshot code into its own file
Former-commit-id: 4afd0a6ce650cc93a73ea3e4bb632226087dde37
2019-11-24 17:59:02 -05:00
John Sully 551b30fb77 Restrict the snapshot API
Former-commit-id: cbafb88f267a9480cdbde6a88e9e1992e8a85971
2019-11-24 17:53:06 -05:00
John Sully 9a75557651 Get rid of key only iterate, the threadsafe is just as fast and key only users can ignore the robj
Former-commit-id: 29689a5ed6141c5b2019d41ccd4036e6ddd1a121
2019-11-24 15:45:17 -05:00
John Sully 0a123e145e Fix crash on shutdown
Former-commit-id: 6dc55cc0f838b3c82afb233985429b4e7fc5dfb1
2019-11-24 14:24:41 -05:00
John Sully da4adb261b Fix multithreading data races
Former-commit-id: 80f6e5818fd575cb08a5f620c35eed1cd862eb57
2019-11-24 13:44:43 -05:00
John Sully 5f64e227a4 Fix warning
Former-commit-id: 1318b87013c61f7149127eae8e30caf887a6db7b
2019-11-23 19:19:54 -05:00
John Sully 57595d8e47 Add support for nesting snapshots
Former-commit-id: 5e6c37f388233cc3f2d204ad17ac2897d3333a21
2019-11-23 19:02:50 -05:00
John Sully 30d85b35e2 Remove pending async writes if we're freeing the client
Former-commit-id: 8b5caad51136f1ed29a9e4c01ed984f6e7ff9c4c
2019-11-23 19:01:40 -05:00
John Sully 87ca381ea2 Add support for removing pending writes for clients we're about to free
Former-commit-id: 67c1fd322e1a12b1b22707d67713d60c97c34cef
2019-11-23 19:00:27 -05:00
John Sully fda0f82d64 Add support for nested snapshots
Former-commit-id: 43456c7807152062d59b2a90597b6204f637f5cd
2019-11-22 20:53:36 -05:00
John Sully 219cd22fd6 Fix crash when client running async keys disconnects before keys finishes
Former-commit-id: dd9233c49d82c89a9d92b7251a56f91c2ee98e77
2019-11-21 20:40:58 -05:00
John Sully b057c1f8fb Merge branch 'unstable' into advanced_db
Former-commit-id: 00ad497fb3f409dbfcaa62fa9ea5d793263eb13d
2019-11-21 20:21:48 -05:00
John Sully 032e5e4dc5 Bump version
Former-commit-id: 7dd53182e0
2019-11-21 20:16:42 -05:00
John Sully c078c89db4 Merge branch 'unstable' into RELEASE_5
Former-commit-id: 53b95d830a
2019-11-21 20:16:23 -05:00
John Sully 27c23b0c9b Fix issue #83
Former-commit-id: 3028a890ef
2019-11-21 20:05:16 -05:00
John Sully 04f3a60032 Add missing dependency to dockerfile
Former-commit-id: 39c6fbddb1
2019-11-20 20:35:14 -05:00
John Sully 9ad2ebabd1 Merge branch 'unstable' of https://github.com/JohnSully/KeyDB into unstable
Former-commit-id: 704cb4e929
2019-11-20 19:44:43 -05:00
John Sully 051bde5d3d Fix issue #107, active replicas do their own expires
Former-commit-id: 8e4f323439
2019-11-20 19:44:31 -05:00
John Sully b3dd59db5c Additional asserts ensuring the client is creating on the correct thread
Former-commit-id: 937702ea1d
2019-11-20 17:00:40 -05:00
John Sully 75fe5ea8e8 Update issue templates
Former-commit-id: 3ea56ffb38
2019-11-20 16:25:33 -05:00
John Sully 773ecdcdd4 Update issue templates
Former-commit-id: becd3fc5a3
2019-11-20 16:24:23 -05:00
John Sully 8ce03ed34a Add missing files
Former-commit-id: 8fa2951e21c5c75a0bb4dc3ef50891123166b76a
2019-11-19 23:03:20 -05:00
John Sully 93dae1f03f Clarify license
Former-commit-id: d0a7f219cd56edbe70bd8e93f21b39e6cd4836e2
2019-11-19 22:22:16 -05:00
John Sully 065ee57c8d Run KEYS async
Former-commit-id: 214a54a815ff66ef4a1526da90296787240ecdf9
2019-11-19 22:12:52 -05:00
John Sully 408a28bd64 Multiple threads should be able to get the same snapshot provided its not too old
Former-commit-id: 054331098ee18dfb1887fd2b0a67688ef894823e
2019-11-19 17:40:35 -05:00
John Sully 80f9b812ca Ensure iterating the keyspace still works during background save
Former-commit-id: 23d7a8a293f253262801bc6ce88ad85e4e38f59a
2019-11-19 15:47:06 -05:00
John Sully a60925c949 Final design of forkless background save. expires NYI
Former-commit-id: e2dc24b441bf52b181c820c853e0bc7524254f3f
2019-11-18 19:47:12 -05:00
John Sully a9f20f0a38 Merge branch 'unstable' into advanced_db
Former-commit-id: 7530d93cd5c4a9fc4e6466abcf96edbdd8daea9e
2019-11-18 15:22:17 -05:00
John Sully d46d4cd9ef Fix failure to wakeup from futex sleep due to fastlock_unlock reading the wrong offset in the asm version. Also fix false sharing in spinlock
Former-commit-id: 4c8603815c
2019-11-17 16:06:49 -05:00
John Sully 831fa24a18 Revert "Debug sleep should apply to all threads"
This reverts commit a2d4f4969f [formerly 41b678814b].


Former-commit-id: 3ae75c2d2b
2019-11-17 15:39:47 -05:00
John Sully 22253da5c9 Improve perf of reading cluster bitfield
Former-commit-id: 9371c005aa
2019-11-17 14:52:12 -05:00
John Sully 29b52ca5ce Merge branch 'unstable' of https://github.com/JohnSully/KeyDB into unstable
Former-commit-id: 16bd6b3f5d
2019-11-14 21:21:46 -05:00
John Sully 8c6f775cf7 Cluster multithreading fixes
Former-commit-id: 3dd78a6101
2019-11-14 20:14:24 -05:00
John Sully a2d4f4969f Debug sleep should apply to all threads
Former-commit-id: 41b678814b
2019-11-14 19:57:29 -05:00
John Sully 7dac41ed72 killing clients should take effect ASAP
Former-commit-id: d0ccb074d5
2019-11-14 19:49:32 -05:00
John Sully b5ba20fe1b Improve AE Assert message
Former-commit-id: cb0fc7cca2
2019-11-14 19:34:13 -05:00
John Sully 21bffec0d7 Fix test failure with tcl8.5 (test only issue)
Former-commit-id: 5e40ea6ee7
2019-11-04 17:31:29 -08:00
John Sully a55fe8a3ba Fix potential race in pubsub
Former-commit-id: 427c5999f1
2019-10-25 02:50:30 -04:00
John Sully 1b3cbd056f Fix potential race in pubsub
Former-commit-id: a91f58b8fd
2019-10-25 02:44:14 -04:00
John Sully c276b86fea bump version
Former-commit-id: 3013799664
2019-10-25 01:00:28 -04:00
John Sully 2ad519d115 Merge branch 'unstable' into RELEASE_5
Former-commit-id: f8220a658e
2019-10-24 23:39:18 -04:00
John Sully 949270801e Signals can happen on any thread, so look for the signal handler not the command on the callstack
Former-commit-id: f1d2b29450
2019-10-24 23:30:08 -04:00
John Sully 70fba8e707 Two fixes: 1) Remove race conditions by not locking clients when async writing. 2) Don't derefence dangling pointers in lambda
Former-commit-id: cb93752aff
2019-10-24 23:07:02 -04:00
John Sully c8f1efddaa Sanitizers work with GCC too
Former-commit-id: 549cad378d
2019-10-24 23:05:39 -04:00
John Sully 7bdc24a86d Remove the DB lock, its unnecessary
Former-commit-id: 631f863dd8
2019-10-24 20:18:48 -04:00
John Sully b39e6c9497 Remove unlocked KEYS command support, we will do this with snapshotting
Former-commit-id: 4396682c07
2019-10-24 20:18:11 -04:00
John Sully 8d2dc7ab52 Build break, ensure C99 compatibility
Former-commit-id: ca4ee4e3e4
2019-10-23 13:38:07 -04:00
John Sully 391b2f311e Fix build break in TravisCI
Former-commit-id: 2da09e0732
2019-10-23 13:31:39 -04:00
John Sully 8d0b21c403 If a replica is about to be closed, don't wait on its lock (potential deadlock)
Former-commit-id: 4986dc6da9
2019-10-23 13:20:23 -04:00
John Sully 8b44d86c7c processEventsWhileBlocked needs to release the lock in a safe way
Former-commit-id: 1a70af2ae1
2019-10-23 13:19:57 -04:00
John Sully 60c35d6ea7 Remove race conditions
Former-commit-id: 5a8cb77d0d
2019-10-22 23:26:37 -04:00
John Sully b1190c24a8 Optimize deadlock detection, fix callstack for ASM, and annotate locks
Note: This change moves our assembly code to use the GNU Assembler because NASM seems to be incapable of emitting the necessary debug information for callstack unwinding to work.

Former-commit-id: 600fc241cf
2019-10-22 21:34:51 -04:00
John Sully 8aea7f8586 Implement deadlock detection
Former-commit-id: fa797408d9
2019-10-22 00:43:32 -04:00
John Sully 6de2f0779a Disable multithreaded KEYS due to bugs
Former-commit-id: 3fac516950
2019-10-21 12:21:46 -04:00
John Sully 1336f4c80f Remove performance zapping test code
Former-commit-id: c50a3d0bbd
2019-10-21 01:48:58 -04:00
John Sully 8e6c6403e1 reenable optimized string dup code
Former-commit-id: 5eb84db03a
2019-10-21 00:08:38 -04:00
John Sully 0e0e9e73f9 Forkless background save. NOT OPTIMIZED
Former-commit-id: bd9d8e05b0
2019-10-20 23:54:05 -04:00
John Sully 0c7f279b2c Factor out dependencies on rdb_child_pid which will be going away
Former-commit-id: 2ab4c6b99e
2019-10-17 23:10:45 -04:00
John Sully 48787c8a03 Dependencies for forkless RDB saving
Former-commit-id: c12be59475
2019-10-17 22:53:50 -04:00
John Sully 6ee58a3b21 Ensure RDB saving only uses data from the persistent data struct, and cleanup inheritance
Former-commit-id: fcdda67d87
2019-10-17 17:20:47 -04:00
John Sully c2b5a8802e Support serializing all types
Former-commit-id: dfdd41f15c
2019-10-16 14:23:28 -04:00
John Sully cec6f0e934 Cleanup inheritance
Former-commit-id: e8debc83e8
2019-10-16 13:45:36 -04:00
John Sully afa487ca54 Merge branch 'unstable' into advanced_db
Former-commit-id: 88152a8f4f
2019-10-16 13:23:19 -04:00
John Sully 5eded25f33 Merge branch 'unstable' into RELEASE_5
Former-commit-id: 2f65aa2337
2019-10-16 12:47:06 -04:00
john@csquare.ca d4bb51d52c Fix: ExpireMember does not update MVCC timestamp
Former-commit-id: f5210a8fb0
2019-10-16 12:38:15 -04:00
John Sully d8a02c8a65 expiremember should return the same results as expire
Former-commit-id: 8f1295c00f
2019-10-16 12:27:04 -04:00
John Sully 4dc728c1ce Fix crash adding expire to key with a subkey expire already set
Former-commit-id: 18a3768e07
2019-10-16 12:26:48 -04:00
John Sully 2e0a7b7821 Fix clang warnings
Former-commit-id: c4f086ae93
2019-10-13 15:48:55 -04:00
John Sully 20a5b1bc15 Fix failing travis CI build
Former-commit-id: 3f0c1f94eb
2019-10-13 15:41:53 -04:00
John Sully 021d287c6a Merge branch 'advanced_db' of https://github.com/JohnSully/redis2 into advanced_db
Former-commit-id: f6855bc34d
2019-10-13 15:35:30 -04:00
eric-weaver 2a472c06f3 add missing dependency
Former-commit-id: 95e3dbc104
2019-10-13 21:30:06 +02:00
Segmond c1e0188e53 Update README.md
Typo, focuses spelled as focusses

Former-commit-id: 40355eac3e
2019-10-13 21:29:15 +02:00
John Sully a2bd45dbd3 Add the IStorage interface and wire it up
Former-commit-id: 898efbfc0c
2019-10-13 15:24:08 -04:00
John Sully f9f4c719d4 Isolate the persistent parts of the database from the runtime parts
Former-commit-id: 8d63f5b560
2019-10-13 15:24:08 -04:00
John Sully b4a34cd600 Hide the database dict
Former-commit-id: 024365521c
2019-10-13 15:13:01 -04:00
John Sully 2980e06c9f Implement the lastmodified query for the OBJECT command
Former-commit-id: 3a3b59a054
2019-10-13 14:12:09 -04:00
John Sully 2fc9bb0c8d You are not allowed to set a subkey expire if the subkey does not exist
Former-commit-id: 12e17cfd6e
2019-10-13 14:11:43 -04:00
John Sully ac243ae4bf Implement the EXPIREMEMBERAT command
Former-commit-id: 203e341bf4
2019-10-13 13:15:13 -04:00
John Sully 650085d61a Add millisecond support for EXPIREMEMBER command
Former-commit-id: 6e6cd84ad7
2019-10-13 12:57:50 -04:00
John Sully e57d2e24c9 Update more slave instances to use replica (Issue #75)
Former-commit-id: 252725d50f
2019-10-13 12:29:20 -04:00
John Sully 05d7536b02 Update a few uses of slave to use the new replica terminology (Issue #75)
Former-commit-id: c15633ea9e
2019-10-13 12:12:05 -04:00
John Sully 6080010db0 Fix an intermittent crash when replicationCron happens before slavesdb is update
Former-commit-id: 27c9ae667e
2019-10-13 12:04:54 -04:00
John Sully 0a00341a80 Implement TTL and PERSIST commands for subkeys. Also ensure expiremember replaces any old subkey expiries
Former-commit-id: 16f96efbe7
2019-10-13 12:03:25 -04:00
John Sully 3670376457 Merge branch 'unstable' of https://github.com/JohnSully/redis2 into unstable
Former-commit-id: 5787e7adc7
2019-10-13 10:03:01 -04:00
John Sully dba52de8ca Fix issue #88 - don't let seperate KeyDB processes listen on the same port
Former-commit-id: 4631119179
2019-10-13 10:02:21 -04:00
John Sully acab05cf08 Bump version
Former-commit-id: 0a0c2146c8
2019-10-01 17:53:48 -04:00
Edgard Lorraine Messias d34f7746ed Fixed "Provides" name in chkconfig info
Former-commit-id: cedea7e400
2019-10-01 13:44:58 -04:00
John Sully aab2aa5590 Merge branch 'unstable' into RELEASE_5
Former-commit-id: 66cef6646c
2019-09-30 00:28:12 -04:00
John Sully b11d3c4b82 Expire DEL command place holder
Former-commit-id: 64aa4b80e6
2019-09-30 00:01:23 -04:00
John Sully c18bba8535 Fuzz mode is now an argument not based on the exe name
Former-commit-id: 551a3cb1aa
2019-09-30 00:00:29 -04:00
John Sully 311b3502ae finish up the RDB fuzz
Former-commit-id: 0942188b0a
2019-09-28 17:38:46 -04:00
John Sully 3a8d13760a Fix double free in RDB load
Former-commit-id: 070c481871
2019-09-28 17:38:26 -04:00
John Sully b01cf73999 RDB fuzz test cases
Former-commit-id: 6df4d29422
2019-09-28 17:04:08 -04:00
John Sully 4db6193052 RREPLAY command now takes a DB argument
Former-commit-id: 6e1e5bd08b
2019-09-28 14:59:44 -04:00
John Sully 4cac0ca35a Implement left and right shift BITOP operators
Former-commit-id: ba365298ed
2019-09-28 00:10:46 -04:00
John Sully cdfcc42b6d Fix leaking stale RDBs during multimaster sync
Former-commit-id: e1c9620951
2019-09-27 13:17:29 -04:00
John Sully 4f19c5de9f Fix multi master bugs: 1. we fail to create the temp file. 2. We use a master RDB as our backup even though we merged databases (and therefore it is not representitive)
Former-commit-id: e776474f68
2019-09-26 20:35:51 -04:00
John Sully 16a88d1244 Add the IStorage interface and wire it up
Former-commit-id: cbd4b4df19
2019-09-20 14:52:22 -04:00
John Sully 5e4d3ed36d Isolate the persistent parts of the database from the runtime parts
Former-commit-id: 08995b065c
2019-09-19 22:36:29 -04:00
John Sully 9da6b795c6 Hide the database dict
Former-commit-id: 065846a9c3
2019-09-19 17:44:42 -04:00
John Sully e62e4ed6c3 Fix issue where AOF events are posted to the wrong event loop and not properly cleaned up
Former-commit-id: 4589e861ab
2019-09-19 15:40:09 -04:00
John Sully c75e700a86 Fix issue where AOF events are posted to the wrong event loop and not properly cleaned up
Former-commit-id: 55324aa56a
2019-09-19 15:39:52 -04:00
John Sully bd4ed482c4 KEYS now only blocks one database
Former-commit-id: 18d42a5c35
2019-09-12 18:51:10 -04:00
John Sully 26c02f47fb bump version
Former-commit-id: 71d5a10621
2019-09-06 13:31:40 -04:00
John Sully e45268930a Fix issue where Active Replicas were commiting data to the wrong database under load
Former-commit-id: ac595ebe37
2019-09-06 13:30:28 -04:00
John Sully 216636c134 Fix issue where Active Replicas were commiting data to the wrong database under load
Former-commit-id: 50a6a3ca38
2019-09-06 13:30:15 -04:00
John Sully afa69ddcbf Acquire the lock for modules that don't acquire it before calling like they are supposed to
Former-commit-id: f83a89f82a
2019-08-29 15:41:03 -04:00
John Sully a610218535 Bump version
Former-commit-id: bf905a78f0
2019-08-27 15:32:24 -04:00
John Sully cb6abcf3fa Fix race condition in PUB/SUB and other async reply commands where the client can be freed before our handler is executed on the client thread. When this occurs the client pointer is dangling
Former-commit-id: fad9483fc9
2019-08-27 15:31:47 -04:00
John Sully a21a7a8ee9 Fix race condition in PUB/SUB and other async reply commands where the client can be freed before our handler is executed on the client thread. When this occurs the client pointer is dangling
Former-commit-id: 46a78c69e7
2019-08-26 20:18:52 -04:00
John Sully 862a87a8ae Fix warnings on newer compilers
Former-commit-id: 33e0b3e1c0
2019-08-14 01:03:24 -04:00
benschermel 4c3ecad178 update readme (#71)
* update readme

* KeyDB must acknowledge its Redis origin and that while we have different opinions we are greatful to Antirez and Redis for the work they've done in this space.

* Update README.md


Former-commit-id: 4e9bfcf84b
2019-08-06 19:25:13 -04:00
John Sully b3de6fcf26 Optimize the new expire code
Former-commit-id: 75c6b4c64a
2019-08-02 21:31:05 -04:00
John Sully ef6d9c6e1f Fix test failures: Non active replicas are allowed to use shared int values
Former-commit-id: 8536854266
2019-07-30 17:11:15 -04:00
John Sully 5525de6148 Acquire the lock for modules that don't acquire it before calling like they are supposed to
Former-commit-id: 6016dd0f8b
2019-07-30 16:54:25 -04:00
John Sully 89b8ba8d9d Fix HLL corruption
Former-commit-id: 47ef9e5cbd
2019-07-29 18:08:45 -04:00
John Sully f8884fed3a Fix crash setting expire on a key with an existing subkey expiration
Former-commit-id: 4858fd893c
2019-07-29 17:09:51 -04:00
John Sully 8d36bab0e1 Fix crash in RediSearch
Former-commit-id: 6b6e6f6c1e
2019-07-29 15:08:57 -04:00
John Sully 945a7b69f1 Fix crash in RediSearch
Former-commit-id: cbe5c04a0f
2019-07-29 15:08:41 -04:00
John Sully ce96c69719 RREPLAY failures should be logged
Former-commit-id: b0a0f03b96
2019-07-24 22:49:55 -04:00
John Sully e3b97286ca RREPLAY failures should be logged
Former-commit-id: 08b6a04055
2019-07-24 22:49:30 -04:00
John Sully 17e6131ca5 Issue #64 RREPLAY isn't binary safe. Add fix and test.
Former-commit-id: f1982ca63d
2019-07-24 22:31:44 -04:00
John Sully 4c49370efe Issue #64 RREPLAY isn't binary safe. Add fix and test.
Former-commit-id: afe66288fe
2019-07-24 22:31:02 -04:00
John Sully a0d7eb5a19 We can't set FExpire() on shared objects, issue #66
Former-commit-id: 2794cfced4
2019-07-23 23:39:47 -04:00
John Sully 8c46a1fba2 Merge pull request #65 from JohnSully/subexpire
EXPIREMEMBER Command Implementation

Former-commit-id: d6b45a56e7
2019-07-23 19:06:57 -04:00
John Sully 9ba5270bda Subexpire entries should load/save
Former-commit-id: a55d980436
2019-07-23 18:53:59 -04:00
John Sully 9f42bb5d91 Fix buggy rebase
Former-commit-id: 6037d1f326
2019-07-23 18:53:59 -04:00
John Sully 4ec97fdb46 Fix merge conflict
Former-commit-id: 0b43b51a2e
2019-07-23 18:53:59 -04:00
John Sully e06c38f1d3 Plumb support for sub expires to all expire related code
Former-commit-id: 184abac694
2019-07-23 18:53:59 -04:00
John Sully 95371d60fe Fix crash with traditional expiration
Former-commit-id: 0ba5b2c3d6
2019-07-23 18:53:58 -04:00
John Sully 94645b33dd Initial prototype of EXPIREMEMBER command
Former-commit-id: 0b3d74ea67
2019-07-23 18:53:58 -04:00
John Sully 82a3e942bf New expire datastructure and algorithm. Allows us to expire in sublinear time
Former-commit-id: ea3bd614b8
2019-07-23 18:49:31 -04:00
John Sully a3dbe03a66 Merge pull request #50 from JohnSully/expire
New Expire Datastructure which is faster and more memory efficient.  This allows us to process expiries in sublinear time.

Former-commit-id: d45edc493d
2019-07-23 18:40:48 -04:00
John Sully e04cff2cfe Support TTL stats with the new expire datastructure
Former-commit-id: 271df3dad4
2019-07-23 18:30:10 -04:00
John Sully 8b3d250d8f Implement hash table stats and fixup the hash function based on the results
Former-commit-id: 5a193872f8
2019-07-23 18:30:10 -04:00
John Sully e8709ee6b0 Add back missing file lost in rebase
Former-commit-id: b5512d77a1
2019-07-23 18:30:10 -04:00
John Sully 3ffdccad86 Add back file erroniously deleted in rebase
Former-commit-id: 42bda8eaba
2019-07-23 18:30:10 -04:00
John Sully fc54e0970f never make last minute changes before commiting
Former-commit-id: 7e5d3f4f16
2019-07-23 18:30:10 -04:00
John Sully 23c1e89190 Fix a few potential assert crashes
Former-commit-id: 5f3920e491
2019-07-23 18:30:10 -04:00
John Sully a060bc7942 New expire datastructure and algorithm. Allows us to expire in sublinear time
Former-commit-id: 3880d2616c
2019-07-23 18:30:10 -04:00
John Sully f094402c33 Any +x bit is acceptable
Former-commit-id: 156e596f9c
2019-07-19 15:26:17 -04:00
John Sully 8d526d9354 Any +x bit is acceptable
Former-commit-id: fc58516cca
2019-07-19 01:42:05 -04:00
John Sully 5404d6f6bb Modules must have execute permissions to load
Former-commit-id: a4efcd35af
2019-07-19 01:31:10 -04:00
antirez ebc50797a0 RDB: make sure to abort on LZF encoding error.
Former-commit-id: 27fe1658a2
2019-07-19 01:03:16 -04:00
antirez 867070eb99 RDB: handle encoding errors with rdbExitReportCorruptRDB().
Without such change, the diskless replicas, when loading RDB files from
the socket will not abort when a broken RDB file gets loaded. This is
potentially unsafe, because right now Redis is not able to guarantee
that encoding errors are safe from the POV of memory corruptions (for
instance the LZF library may not be safe against untrusted data?) so
better to abort when the RDB file we are going to load is corrupted.

Instead I/O errors are still returned to the caller without aborting,
so that in case of short read the diskless replica can try again.


Former-commit-id: 47feb2719c
2019-07-19 01:02:49 -04:00
John Sully 1c8c4a5db2 Fix bad merge in SCAN KEYS command
Former-commit-id: c21af6b351
2019-07-19 00:43:23 -04:00
John Sully c178b67ded Merge commit '9c1932beeb6e307c2fbeadcfff8954e517189ae8' into unstable
Former-commit-id: 821c12c482
2019-07-19 00:32:43 -04:00
John Sully 33acb40633 Merge commit '985e5b2c608eade2a60e50a6a177f13381c9c8d8' into unstable
Former-commit-id: 4602f8c391
2019-07-19 00:01:56 -04:00
John Sully 6e461c3cc3 Fix compile errors from merges
Former-commit-id: 27a927fe00
2019-07-18 23:35:51 -04:00
Angus Pearson 12c8823c93 Add char* typeNameCanonicalize(robj*) to remove duplicate code between SCAN and TYPE commands,
and to keep OBJ_* enum to string canonicalization in one place.


Former-commit-id: 3cdc6e8d84
2019-07-18 23:31:31 -04:00
John Sully 1e066d266e Merge commit '2af8ebe14743ad88fd15af2ea91862b0667e94ce' into unstable
Former-commit-id: 89b52da387
2019-07-18 23:28:56 -04:00
Madelyn Olson a25866ad35 Fixed some spelling issues in ACL codepath including user facing error
Former-commit-id: 50ad880ad5
2019-07-18 23:28:36 -04:00
John Sully 11b12219eb Merge commit '214555b02ea448c444fb6a32ecfc5f312fc052b8' into unstable
Former-commit-id: 15bed4bbcc
2019-07-18 23:26:46 -04:00
John Sully 13fa9bb2be Merge commit '4bbaf621a12f6ec22ec7dad6a2282b7908660497' into unstable
Former-commit-id: 10986ae3a8
2019-07-18 23:22:36 -04:00
John Sully c90c269df3 Merge commit '525fc336ef5172f1eddbf18cbbfc1a32b054c9e2' into unstable
Former-commit-id: 2baa76b2ee
2019-07-18 23:21:13 -04:00
John Sully 6f3eda55d9 Merge commit '9eea57cc311e62a49358e09af7baebce9da9053f' into unstable
Former-commit-id: ee460301fd
2019-07-18 23:20:46 -04:00
John Sully 79b33481ae Merge commit '3f4f7aff1aa6abf8cad1726941d4c33b3bfbc9b8' into unstable
Former-commit-id: 8ebe2fce3d
2019-07-18 23:18:42 -04:00
antirez 12325871b4 Test: fix slowlog test false positive.
In fast systems "SLOWLOG RESET" is fast enough to don't be logged even
when the time limit is "1" sometimes. Leading to false positives such
as:

[err]: SLOWLOG - can be disabled in tests/unit/slowlog.tcl
Expected '1' to be equal to '0'


Former-commit-id: 8198a697fd
2019-07-18 23:12:52 -04:00
antirez b2d03d4221 Make comment in getClientOutputBufferMemoryUsage() describing the present.
Former-commit-id: 35acae360a
2019-07-18 23:12:39 -04:00
antirez 271db42742 Fix test false positive introduced by threaded I/O.
Now clients that are ready to be terminated asynchronously are processed
more often in beforeSleep() instead of being processed in serverCron().
This means that the test will not be able to catch the moment the client
was terminated, also note that the 'omem' figure now changes in big
steps, because of the new client output buffers layout.

So we have to change the test range in order to accomodate for that.
Yet the test is useful enough to be worth taking, even if its precision
is reduced by this commit. Probably if we get more problems, a thing
that makes sense is just to check that the limit is < 200k. That's more
than enough actually.


Former-commit-id: 8aaa8b0b11
2019-07-18 23:12:05 -04:00
John Sully 40eefe7da7 Release version 5
Former-commit-id: 25e18a7de9
2019-07-18 20:50:40 -04:00
John Sully cfee6376d2 Active Replicas should always use their own slaveseldb variable when sending/saving rdbs - never those of their masters. This is because the Active Replica is also simultaneously a master
Former-commit-id: bb090b6d20
2019-07-18 20:50:20 -04:00
John Sully 133650ac7d remove unnecessary variables
Former-commit-id: a9c4e3970f
2019-07-18 19:37:49 -04:00
John Sully 594559b45e Fix issue #59 - Test replicaof config variable
Former-commit-id: d5ecc2347a
2019-07-18 19:22:49 -04:00
John Sully 5cb7ec841a Add support for sanitizers and fix issues they have found
Former-commit-id: 58971a430d
2019-07-18 18:39:42 -04:00
John Sully bd3cc0bb95 Resolve race on neterr variable
Former-commit-id: 1512274f4c
2019-07-18 17:11:28 -04:00
John Sully 857f778b38 Make object refcounts atomic, technically it doesn't need to be currently but the semantics are complicated and error prone. This is much safer with little performance impact
Former-commit-id: e310d33c12
2019-07-18 15:49:12 -04:00
John Sully ce595a9287 Suppress initialized data sanitizer warnings
Former-commit-id: ad32ba0343
2019-07-18 15:49:03 -04:00
John Sully 48e44624c3 Another RESP3 regression
Former-commit-id: 4e30a5b4e5
2019-07-17 22:57:52 -04:00
John Sully f71f79af8e Fix Issue #58
Former-commit-id: c8516f3dc4
2019-07-17 02:34:02 -04:00
John Sully 5cbb1ed5f9 Shared objects should be marked as such
Former-commit-id: aae0fdc114
2019-07-16 18:32:01 -04:00
John Sully 20cfb91f3f Crash when aborting SYNC with a master on a thread other than main
Former-commit-id: a19d0f67b9
2019-07-15 14:55:41 -04:00
John Sully add714913b Implement test mode to make finding bugs easier
Former-commit-id: 971f69fe1f
2019-07-15 14:55:18 -04:00
John Sully b82cf7f034 Blocked clients can stall when under low load
Former-commit-id: 7468c691ad
2019-07-13 16:44:11 -04:00
John Sully 0f5b59241f Give the active-rep more time to sync for test reliability
Former-commit-id: 620c2ec141
2019-07-12 23:52:07 -04:00
John Sully ff0065df91 Fix more locking deadlocks
Former-commit-id: 3081b6f98b
2019-07-12 23:51:45 -04:00
John Sully 8cd37fae2c Fix deadlock with client and ae locks
Former-commit-id: 8630339e43
2019-07-12 20:46:50 -04:00
John Sully 3ffe5b5dde Add Active Replication tests
Former-commit-id: 528d10091f
2019-07-12 03:54:41 -04:00
John Sully e29c6d0ac9 FIX: The dabase count configuration is not respected
Former-commit-id: 149c3cf3dd
2019-07-12 02:13:37 -04:00
John Sully 0da2d91659 Update README.md
Former-commit-id: f12c3cf9dd
2019-07-11 20:29:47 -04:00
John Sully 35e23ca988 Fix compile errors on GCC v5
Former-commit-id: 1f08a0efb3
2019-07-11 20:20:01 -04:00
John Sully f0e17a7d04 Fix more accounting errors with active replication and the replication offset. Specifically we don't update repl_ack_off as frequently as we do reploff_skipped
Former-commit-id: 6cf85d1d01
2019-07-11 19:20:12 -04:00
John Sully 2bccf7adbf Active Replicas are not slaves
Former-commit-id: b5101a460d
2019-07-11 18:51:20 -04:00
John Sully 8ba25371a5 Fix active replication offset synchronization accounting, and enable the wait command
Former-commit-id: a5784ef09e
2019-07-11 17:00:23 -04:00
John Sully 0c611d8347 lazyfree needs to consume more memory to be detectable
Former-commit-id: 122ec25bf0
2019-07-06 00:53:40 -04:00
John Sully 514640f314 Redis only does this in beforeSleep function - doing extra calls like we do causes test issues
Former-commit-id: d013ad9eba
2019-07-06 00:53:20 -04:00
John Sully 725dd6539f Add back user space buffering of RDB save
Former-commit-id: d918ca6fa5
2019-07-06 00:36:23 -04:00
John Sully 33f32477da We can use less memory in the client output buffers. Its OK
Former-commit-id: 852819180f
2019-07-05 23:43:01 -04:00
John Sully 95f0357746 Fix additional warning related to new() overloads
Former-commit-id: 218111eb72
2019-07-05 23:42:39 -04:00
John Sully 9983a59895 Fix additional warnings
Former-commit-id: 1531cfb7ee
2019-06-27 16:29:36 -04:00
John Sully f5f4815041 Fix mac build breaks
Former-commit-id: 16a89f21dc
2019-06-27 15:04:09 -04:00
John Sully dbc8272acf Fix libcxxabi clang compile failure in travis, as well as bool issue due to old clang
Former-commit-id: 79e5160e37
2019-06-18 00:42:01 -04:00
John Sully 61015908ab Bump travis compiler version
Former-commit-id: 510e966dc0
2019-06-18 00:42:01 -04:00
John Sully d4d6e7756d Fix Travis CI issue
Former-commit-id: 8238d3207e
2019-06-17 23:56:23 -04:00
John Sully d65ce6fbbc Fix issues with relaxed memory model architectures
Former-commit-id: e37bc4ad40
2019-06-17 23:00:12 -04:00
John Sully db5af7990d Remove unnecessary recursive lock
Former-commit-id: 0f78b8b917
2019-06-17 23:00:12 -04:00
John Sully a849655efd missing file :)
Former-commit-id: 19061fe04f
2019-06-17 23:00:12 -04:00
John Sully d5b47e6997 Fix test failures due to assert
Former-commit-id: 9c901eb65f
2019-06-17 23:00:12 -04:00
John Sully 9725fadaba convert the pending write list to a vector for better performance and less cache thrashing
Former-commit-id: ae33ff3a6e
2019-06-17 23:00:12 -04:00
John Sully 924509f52f Move more code out of the GIL
Former-commit-id: 59dbd625c1
2019-06-17 23:00:12 -04:00
John Sully 9a050ffb42 Remove an unnecessary lock that eats performance
Former-commit-id: 8eb4e355b9
2019-06-17 23:00:12 -04:00
John Sully 049ca9bf58 Even the next up thread should sleep in the futex
Former-commit-id: 8b76b01bfe
2019-06-17 23:00:12 -04:00
John Sully dd7cbbe730 Fallback to a futex if we spin for a long time
Former-commit-id: ec57b4b024
2019-06-17 23:00:12 -04:00
John Sully 7fc6f7f607 Enable load balancing of UNIX sockets across threads
Former-commit-id: 46d6caa47c
2019-06-11 01:34:36 -04:00
John Sully 193522b54e Fix crash adding duplicate replica. Just send an error instead
Former-commit-id: 97b65ce19c
2019-06-02 15:50:50 -04:00
John Sully 460e36a6e7 Merge branch 'unstable' of https://github.com/JohnSully/redis2 into unstable
Former-commit-id: 55d0ef40b0
2019-06-01 03:23:21 -04:00
John Sully 2679450489 Implement MOTD feature in keydb-cli
Former-commit-id: a6c56416fc
2019-05-21 15:12:12 -04:00
John Sully b35e5f3cd0 Update README.md
Former-commit-id: cd3c482d5e
2019-05-21 00:04:12 -04:00
John Sully dd5152f836 Fix regressions from RESP3 changes in commit c8304b099d
Former-commit-id: c5cbb77fc7
2019-05-20 23:39:44 -04:00
John Sully b7fff89e3e The unstable branch doesn't have a version #
Former-commit-id: d7f21f02b3
2019-05-20 16:12:26 -04:00
John Sully 7d40b9b7d5 Fix double unlock
Former-commit-id: 87dc8ce9b3
2019-05-20 15:52:04 -04:00
John Sully fa828d8c92 Merge branch 'unstable' of https://github.com/JohnSully/redis2 into unstable
Former-commit-id: 2e22aa1a9c
2019-05-20 10:57:59 -04:00
John Sully a3706352d0 Protocol regression from RESP3 work
Former-commit-id: 8c56dbf971
2019-05-20 10:57:37 -04:00
Qix 36ad4c5907 cast void data pointer to const char * to fix gcc
Former-commit-id: a78169e9e0
2019-05-19 16:24:39 -04:00
John Sully 2783649378 Fix build breaks on some older compilers
Former-commit-id: 39a60c8120
2019-05-18 20:58:48 -04:00
John Sully 7074a7615e Fix build break on some compilers
Former-commit-id: c57d8760bd
2019-05-18 20:41:05 -04:00
John Sully a3556e7cef Merge branch 'unstable' of https://github.com/JohnSully/redis2 into unstable
Former-commit-id: 3eed2a8780
2019-05-18 20:25:23 -04:00
John Sully 7ccf4f2dcf Print nicer error messages for uncaught exceptions
Former-commit-id: 23b0268a7f
2019-05-18 20:24:29 -04:00
John Sully 2dccb832bf Fix: Active replication falls behind under high load
Former-commit-id: 3d0de946bb
2019-05-18 20:23:20 -04:00
John Sully f240fb7803 Update Active Replication wiki links
Former-commit-id: 866b8ead91
2019-05-11 21:53:30 -04:00
John Sully 6371f6e3e4 Fix a few issues from the merge
Former-commit-id: aa274960ff
2019-05-11 19:26:59 -04:00
John Sully e601bc1169 Make lazy free test more reliable
Former-commit-id: 54d6eb851b
2019-05-11 17:57:35 -04:00
John Sully 397e85befb Merge branch 'unstable' of https://github.com/antirez/redis into MergeRedis
Note: some tests failing

Former-commit-id: 86d7276f24
2019-05-11 02:20:34 -04:00
John Sully 35a4c694e6 Add byline to logo
Former-commit-id: 0918651438
2019-05-10 23:48:14 -04:00
John Sully 1efbf15086 Fix CentOS build failure
Former-commit-id: 272d9297b6
2019-05-09 19:54:34 -04:00
John Sully 8c6e5aae98 Merge branch 'unstable' of https://github.com/JohnSully/redis2 into unstable
Former-commit-id: f5bfc71899
2019-05-09 19:16:50 -04:00
John Sully 3f9b9fd718 build break fix
Former-commit-id: 42e1ded55f
2019-05-09 19:16:31 -04:00
John Sully b57a72fa2c Fix issue #11
Former-commit-id: 6c410af5a8
2019-05-09 19:14:10 -04:00
John Sully 302e35de6b Fix typo
Former-commit-id: 57ae676181
2019-05-09 19:06:58 -04:00
John Sully 57539d2ce4 Add missing file
Former-commit-id: 7896ca6e52
2019-05-09 19:05:09 -04:00
John Sully 58b4650c5a Change debug messages to reference KeyDB
Former-commit-id: c4a315dd5e
2019-05-09 19:03:50 -04:00
John Sully 3d2b9e3ab8 Fix module locking issues
Former-commit-id: bf26959b72
2019-05-09 19:00:27 -04:00
John Sully 6ae796cb91 refactor server global into a pointer (so that threadsafe commands can set this to NULL to prove they don't rely on it
Former-commit-id: 37b2d046be
2019-04-21 14:01:10 -04:00
John Sully 83adc0eabb Factor out some normally const globals
Former-commit-id: fa2e407873
2019-04-21 13:20:45 -04:00
John Sully a3228b0875 additional fix to rreplay forward compat
Former-commit-id: c61cf57db5
2019-04-20 01:36:23 -04:00
John Sully ea83004d18 Make rreplay forward compatible with extra future args
Former-commit-id: ef3690f2db
2019-04-20 01:15:01 -04:00
John Sully fd65ef689a Tweak mvcc time format so rollovers are not an issue
Former-commit-id: 14d01ec7bd
2019-04-20 01:03:08 -04:00
John Sully d6be236697 Timestamp writes to objects so we can be smarter about merging databases
Former-commit-id: 5dc9f70386
2019-04-20 00:52:07 -04:00
John Sully 3b09f197d5 Fix use uninitialized
Former-commit-id: 88e593bf96
2019-04-19 23:41:40 -04:00
John Sully c07aa5f3fe Additional MVCC work and fix memory leak loading objects from rdb
Former-commit-id: efde2e6be6
2019-04-19 22:54:42 -04:00
John Sully 676334758d Add version override command for users that need compatibility with Redis
Former-commit-id: 5a78a3bc46
2019-04-19 19:57:11 -04:00
John Sully 7933223b2a RREPLAY PERF: The UUID stack is unnecessary, RREPLAY itself can detect the cycle and call cancel()
Former-commit-id: b276d803d4
2019-04-19 19:36:47 -04:00
John Sully daed37e6c4 Detect cycles in mesh networks with multi master
Former-commit-id: da51ac430b
2019-04-19 19:31:11 -04:00
John Sully a8d89641cf Fix crash near boot when adding replicas and dumping database
Former-commit-id: 01eb0a3c7f
2019-04-19 17:08:54 -04:00
John Sully bb07727a0d Replication fake connection should inhereit the user and permission of the real connection
Former-commit-id: dc2b3cf4f8
2019-04-18 22:07:35 -04:00
John Sully 0e10e4f6f5 Start of MVCC support (and more C++)
Former-commit-id: c4621a5ed2
2019-04-16 23:16:03 -04:00
John Sully 98c30dfac1 Fix module linking and crashing issues
Former-commit-id: 1c953a4d5b
2019-04-16 13:34:22 -04:00
John Sully e79d075076 Fix replica authentication failure when masterauth is below replicaof in the config file
Former-commit-id: c64ce7aa9c
2019-04-15 22:31:02 -04:00
John Sully 89e09dd609 Fix memory leak unsetting master
Former-commit-id: acdc4fdfec
2019-04-11 19:55:44 -04:00
John Sully 92feaf280f Fix compile errors when MALLOC=memkind
Former-commit-id: 7ef9c18b72
2019-04-11 19:40:45 -04:00
John Sully cf40edb1e0 Fix failure to respect masterauth issue #26
Former-commit-id: a69b4e79db
2019-04-11 19:08:12 -04:00
John Sully 5b8893ef84 Fix addition RESP3 regressions (return empty set)
Former-commit-id: 740fc6c2b8
2019-04-08 16:52:57 -04:00
John Sully 90f6b22128 Fix protocol break with hgetall and family
Former-commit-id: 42202c868d
2019-04-08 13:52:02 -04:00
John Sully 68bec6f239 Move remaning files dependent on server.h over to C++
Former-commit-id: 8c133b605c
2019-04-08 01:00:48 -04:00
John Sully f469e28797 Move dict to C++
Former-commit-id: b50acd7238
2019-04-07 17:23:59 -04:00
John Sully 149415cd20 Port db to C++
Former-commit-id: 54db278695
2019-04-07 17:13:14 -04:00
John Sully 836e0aa80b Move a bunch of files to C++
Former-commit-id: 011948bcef
2019-04-07 16:54:56 -04:00
John Sully e8baaae47e Make t_string C++
Former-commit-id: 9f95d8b38f
2019-04-07 15:24:23 -04:00
John Sully 8ae135c9c9 Fix clang compile error
Former-commit-id: 3d394a6fa2
2019-04-06 00:20:17 -04:00
John Sully 15caa9f10b Add RREPLAY command and put the issue of packet storms to rest. Fixes issue #24
Former-commit-id: 68d2b648e0
2019-04-06 00:14:27 -04:00
John Sully ed808fe721 Fix regression in active replication caused by multimaster PR
Former-commit-id: 283998404f
2019-04-04 16:50:40 -04:00
John Sully aeddf60858 Merge pull request #23 from JohnSully/wip-multimaster
Wip multimaster

Former-commit-id: a7b4d0fea6
2019-04-04 11:40:58 -07:00
John Sully cddcd632ca All tests runs pass! YAYgit add src/cluster.c src/config.c !
Former-commit-id: 59051dd59d
2019-04-04 01:02:19 -04:00
John Sully 0e47f7dd52 Fix some more failing tests
Former-commit-id: cd836a37e7
2019-04-04 00:25:30 -04:00
John Sully 846cad0637 Merge branch 'unstable' into wip-multimaster
Former-commit-id: 4326d22380
2019-04-03 00:12:13 -04:00
John Sully 529a517740 Fix cluster test failure (not real issue)
Former-commit-id: 161d3a35ff
2019-04-03 00:11:34 -04:00
John Sully 16759f534d Merge branch 'unstable' of https://github.com/JohnSully/redis2 into unstable
Former-commit-id: 20a9d21dfb
2019-04-03 00:09:51 -04:00
John Sully 9d23d50830 Fix failing tests due to build issue inhereted from Redis
Former-commit-id: e902789aa7
2019-04-03 00:09:26 -04:00
John Sully 22c8d9f70b Merge branch 'unstable' of https://github.com/antirez/redis into unstable
Former-commit-id: 3745bbd95b
2019-04-03 00:00:38 -04:00
John Sully 249ac16a6a Cluster tests shouldn't crash (note: still not passing either)
Former-commit-id: e63b2880b0
2019-04-02 22:32:10 -04:00
John Sully 702a1646f3 Multiple masters is no good if we keep dropping the database
Former-commit-id: a9b70e1ef7
2019-04-02 21:47:21 -04:00
John Sully 6d05a34ddd Tests are passing! YAY!
Former-commit-id: e300f753c5
2019-04-02 21:36:04 -04:00
John Sully 5d3c28a902 It compiles and doesn't crash immediately!
Former-commit-id: efaeca5887
2019-04-02 16:47:05 -04:00
John Sully 6cda4853d8 Link to GUI
Former-commit-id: 4d67305661
2019-03-31 14:37:54 -04:00
John Sully ff9d1d20e6 Commit missing file
Former-commit-id: 853bb6ca3e
2019-03-28 17:56:14 -04:00
John Sully ffe8a08c6c Travis needs to install uuid-dev
Former-commit-id: b16f23ae8e
2019-03-28 16:18:26 -04:00
John Sully 9c27743340 Implement database merging for Active Replicas
Former-commit-id: 91e6368de0
2019-03-28 15:12:43 -04:00
John Sully 60d22e0225 Merge branch 'unstable' of https://github.com/JohnSully/redis2 into unstable
Former-commit-id: e4451b9628
2019-03-27 22:59:38 -04:00
John Sully eccb4c6d34 If no rdb file is specified and no s3 file is specified use the default RDB filename. If only S3 is specified use diskless sync
Former-commit-id: 770bb8ef5f
2019-03-27 22:59:12 -04:00
John Sully e076764a2a Update README.md
Former-commit-id: 87b958a210
2019-03-27 21:52:08 -04:00
John Sully d0256b50d8 Update README.md
Former-commit-id: 314ac90ba9
2019-03-27 15:39:25 -04:00
John Sully 83fc032d06 Merge branch 'unstable' of https://github.com/JohnSully/redis2 into unstable
Former-commit-id: 9f33822083
2019-03-26 20:39:56 -04:00
John Sully 714bad8d63 SIGALRM should happen on a worker thread to make our tests happy
Former-commit-id: 10a4b35bc5
2019-03-26 20:39:30 -04:00
John Sully 3e591fe487 Make PSYNC2 tests more reliable on slower hardware
Former-commit-id: 7b1dd0b60d
2019-03-26 18:59:31 -04:00
John Sully 35d3d7c961 Merge pull request #18 from DevopsDood/unstable
Update Readme for missing docker flag

Former-commit-id: 7a650741f7
2019-03-26 09:49:53 -04:00
Richard Silver bc9aaa4abe Update Readme for missing docker flag
Former-commit-id: 2ce5f1b944
2019-03-25 15:55:23 -07:00
John Sully cbd5a844f2 Give information on dependencies that need installation.
Former-commit-id: 063a14372d
2019-03-25 16:22:10 -04:00
John Sully 2ab9e6a4c1 Add depenednecy on uuid-dev to dockerfile
Former-commit-id: dd70e1b571
2019-03-25 02:09:53 -04:00
John Sully e22c496cc2 Talk about active replica
Former-commit-id: 1840b893c2
2019-03-25 00:12:04 -04:00
John Sully b817346d6e We don't corretly terminate our varargs
Former-commit-id: 8bcde757ce
2019-03-24 18:57:25 -04:00
John Sully ff470686df OS X build fixes
Former-commit-id: 1dff223c71
2019-03-24 18:06:57 -04:00
John Sully ccb9cb8b01 Active Replica Support
Former-commit-id: a7aa2b0740
2019-03-24 15:39:10 -04:00
John Sully d18905fd26 Merge branch 'unstable' of https://github.com/JohnSully/redis2 into unstable
Former-commit-id: fb45fefbca
2019-03-21 23:11:55 -04:00
John Sully 6efdc5e923 Fix kqueue build error
Former-commit-id: 7b914c2531
2019-03-21 23:11:19 -04:00
John Sully 8c2aa3cf8c Merge pull request #16 from gitter-badger/gitter-badge
Add a Gitter chat badge to README.md

Former-commit-id: 75d517a27f
2019-03-21 21:57:25 -04:00
John Sully a17044b7b1 Update README.md
Former-commit-id: 4c98bc690e
2019-03-21 21:26:00 -04:00
John Sully 76dd5fe7fc Update README.md
Former-commit-id: 550b3a3a99
2019-03-21 21:25:49 -04:00
The Gitter Badger 8e5a2b4218 Add Gitter badge
Former-commit-id: ef7e89352d
2019-03-22 01:24:32 +00:00
John Sully f11840f6b2 Merge branch 'unstable' of https://github.com/antirez/redis into unstable
Former-commit-id: 9322d604ee
2019-03-21 20:15:59 -04:00
John Sully 67e646fe16 Merge pull request #15 from DevopsDood/unstable
Added docker builder for those that want it

Former-commit-id: 5d92110630
2019-03-21 19:54:00 -04:00
Richard Silver 764ecec65b Merge branch 'unstable' of github.com:JohnSully/KeyDB into unstable
Former-commit-id: 4056037cc2
2019-03-21 16:19:45 -07:00
Richard Silver 3c739e8b19 updated readme and Dockerfile to allow for tests to be run in container
Former-commit-id: 677ae5487f
2019-03-21 16:18:37 -07:00
John Sully 4c82a94f3a comment issue
Former-commit-id: 19956b3807
2019-03-21 22:18:48 +00:00
John Sully c1f7c0bcd5 Polarity of the weak flag was wrong. We want to use the strong variant of atomic_compare_exchange always
Former-commit-id: ab9122f2cb
2019-03-21 22:17:04 +00:00
Richard Silver df0af10250 Added build Dockerfile
Former-commit-id: e62c6b0ed0
2019-03-21 15:15:11 -07:00
John Sully c04002975d Compile issues at O0 optimization
Former-commit-id: 27a420fbc2
2019-03-21 21:57:18 +00:00
John Sully 9d76178296 ARM build fix: Don't use X64 asm here
Former-commit-id: b775ebb382
2019-03-20 04:14:33 +00:00
John Sully fbe1a6c52a Add debugging stats to the INFO command
Former-commit-id: ac80a5c6a6
2019-03-19 22:04:33 -04:00
John Sully 6cdb35815d Add release badge
Former-commit-id: c74100a552
2019-03-19 20:54:36 -04:00
John Sully 3b6b85c986 Add CI badge
Former-commit-id: 03379106d6
2019-03-19 20:46:25 -04:00
John Sully c278e61f95 Getting close! Maybe there was a better way to do this than checking in travis.yml files repeatedly but alas it works and doesn't affect people building locally
Former-commit-id: 9ad229f663
2019-03-19 20:40:17 -04:00
John Sully 003e64ec42 Clang build with libc malloc
Former-commit-id: 0900edf776
2019-03-19 20:34:09 -04:00
John Sully b4abddc275 more clang travis fixes
Former-commit-id: ea520027b9
2019-03-19 20:26:35 -04:00
John Sully 9c5fcadc5f Fix race condition building dependencies with multithreaded builds
Former-commit-id: 04679b3b3b
2019-03-19 20:25:30 -04:00
John Sully d80f576f77 Will clang build now with travis?
Former-commit-id: 2bf5c1324a
2019-03-19 20:00:52 -04:00
John Sully c0fbc6d2d9 clang build failure
Former-commit-id: 3d93ca1bf6
2019-03-19 19:55:03 -04:00
John Sully 5a72c7e227 Travis clang dependencies
Former-commit-id: c548431611
2019-03-19 19:50:28 -04:00
John Sully ac7d52cc7a Makefile ignores env CXXFLAGS
Former-commit-id: 0ab29f7394
2019-03-19 19:29:14 -04:00
John Sully c6646d729b No underscore
Former-commit-id: 30dab7ad14
2019-03-19 19:22:27 -04:00
John Sully 1a5ec3b15b Maybe this will make travis-ci stop using GCC headers when compiling with clang
Former-commit-id: 0c5fa59221
2019-03-19 19:12:15 -04:00
John Sully 1508a46c3b Feature gate SO_INCOMING_CPU so we compile on older kernels
Former-commit-id: 267e84f97d
2019-03-19 18:55:42 -04:00
John Sully 25a69f235d typo
Former-commit-id: 344cca75c6
2019-03-19 18:40:50 -04:00
John Sully 3874f86a65 It would be nice if our CI actually called make...
Former-commit-id: 0dd8e682f4
2019-03-19 18:37:53 -04:00
John Sully b846324019 Fix issues with travis config
Former-commit-id: da7e54819a
2019-03-19 18:31:45 -04:00
John Sully 431667dd08 Let's try travis-ci
Former-commit-id: 4e70215307
2019-03-19 18:27:54 -04:00
John 9066cfd682 Fix linker errors on some compilers due to sdslen()
Former-commit-id: 6aa162f6ff
2019-03-19 22:08:20 +00:00
John Sully b195ff4977 KeyDB has different aims than the Redis project.
We believe software is for the user.  If a feature requires complicating the codebase
but simplifies our user's lives we will do it any time.  This should not be taken
as an outright rejection of the manifesto, as we agree on many points.


Former-commit-id: d380074569
2019-03-19 01:36:03 -04:00
John Sully 571b2ab9de Merge branch 'unstable' of https://github.com/JohnSully/redis2 into unstable
Former-commit-id: c406e7ff51
2019-03-19 01:26:22 -04:00
John Sully b0387a5c93 Merge branch 'unstable' of https://github.com/antirez/redis into unstable
Former-commit-id: 31ff6cffee
2019-03-19 01:26:10 -04:00
John Sully 92dc1bed13 Hack to prevent build errors on some machines due to missing throw()
Former-commit-id: a9e525c81e
2019-03-15 05:28:20 +00:00
John Sully f25d4bf94e Merge /home/john/repos/redis_clean into unstable
Former-commit-id: 6157a5fc1b
2019-03-14 14:22:41 -04:00
John Sully aa76a89a9a Merge branch 'unstable' of https://github.com/antirez/redis into unstable
Former-commit-id: be3cb1ad33
2019-03-14 14:22:27 -04:00
John Sully 0c7bb3d208 Merge branch 'unstable' of https://github.com/JohnSully/redis2 into unstable
Former-commit-id: 966f4a8144
2019-03-13 18:08:59 -04:00
John Sully 6702b89166 Merge branch 'unstable' of https://github.com/antirez/redis into unstable
Lots of fixes and improvements from upstream.


Former-commit-id: 261cf24efc
2019-03-13 18:08:22 -04:00
JohnSully 7703340a65 Update README.md
Former-commit-id: a3da10f4eb
2019-03-13 16:57:40 -04:00
John Sully 06f8eb0571 Merge branch 'unstable' of https://github.com/JohnSully/redis2 into unstable
Former-commit-id: 6cb8063497
2019-03-13 16:53:55 -04:00
John Sully d0de467103 Implement load database dumps from S3. We already save.
Former-commit-id: a45f212693
2019-03-13 16:53:37 -04:00
JohnSully 4e584a1c60 Merge pull request #9 from 0xflotus/patch-1
fixed guarantees

Former-commit-id: 7c72cd5471
2019-03-13 12:22:29 -04:00
0xflotus 8fdb99a23e fixed guarantees
Former-commit-id: 66f2032708
2019-03-13 15:14:34 +01:00
JohnSully be0a6672e4 Update README.md
Former-commit-id: 7546c7d8b4
2019-03-12 14:38:03 -04:00
JohnSully 89f9a9fea6 formatting fixes
Former-commit-id: 703e4ad2fe
2019-03-12 00:59:28 -04:00
JohnSully aab69c02cb Add charts to readme
Hotlink from medium, hope they don't mind.

Former-commit-id: 0b98280a1f
2019-03-12 00:55:03 -04:00
John Sully 1d96e74069 Merge branch 'unstable' of https://github.com/JohnSully/redis2 into RELEASE_0_9
Former-commit-id: 4609bed6a4
2019-03-11 20:54:14 -04:00
John Sully c56b68f9a5 Werror is good for me, but not for people compiling on other compilers
Former-commit-id: 99ccb11d89
2019-03-11 20:53:57 -04:00
JohnSully ff4d105d55 Explain how multithreading works
Former-commit-id: 8a5a513662
2019-03-11 20:37:57 -04:00
JohnSully e59b6b5469 Update README.md
Former-commit-id: bf0fd22309
2019-03-11 19:38:20 -04:00
John Sully 94319db950 Make storage.h C++ safe
Former-commit-id: cc98d10fc6
2019-03-09 13:42:08 -05:00
John Sully 02b23107cc sizeof is too big
Former-commit-id: a6a022faa2
2019-03-09 13:41:49 -05:00
John Sully 778a48b574 bump version
Former-commit-id: a864ad1c9c
2019-03-07 19:13:59 -05:00
John Sully 38fd0476d5 Merge branch 'unstable' into RELEASE_0_9
Former-commit-id: 0bc586933f
2019-03-07 19:13:33 -05:00
John Sully 25c2050c3a Module threading fixes
Former-commit-id: 2785a8b4d4
2019-03-07 19:13:01 -05:00
John Sully 13de2e2e8b Merge branch 'unstable' into RELEASE_0_9
Former-commit-id: d5d5f6ae06
2019-03-06 16:39:15 -05:00
John Sully 2d19319915 Limit server-threads to cores in the machine
Former-commit-id: be3ba1d53e
2019-03-06 16:39:02 -05:00
John Sully d1c93ee8e1 port server.c to server.cpp
Former-commit-id: 09e6a4fee0
2019-03-06 16:29:30 -05:00
John Sully 698c085f82 Set version
Former-commit-id: efc60dd8c5
2019-03-06 15:25:28 -05:00
John Sully 809cbfd495 Don't send replies to slaves after we've queued them to be closed
Former-commit-id: a52cd974b9
2019-03-06 15:21:05 -05:00
John Sully 9a615a4850 defer free
Former-commit-id: de4217489c
2019-03-05 15:46:19 -05:00
John Sully 459e6adb83 Fix crash with paused clients (accessed when global lock is not acquired)
Former-commit-id: 3c658b5012
2019-03-03 22:24:12 -05:00
John Sully 93ac479418 Crash in Memory Doctor when all clients are slaves
Former-commit-id: f6814aa825
2019-03-03 13:56:47 -05:00
John Sully fbf4e190ce Fix issue #2, check posix return values
Former-commit-id: 01a529cbda
2019-03-02 20:43:03 -05:00
John Sully 5ee7a6b8f1 sds copies uninitialized data wasting time for everyone
Former-commit-id: a1475af1e4
2019-03-02 19:27:52 -05:00
John Sully a8dacb0046 Merge branch 'unstable' of https://github.com/antirez/redis into unstable
We want that awesome multithreaded benchmark


Former-commit-id: 07594d4f95
2019-03-02 18:07:18 -05:00
John Sully 8f452efca3 write fastlock_unlock in ASM... because its faster
Former-commit-id: bad73faf28
2019-03-02 16:47:27 -05:00
John Sully 9fe635fc3c Merge branch 'unstable' of https://github.com/JohnSully/redis2 into unstable
Former-commit-id: 8d3704d93b
2019-03-01 16:40:20 -05:00
John Sully e868502b16 tighten up the spinlock loop, and some other bikeshedding
Former-commit-id: 8bd56fadd6
2019-03-01 13:29:21 -05:00
John Sully fe6fe08ad1 remove unnecessary logs
Former-commit-id: 23f9b584a8
2019-02-28 13:57:58 -05:00
JohnSully e77fdf5ea0 Update README.md
Former-commit-id: 141557963e
2019-02-26 15:16:46 -05:00
John Sully 5c64ba23ca Merge branch 'unstable' of https://github.com/JohnSully/redis2 into unstable
Former-commit-id: ffabf3c5b7
2019-02-26 15:14:50 -05:00
John Sully 8db15e9666 Thread affinity feature (default disabled)
Former-commit-id: 9b1e95809c
2019-02-26 15:14:35 -05:00
JohnSully 85a8158ae8 Link to detailed benchmarking results and methodology.
Former-commit-id: b8776bb001
2019-02-26 15:11:25 -05:00
JohnSully b7dcd0b567 More fine tuning help. Hopefully we can automate this.
Former-commit-id: 84c20e8337
2019-02-26 03:30:37 -05:00
JohnSully f1b8f76167 Update benchmarking notes.
Former-commit-id: bae2409cce
2019-02-26 02:30:03 -05:00
John Sully f474419764 test code shouldn't be commited
Former-commit-id: 8f7c44257b
2019-02-26 00:21:37 -05:00
John Sully 16f5a47c5f Merge branch 'unstable' of https://github.com/JohnSully/redis2 into unstable
Former-commit-id: 2772ce249c
2019-02-26 00:20:11 -05:00
John Sully be82e98799 writes shouldn't be under the global lock
Former-commit-id: bcfd9327cb
2019-02-26 00:19:38 -05:00
John Sully f019a3b69e Option to disable ASM spinlock
Former-commit-id: 01ff36fc28
2019-02-26 00:00:04 -05:00
John Sully 3ca6b6f9a2 Fix build break
Former-commit-id: 6466b09fdc
2019-02-26 01:10:07 +00:00
John Sully f446785084 Rewrite our spinlock in assembly, pretty big performance improvement
Former-commit-id: 40d7a701fe
2019-02-25 18:21:27 -05:00
JohnSully 9b186a5895 Formatting (more)
Former-commit-id: 78b9d303d3
2019-02-23 03:08:24 -05:00
John Sully 34e7dcd9a5 Update copyright to include additional authorship
Former-commit-id: d912013d1b
2019-02-23 02:27:19 -05:00
John Sully a3c3773e68 Merge branch 'unstable' of https://github.com/JohnSully/redis2 into unstable
Former-commit-id: 898e6519d1
2019-02-23 02:25:00 -05:00
John Sully 677391bd77 Merge branch 'Multithread' into unstable
Former-commit-id: 8c074a7d01
2019-02-23 02:24:23 -05:00
JohnSully 8f32bbfa13 More edits
Former-commit-id: 6e69b4a795
2019-02-23 01:48:05 -05:00
JohnSully 5f27820d5d type
Former-commit-id: 1c36b46cb4
2019-02-23 01:33:27 -05:00
JohnSully 88fe444538 Formatting
Former-commit-id: 73abd04b95
2019-02-23 01:32:50 -05:00
JohnSully 0e4d1d8462 Initial rewrite of Readme
Former-commit-id: 29d6845d1f
2019-02-23 01:28:44 -05:00
John Sully 3751d2b737 Fastlock fixes
Former-commit-id: da84b26785
2019-02-10 22:00:19 -05:00
John Sully ffad5f32bc move ae to C++
Former-commit-id: eb9070c833
2019-02-10 20:24:11 -05:00
John Sully e86543a00e Keep pool allocator up to date (even though we aren't enabling it)
Former-commit-id: b7b503d3ce
2019-02-10 19:33:07 -05:00
John Sully 6914dafd6c Prevent so many copies of sdslen getting added
Former-commit-id: 327bbec981
2019-02-10 19:31:46 -05:00
John Sully f1fc8edb77 Performance enhancements!
Former-commit-id: 7175a8e4eb
2019-02-09 13:05:06 -05:00
John Sully 4059814245 Reduce memory usage for in place strings by 8 bytes
Former-commit-id: 9aefc183c6
2019-02-09 13:04:18 -05:00
John Sully 219b0f7441 complete rebranding with tests passing
Former-commit-id: 3e9b867709
2019-02-09 10:11:46 -05:00
John Sully 3f9736a654 Fix bug where we try to load a database with no name
Former-commit-id: e8b5bbf7a1
2019-02-09 07:56:45 -05:00
John Sully 8e0450c32e remove Redis branding
Former-commit-id: 79ef18e885
2019-02-08 17:56:32 -05:00
John Sully 2fc7811a28 Support AWS S3 saving via the s3 cli tools
Former-commit-id: 23a91df9f6
2019-02-06 01:06:48 -05:00
John Sully d2aa6471e5 Merge branch 'unstable' of https://github.com/antirez/redis into unstable
Former-commit-id: d8741595ae
2019-02-06 00:09:39 -05:00
John Sully b660bfb6dd Make main headers C++ safe, and change rdb to use file descriptor instead of FILE pointer
Former-commit-id: 3c9dd6ffc2
2019-02-05 23:36:40 -05:00
John Sully 979eb00220 complete malloc memory class work, and pass tests
Former-commit-id: 42d28c9ff6
2019-02-04 16:56:13 -05:00
John Sully bb9f3eeb13 Properly integrate memkind
Former-commit-id: 82372cbce8
2019-02-01 15:21:00 -05:00
John Sully 833006226d Merge commit '09a263e6076b3fd0fe3b094a2bfad7f93fc997d6' as 'deps/memkind/src'
Former-commit-id: 69b07c5cc2
2019-02-01 14:45:39 -05:00
John Sully d5b4f7e2b8 template config
Former-commit-id: a6d27dc02c
2019-02-01 14:01:35 -05:00
John Sully f243e3cc33 Support configurable file backed scratch
Former-commit-id: bbcaf48cb0
2019-02-01 13:54:59 -05:00
John Sully c469d43d2b crash fixes
Former-commit-id: 85194d99da
2019-01-30 01:15:10 -05:00
John Sully 9b94405241 Custom flash heap
Former-commit-id: 5c86d2faa2
2019-01-29 18:10:46 -05:00
44 changed files with 359 additions and 1041 deletions

No files matched your search

+164
View File
@@ -0,0 +1,164 @@
.standard-pipeline:
rules:
- if: '$COVERAGE'
when: never
- if: '$ENDURANCE'
when: never
- if: '$CI_PIPELINE_SOURCE == "push"'
build:
extends: .standard-pipeline
tags:
- docker
stage: build
script:
- git submodule update --init
- make distclean
- make -j
artifacts:
paths:
- src/
runtest:
extends: .standard-pipeline
dependencies:
- build
tags:
- docker
stage: test
script:
- ./runtest --config server-threads 3
runtest-cluster:
extends: .standard-pipeline
dependencies:
- build
tags:
- docker
stage: test
script:
- ./runtest-cluster
runtest-moduleapi:
extends: .standard-pipeline
dependencies:
- build
tags:
- docker
stage: test
script:
- ./runtest-moduleapi
runtest-sentinel:
extends: .standard-pipeline
dependencies:
- build
tags:
- docker
stage: test
script:
- ./runtest-sentinel
node-redis-test:
extends: .standard-pipeline
dependencies:
- build
rules:
- when: never
tags:
- docker
- ipv6
stage: test
script:
- cp -pf src/keydb-server /usr/local/bin
- cp -pf src/keydb-cli /usr/local/bin
- git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.eqalpha.com/keydb-dev/node-redis.git
- cd node-redis
- npm install
- npm run test
jedis-test:
extends: .standard-pipeline
dependencies:
- build
tags:
- docker
- ipv4
stage: test
script:
- cp -pf src/keydb-server /usr/local/bin
- cp -pf src/keydb-cli /usr/local/bin
- git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.eqalpha.com/keydb-dev/jedis.git
- cd jedis
- make test
redis-rs-test:
extends: .standard-pipeline
dependencies:
- build
tags:
- docker
stage: test
script:
- cp -pf src/keydb-server /usr/local/bin
- cp -pf src/keydb-cli /usr/local/bin
- git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.eqalpha.com/keydb-dev/redis-rs.git
- cd redis-rs
- make test
endurance-test:
rules:
- if: '$ENDURANCE'
tags:
- docker
stage: test
script:
- git submodule update --init
- make distclean
- make -j
- ./runtest --config server-threads 3 --loop --stop
coverage-test:
rules:
- if: '$COVERAGE'
tags:
- docker
stage: test
script:
- git submodule update --init
- make distclean
- make gcov -j
- make install
- ./runtest || true
- pkill keydb-server || true
- pkill stunnel || true
- ./runtest-cluster || true
- pkill keydb-server || true
- pkill stunnel || true
- ./runtest-sentinel || true
- pkill keydb-server || true
- pkill stunnel || true
- ./runtest-moduleapi || true
- pkill keydb-server || true
- pkill stunnel || true
- git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.eqalpha.com/keydb-dev/redis-rs.git
- cd redis-rs
- make test || true
- pkill keydb-server || true
- pkill stunnel || true
- cd ..
- git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.eqalpha.com/keydb-dev/jedis.git
- cd jedis
- make test || true
- pkill keydb-server || true
- pkill stunnel || true
- cd ..
- git clone https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.eqalpha.com/keydb-dev/node-redis.git
- cd node-redis
- npm install
- npm run test || true
- pkill keydb-server || true
- pkill stunnel || true
- cd ..
- geninfo -o KeyDB.info --no-external .
- genhtml --legend -o lcov-html KeyDB.info
+48
View File
@@ -0,0 +1,48 @@
# Doc: https://wiki.sc-corp.net/pages/viewpage.action?pageId=121500284
version: 1
machamp:
keydb-build:
# Optional - build counter is linked to the build def
tag_template: 0.0.%build.counter%
# Optional - value in seconds before a build is terminated, default is 3600 seconds
timeout: 3600
# Optional - update ghe or not, default to true
update_ghe: true
code_coverage: false
# Required
steps:
make-build:
type: cmd
# https://github.sc-corp.net/Snapchat/img/tree/master/keydb/ubuntu-20-04
builder_image: us.gcr.io/snapchat-build-artifacts/prod/snapchat/img/keydb/keydb-ubuntu-20-04@sha256:cf869a3f5d1de1e1d976bb906689c37b7031938eb68661b844a38c532f27248c
command: ./machamp_scripts/build.sh
tls-test:
type: cmd
parent: make-build
# https://github.sc-corp.net/Snapchat/img/tree/master/keydb/ubuntu-20-04
builder_image: us.gcr.io/snapchat-build-artifacts/prod/snapchat/img/keydb/keydb-ubuntu-20-04@sha256:cf869a3f5d1de1e1d976bb906689c37b7031938eb68661b844a38c532f27248c
command: ./runtest --clients $(nproc) --verbose --tls
cluster-test:
type: cmd
parent: make-build
# https://github.sc-corp.net/Snapchat/img/tree/master/keydb/ubuntu-20-04
builder_image: us.gcr.io/snapchat-build-artifacts/prod/snapchat/img/keydb/keydb-ubuntu-20-04@sha256:cf869a3f5d1de1e1d976bb906689c37b7031938eb68661b844a38c532f27248c
command: ./runtest-cluster --tls
sentinel-test:
type: cmd
parent: make-build
# https://github.sc-corp.net/Snapchat/img/tree/master/keydb/ubuntu-20-04
builder_image: us.gcr.io/snapchat-build-artifacts/prod/snapchat/img/keydb/keydb-ubuntu-20-04@sha256:cf869a3f5d1de1e1d976bb906689c37b7031938eb68661b844a38c532f27248c
command: ./runtest-sentinel
module-test:
type: cmd
parent: make-build
# https://github.sc-corp.net/Snapchat/img/tree/master/keydb/ubuntu-20-04
builder_image: us.gcr.io/snapchat-build-artifacts/prod/snapchat/img/keydb/keydb-ubuntu-20-04@sha256:cf869a3f5d1de1e1d976bb906689c37b7031938eb68661b844a38c532f27248c
command: ./runtest-moduleapi
rotation-test:
type: cmd
parent: make-build
# https://github.sc-corp.net/Snapchat/img/tree/master/keydb/ubuntu-20-04
builder_image: us.gcr.io/snapchat-build-artifacts/prod/snapchat/img/keydb/keydb-ubuntu-20-04@sha256:cf869a3f5d1de1e1d976bb906689c37b7031938eb68661b844a38c532f27248c
command: ./runtest-rotation
+16
View File
@@ -0,0 +1,16 @@
# Doc: https://wiki.sc-corp.net/display/TOOL/ci.yaml+User+Guide
version: 1
on:
pull_request:
- workflows:
# All builds that use machamp should use the defined `backend_workflow`
- workflow_type: backend_workflow
# references a build defined in build.yaml
build_name: keydb-build
arch_types: ["amd64", "arm64"]
push:
- branches: [master]
workflows:
- workflow_type: backend_workflow
build_name: keydb-build
arch_types: ["amd64", "arm64"]
+3 -3
View File
@@ -101,11 +101,11 @@ jemalloc: .make-prerequisites
.PHONY: jemalloc
rocksdb: .make-prerequisites
@printf '%b %b\n' $(MAKECOLOR)MAKE$(ENDCOLOR) $(BINCOLOR)$@$(ENDCOLOR)
# @printf '%b %b\n' $(MAKECOLOR)MAKE$(ENDCOLOR) $(BINCOLOR)$@$(ENDCOLOR)
ifeq ($(uname_M),x86_64)
cd rocksdb && CFLAGS=-Wno-error PORTABLE=1 USE_SSE=1 FORCE_SSE42=1 $(MAKE) static_lib
# cd rocksdb && CFLAGS=-Wno-error PORTABLE=1 USE_SSE=1 FORCE_SSE42=1 $(MAKE) static_lib
else
cd rocksdb && PORTABLE=1 $(MAKE) static_lib
# cd rocksdb && PORTABLE=1 $(MAKE) static_lib
endif
.PHONY: rocksdb
+1 -3
View File
@@ -184,9 +184,7 @@ tcp-keepalive 300
#
# tls-client-key-file-pass secret
# Configure a DH parameters file to enable Diffie-Hellman (DH) key exchange,
# required by older versions of OpenSSL (<3.0). Newer versions do not require
# this configuration and recommend against it.
# Configure a DH parameters file to enable Diffie-Hellman (DH) key exchange:
#
# tls-dh-params-file keydb.dh
+2 -2
View File
@@ -23,8 +23,8 @@ pkg_name=keydb-$majorv:$version$distname
# create build tree
cd ../../../
tar -czvf keydb_$version.orig.tar.gz --force-local KeyDB
cd KeyDB/pkg/deb/
tar -czvf keydb_$version.orig.tar.gz --force-local keydb-internal
cd keydb-internal/pkg/deb/
mkdir -p $pkg_name/tmp
if [[ "$codename" == "xenial" ]] || [[ "$codename" == "stretch" ]]; then
cp -r debian_dh9 $pkg_name/tmp/debian
+2 -2
View File
@@ -26,8 +26,8 @@ Build-Depends:
libzstd-dev <!nocheck>
Standards-Version: 4.2.1
Homepage: https://docs.keydb.dev/
Vcs-Git: https://github.com/Snapchat/KeyDB.git
Vcs-Browser: https://github.com/Snapchat/KeyDB
Vcs-Git: https://github.com/EQ-Alpha/KeyDB.git
Vcs-Browser: https://github.com/EQ-Alpha/KeyDB
Package: keydb
Architecture: all
+2 -2
View File
@@ -25,8 +25,8 @@ Build-Depends:
libzstd-dev <!nocheck>
Standards-Version: 4.2.1
Homepage: https://docs.keydb.dev/
Vcs-Git: https://github.com/Snapchat/KeyDB.git
Vcs-Browser: https://github.com/Snapchat/KeyDB
Vcs-Git: https://github.com/EQ-Alpha/KeyDB.git
Vcs-Browser: https://github.com/EQ-Alpha/KeyDB
Package: keydb
Architecture: all
-8
View File
@@ -1,11 +1,3 @@
keydb (6:6.3.1-1distribution_placeholder) codename_placeholder; urgency=medium
* This point release contains fixes to bugs related to expires, active-rep, and rdb saving
* Issues fixed: #419, #422, #428
* PRs: #426, #429, #431, #433
-- Ben Schermel <ben@eqalpha.com> Mon, 23 May 2022 20:00:37 +0000
keydb (6:6.3.0-1distribution_placeholder) codename_placeholder; urgency=medium
* This release open sources KeyDB Enterprise features into the open source project along with PSYNC for active replication
+7 -2
View File
@@ -1,4 +1,4 @@
FROM ubuntu:18.04
FROM ubuntu:20.04
SHELL ["/bin/bash","-c"]
RUN groupadd -r keydb && useradd -r -g keydb keydb
# use gosu for easy step-down from root: https://github.com/tianon/gosu/releases
@@ -77,7 +77,7 @@ RUN \
mkdir /data && chown keydb:keydb /data; \
mkdir /flash && chown keydb:keydb /flash; \
mkdir -p /etc/keydb; \
cp /tmp/KeyDB/keydb.conf /etc/keydb/; \
cp /tmp/keydb-internal/keydb.conf /etc/keydb/; \
sed -i 's/^\(daemonize .*\)$/# \1/' /etc/keydb/keydb.conf; \
sed -i 's/^\(dir .*\)$/# \1\ndir \/data/' /etc/keydb/keydb.conf; \
sed -i 's/^\(logfile .*\)$/# \1/' /etc/keydb/keydb.conf; \
@@ -110,3 +110,8 @@ ENV KEYDB_PRO_DIRECTORY=/usr/local/bin/
ENTRYPOINT ["docker-entrypoint.sh"]
EXPOSE 6379
CMD ["keydb-server","/etc/keydb/keydb.conf"]
-77
View File
@@ -1,77 +0,0 @@
FROM alpine:3.12
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
RUN addgroup -S -g 1000 keydb && adduser -S -G keydb -u 999 keydb
RUN mkdir -p /etc/keydb
ARG BRANCH
RUN set -eux; \
\
apk add --no-cache su-exec; \
apk add --no-cache --virtual .build-deps \
coreutils \
gcc \
linux-headers \
make \
musl-dev \
openssl-dev \
git \
util-linux-dev \
curl-dev \
g++ \
libunwind-dev \
bash \
perl \
git \
; \
cd /tmp && git clone --branch $BRANCH https://github.com/Snapchat/KeyDB.git --recursive; \
cd /tmp/KeyDB; \
# disable protected mode as it relates to docker
grep -E '^ *createBoolConfig[(]"protected-mode",.*, *1 *,.*[)],$' ./src/config.cpp; \
sed -ri 's!^( *createBoolConfig[(]"protected-mode",.*, *)1( *,.*[)],)$!\10\2!' ./src/config.cpp; \
grep -E '^ *createBoolConfig[(]"protected-mode",.*, *0 *,.*[)],$' ./src/config.cpp; \
make -j$(nproc) BUILD_TLS=yes; \
cd src; \
strip keydb-cli keydb-benchmark keydb-check-rdb keydb-check-aof keydb-diagnostic-tool keydb-sentinel keydb-server; \
mv keydb-server keydb-cli keydb-benchmark keydb-check-rdb keydb-check-aof keydb-diagnostic-tool keydb-sentinel /usr/local/bin/; \
runDeps="$( \
scanelf --needed --nobanner --format '%n#p' --recursive /usr/local \
| tr ',' '\n' \
| sort -u \
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
)"; \
apk add --no-network --virtual .keydb-rundeps $runDeps; \
apk del --no-network .build-deps; \
# create working directories and organize files
mkdir /data && chown keydb:keydb /data; \
mkdir /flash && chown keydb:keydb /flash; \
mkdir -p /etc/keydb; \
cp /tmp/KeyDB/keydb.conf /etc/keydb/; \
sed -i 's/^\(daemonize .*\)$/# \1/' /etc/keydb/keydb.conf; \
sed -i 's/^\(dir .*\)$/# \1\ndir \/data/' /etc/keydb/keydb.conf; \
sed -i 's/^\(logfile .*\)$/# \1/' /etc/keydb/keydb.conf; \
sed -i 's/protected-mode yes/protected-mode no/g' /etc/keydb/keydb.conf; \
sed -i 's/^\(bind .*\)$/# \1/' /etc/keydb/keydb.conf; \
ln -s keydb-cli redis-cli; \
cd /etc/keydb; \
ln -s keydb.conf redis.conf; \
rm -rf /tmp/*
# generate entrypoint script
RUN set -eux; \
echo '#!/bin/sh' > /usr/local/bin/docker-entrypoint.sh; \
echo 'set -e' >> /usr/local/bin/docker-entrypoint.sh; \
echo "# first arg is '-f' or '--some-option'" >> /usr/local/bin/docker-entrypoint.sh; \
echo "# or first arg is `something.conf`" >> /usr/local/bin/docker-entrypoint.sh; \
echo 'if [ "${1#-}" != "$1" ] || [ "${1%.conf}" != "$1" ]; then' >> /usr/local/bin/docker-entrypoint.sh; \
echo ' set -- keydb-server "$@"' >> /usr/local/bin/docker-entrypoint.sh; \
echo 'fi' >> /usr/local/bin/docker-entrypoint.sh; \
echo "# allow the container to be started with `--user`" >> /usr/local/bin/docker-entrypoint.sh; \
echo 'if [ "$1" = "keydb-server" -a "$(id -u)" = "0" ]; then' >> /usr/local/bin/docker-entrypoint.sh; \
echo " find . \! -user keydb -exec chown keydb '{}' +" >> /usr/local/bin/docker-entrypoint.sh; \
echo ' exec su-exec keydb "$0" "$@"' >> /usr/local/bin/docker-entrypoint.sh; \
echo 'fi' >> /usr/local/bin/docker-entrypoint.sh; \
echo 'exec "$@"' >> /usr/local/bin/docker-entrypoint.sh; \
chmod +x /usr/local/bin/docker-entrypoint.sh
VOLUME /data
WORKDIR /data
ENTRYPOINT ["docker-entrypoint.sh"]
EXPOSE 6379
CMD ["keydb-server", "/etc/keydb/keydb.conf"]
+4 -14
View File
@@ -20,7 +20,7 @@ release_hdr := $(shell sh -c './mkreleasehdr.sh')
uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not')
uname_M := $(shell sh -c 'uname -m 2>/dev/null || echo not')
OPTIMIZATION?=-O2 -flto
DEPENDENCY_TARGETS=hiredis linenoise lua hdr_histogram
DEPENDENCY_TARGETS=hiredis linenoise lua hdr_histogram rocksdb
NODEPS:=clean distclean
# Default settings
@@ -62,7 +62,6 @@ endif
endif
USEASM?=true
ENABLE_FLASH?=no
ifneq ($(strip $(SANITIZE)),)
CFLAGS+= -fsanitize=$(SANITIZE) -DSANITIZE -fno-omit-frame-pointer
@@ -72,15 +71,6 @@ ifneq ($(strip $(SANITIZE)),)
USEASM=false
endif
ifeq ($(ENABLE_FLASH),yes)
FINAL_LIBS+= -lz -lcrypto -lbz2 -lzstd -llz4 -lsnappy
CXXFLAGS+= -I../deps/rocksdb/include/ -DENABLE_ROCKSDB
STORAGE_OBJ+= storage/rocksdb.o storage/rocksdbfactory.o
FINAL_LIBS+= ../deps/rocksdb/librocksdb.a
DEPENDENCY_TARGETS+= rocksdb
endif
ifeq ($(CHECKED),true)
CXXFLAGS+= -DCHECKED_BUILD
endif
@@ -142,7 +132,7 @@ DEBUG=-g -ggdb
FINAL_CFLAGS=$(STD) $(WARN) $(OPT) $(DEBUG) $(CFLAGS) $(KEYDB_CFLAGS) $(REDIS_CFLAGS)
FINAL_CXXFLAGS=$(CXX_STD) $(WARN) $(OPT) $(DEBUG) $(CXXFLAGS) $(KEYDB_CFLAGS) $(REDIS_CFLAGS)
FINAL_LDFLAGS=$(LDFLAGS) $(KEYDB_LDFLAGS) $(DEBUG)
FINAL_LIBS+=-lm
FINAL_LIBS+=-lm -lz -lcrypto
ifneq ($(uname_S),Darwin)
FINAL_LIBS+=-latomic
@@ -260,7 +250,7 @@ endif
# Include paths to dependencies
FINAL_CFLAGS+= -I../deps/hiredis -I../deps/linenoise -I../deps/lua/src -I../deps/hdr_histogram
FINAL_CXXFLAGS+= -I../deps/hiredis -I../deps/linenoise -I../deps/lua/src -I../deps/hdr_histogram -I../deps/concurrentqueue
FINAL_CXXFLAGS+= -I../deps/hiredis -I../deps/linenoise -I../deps/lua/src -I../deps/hdr_histogram -I../deps/rocksdb/include/ -I../deps/concurrentqueue
# Determine systemd support and/or build preference (defaulting to auto-detection)
BUILD_WITH_SYSTEMD=no
@@ -376,7 +366,7 @@ endif
REDIS_SERVER_NAME=keydb-server$(PROG_SUFFIX)
REDIS_SENTINEL_NAME=keydb-sentinel$(PROG_SUFFIX)
REDIS_SERVER_OBJ=adlist.o quicklist.o ae.o anet.o dict.o server.o sds.o zmalloc.o lzf_c.o lzf_d.o pqsort.o zipmap.o sha1.o ziplist.o release.o networking.o util.o object.o db.o replication.o rdb.o t_string.o t_list.o t_set.o t_zset.o t_hash.o t_nhash.o config.o aof.o pubsub.o multi.o debug.o sort.o intset.o syncio.o cluster.o crc16.o endianconv.o slowlog.o scripting.o bio.o rio.o rand.o memtest.o crcspeed.o crc64.o bitops.o sentinel.o notify.o setproctitle.o blocked.o hyperloglog.o latency.o sparkline.o redis-check-rdb.o redis-check-aof.o geo.o lazyfree.o module.o evict.o expire.o geohash.o geohash_helper.o childinfo.o defrag.o siphash.o rax.o t_stream.o listpack.o localtime.o acl.o storage.o rdb-s3.o fastlock.o new.o tracking.o cron.o connection.o tls.o sha256.o motd_server.o timeout.o setcpuaffinity.o AsyncWorkQueue.o snapshot.o storage/teststorageprovider.o keydbutils.o StorageCache.o monotonic.o cli_common.o mt19937-64.o $(ASM_OBJ) $(STORAGE_OBJ)
REDIS_SERVER_OBJ=adlist.o quicklist.o ae.o anet.o dict.o server.o sds.o zmalloc.o lzf_c.o lzf_d.o pqsort.o zipmap.o sha1.o ziplist.o release.o networking.o util.o object.o db.o replication.o rdb.o t_string.o t_list.o t_set.o t_zset.o t_hash.o t_nhash.o config.o aof.o pubsub.o multi.o debug.o sort.o intset.o syncio.o cluster.o crc16.o endianconv.o slowlog.o scripting.o bio.o rio.o rand.o memtest.o crcspeed.o crc64.o bitops.o sentinel.o notify.o setproctitle.o blocked.o hyperloglog.o latency.o sparkline.o redis-check-rdb.o redis-check-aof.o geo.o lazyfree.o module.o evict.o expire.o geohash.o geohash_helper.o childinfo.o defrag.o siphash.o rax.o t_stream.o listpack.o localtime.o acl.o storage.o rdb-s3.o fastlock.o new.o tracking.o cron.o connection.o tls.o sha256.o motd_server.o timeout.o setcpuaffinity.o AsyncWorkQueue.o snapshot.o storage/teststorageprovider.o keydbutils.o StorageCache.o monotonic.o cli_common.o mt19937-64.o $(ASM_OBJ)
KEYDB_SERVER_OBJ=SnapshotPayloadParseState.o
REDIS_CLI_NAME=keydb-cli$(PROG_SUFFIX)
REDIS_CLI_OBJ=anet.o adlist.o dict.o redis-cli.o redis-cli-cpphelper.o zmalloc.o release.o anet.o ae.o crcspeed.o crc64.o siphash.o crc16.o storage-lite.o fastlock.o motd_client.o monotonic.o cli_common.o mt19937-64.o $(ASM_OBJ)
-1
View File
@@ -203,7 +203,6 @@ void StorageCache::beginWriteBatch() {
}
void StorageCache::emergencyFreeCache() {
std::unique_lock<fastlock> ul(m_lock);
dict *d = m_pdict;
m_pdict = nullptr;
if (d != nullptr) {
+2 -4
View File
@@ -771,7 +771,7 @@ unsigned long getClusterConnectionsCount(void) {
/* We decrement the number of nodes by one, since there is the
* "myself" node too in the list. Each node uses two file descriptors,
* one incoming and one outgoing, thus the multiplication by 2. */
return g_pserver->cluster_enabled && g_pserver->cluster != nullptr ?
return g_pserver->cluster_enabled ?
((dictSize(g_pserver->cluster->nodes)-1)*2) : 0;
}
@@ -1525,9 +1525,7 @@ void clusterProcessGossipSection(clusterMsg *hdr, clusterLink *link) {
* it's greater than our view but is not in the future
* (with 500 milliseconds tolerance) from the POV of our
* clock. */
mstime_t mstime;
__atomic_load(&g_pserver->mstime, &mstime, __ATOMIC_RELAXED);
if (pongtime <= (mstime+500) &&
if (pongtime <= (g_pserver->mstime+500) &&
pongtime > node->pong_received)
{
node->pong_received = pongtime;
+6 -14
View File
@@ -355,17 +355,16 @@ bool initializeStorageProvider(const char **err)
return true;
if (!strcasecmp(g_sdsProvider, "flash") && g_sdsArgs != nullptr)
{
#ifdef ENABLE_ROCKSDB
// Temporary: Disable FLASH
serverLog(LL_WARNING, "FLASH Is Not yet Supported");
_Exit(EXIT_FAILURE);
// Create The Storage Factory (if necessary)
serverLog(LL_NOTICE, "Initializing FLASH storage provider (this may take a long time)");
adjustOpenFilesLimit();
g_pserver->m_pstorageFactory = CreateRocksDBStorageFactory(g_sdsArgs, cserver.dbnum, cserver.storage_conf, cserver.storage_conf ? strlen(cserver.storage_conf) : 0);
#else
serverLog(LL_WARNING, "To use the flash storage provider please compile KeyDB with ENABLE_FLASH=yes");
serverLog(LL_WARNING, "Exiting due to the use of an unsupported storage provider");
exit(EXIT_FAILURE);
#endif
}
}
else if (!strcasecmp(g_sdsProvider, "test") && g_sdsArgs == nullptr)
{
g_pserver->m_pstorageFactory = new (MALLOC_LOCAL) TestStorageFactory();
@@ -767,12 +766,6 @@ void loadServerConfigFromString(char *config) {
g_sdsProvider = sdsdup(argv[1]);
if (argc > 2)
g_sdsArgs = sdsdup(argv[2]);
} else if (!strcasecmp(argv[0],"is-flash-enabled") && argc == 1) {
#ifdef ENABLE_ROCKSDB
exit(EXIT_SUCCESS);
#else
exit(EXIT_FAILURE);
#endif
} else {
err = "Bad directive or wrong number of arguments"; goto loaderr;
}
@@ -2909,7 +2902,6 @@ standardConfig configs[] = {
createBoolConfig("multi-master-no-forward", NULL, MODIFIABLE_CONFIG, cserver.multimaster_no_forward, 0, validateMultiMasterNoForward, NULL),
createBoolConfig("allow-write-during-load", NULL, MODIFIABLE_CONFIG, g_pserver->fWriteDuringActiveLoad, 0, NULL, NULL),
createBoolConfig("force-backlog-disk-reserve", NULL, MODIFIABLE_CONFIG, cserver.force_backlog_disk, 0, NULL, NULL),
createBoolConfig("soft-shutdown", NULL, MODIFIABLE_CONFIG, g_pserver->config_soft_shutdown, 0, NULL, NULL),
#ifdef USE_OPENSSL
createIntConfig("tls-port", NULL, MODIFIABLE_CONFIG, 0, 65535, g_pserver->tls_port, 0, INTEGER_CONFIG, NULL, updateTLSPort), /* TCP port. */
+7 -19
View File
@@ -1462,11 +1462,6 @@ void shutdownCommand(client *c) {
flags |= SHUTDOWN_NOSAVE;
} else if (!strcasecmp(szFromObj(c->argv[1]),"save")) {
flags |= SHUTDOWN_SAVE;
} else if (!strcasecmp(szFromObj(c->argv[1]), "soft")) {
g_pserver->soft_shutdown = true;
serverLog(LL_WARNING, "Soft Shutdown Initiated");
addReply(c, shared.ok);
return;
} else {
addReplyErrorObject(c,shared.syntaxerr);
return;
@@ -1573,12 +1568,6 @@ void moveCommand(client *c) {
return;
}
/* Return zero if the key already exists in the target DB */
if (lookupKeyWrite(dst,c->argv[1]) != NULL) {
addReply(c,shared.czero);
return;
}
std::unique_ptr<expireEntry> spexpire;
{ // scope pexpireOld
std::unique_lock<fastlock> ul(g_expireLock);
@@ -1593,6 +1582,12 @@ void moveCommand(client *c) {
dbDelete(src,c->argv[1]);
g_pserver->dirty++;
/* Return zero if the key already exists in the target DB */
if (lookupKeyWrite(dst,c->argv[1]) != NULL) {
addReply(c,shared.czero);
decrRefCount(o);
return;
}
dbAdd(dst,c->argv[1],o);
if (spexpire != nullptr) setExpire(c,dst,c->argv[1],std::move(*spexpire));
@@ -2644,10 +2639,7 @@ bool redisDbPersistentData::insert(char *key, robj *o, bool fAssumeNew, dict_ite
ensure(key);
dictEntry *de;
int res = dictAdd(m_pdict, key, o, &de);
if (!FImplies(fAssumeNew, res == DICT_OK)) {
serverLog(LL_WARNING,
"Assumed new key %s existed in DB.", key);
}
serverAssert(FImplies(fAssumeNew, res == DICT_OK));
if (res == DICT_OK)
{
#ifdef CHECKED_BUILD
@@ -3300,10 +3292,6 @@ bool redisDbPersistentData::prefetchKeysAsync(client *c, parsed_command &command
auto cmd = lookupCommand(szFromObj(command.argv[0]));
if (cmd == nullptr)
return false; // Bad command? It's not for us to judge, just bail
if (command.argc < std::abs(cmd->arity))
return false; // Invalid number of args
int numkeys = getKeysFromCommand(cmd, command.argv, command.argc, &result);
for (int ikey = 0; ikey < numkeys; ++ikey)
{
+3 -3
View File
@@ -552,7 +552,7 @@ static int evictionTimeProc(
UNUSED(clientData);
serverAssert(GlobalLocksAcquired());
if (performEvictions(false) == EVICT_RUNNING) return 0; /* keep evicting */
if (performEvictions((bool)clientData) == EVICT_RUNNING) return 0; /* keep evicting */
/* For EVICT_OK - things are good, no need to keep evicting.
* For EVICT_FAIL - there is nothing left to evict. */
@@ -832,12 +832,12 @@ int performEvictions(bool fPreSnapshot) {
/* After some time, exit the loop early - even if memory limit
* hasn't been reached. If we suddenly need to free a lot of
* memory, don't want to spend too much time here. */
if (g_pserver->m_pstorageFactory == nullptr && elapsedUs(evictionTimer) > eviction_time_limit_us) {
if (elapsedUs(evictionTimer) > eviction_time_limit_us) {
// We still need to free memory - start eviction timer proc
if (!isEvictionProcRunning && serverTL->el != nullptr) {
isEvictionProcRunning = 1;
aeCreateTimeEvent(serverTL->el, 0,
evictionTimeProc, NULL, NULL);
evictionTimeProc, (void*)fPreSnapshot, NULL);
}
break;
}
+4 -14
View File
@@ -16,17 +16,7 @@ class GarbageCollector
struct EpochHolder
{
uint64_t tstamp;
std::unique_ptr<std::vector<std::unique_ptr<T>>> m_spvecObjs;
EpochHolder() {
m_spvecObjs = std::make_unique<std::vector<std::unique_ptr<T>>>();
}
// Support move operators
EpochHolder(EpochHolder &&other) = default;
EpochHolder &operator=(EpochHolder &&) = default;
std::vector<std::unique_ptr<T>> m_vecObjs;
bool operator<(uint64_t tstamp) const
{
@@ -118,12 +108,12 @@ public:
{
EpochHolder e;
e.tstamp = m_epochNext+1;
e.m_spvecObjs->push_back(std::move(sp));
e.m_vecObjs.push_back(std::move(sp));
m_listepochs.emplace_back(std::move(e));
}
else
{
itr->m_spvecObjs->push_back(std::move(sp));
itr->m_vecObjs.push_back(std::move(sp));
}
}
@@ -133,4 +123,4 @@ private:
std::list<EpochHolder> m_listepochs;
std::unordered_set<uint64_t> m_setepochOutstanding;
uint64_t m_epochNext = 0;
};
};
+1 -1
View File
@@ -1071,7 +1071,7 @@ struct commandHelp {
1,
"2.2.0" },
{ "SHUTDOWN",
"[NOSAVE|SAVE|SOFT]",
"[NOSAVE|SAVE]",
"Synchronously save the dataset to disk and then shut down the server",
9,
"1.0.0" },
+2 -16
View File
@@ -1256,20 +1256,6 @@ static void acceptCommonHandler(connection *conn, int flags, char *ip, int iel)
return;
}
/* Prevent new connections if we're in a soft shutdown situation */
if (g_pserver->soft_shutdown) {
const char *err = "-SHUTDOWN";
/* That's a best effort error message, don't check write errors.
* Note that for TLS connections, no handshake was done yet so nothing
* is written and the connection will just drop. */
if (connWrite(conn,err,strlen(err)) == -1) {
/* Nothing to do, Just to avoid the warning... */
}
g_pserver->stat_rejected_conn++;
connClose(conn);
return;
}
/* Limit the number of connections we take at the same time.
*
* Admission control will happen before a client is created and connAccept()
@@ -1999,9 +1985,9 @@ void ProcessPendingAsyncWrites()
* writes may have been signalled without having been copied to the replyAsync buffer,
* thus causing the buffer to be NULL */
if (c->replyAsync != nullptr){
size_t size = c->replyAsync->used;
int size = c->replyAsync->used;
if (listLength(c->reply) == 0 && size <= static_cast<size_t>(PROTO_REPLY_CHUNK_BYTES - c->bufpos)) {
if (listLength(c->reply) == 0 && size <= (PROTO_REPLY_CHUNK_BYTES - c->bufpos)) {
memcpy(c->buf + c->bufpos, c->replyAsync->buf(), size);
c->bufpos += size;
} else {
+3 -2
View File
@@ -1091,7 +1091,7 @@ struct redisMemOverhead *getMemoryOverheadData(void) {
mem_total += g_pserver->initial_memory_usage;
mem = 0;
if (g_pserver->repl_backlog && g_pserver->repl_backlog != g_pserver->repl_backlog_disk)
if (g_pserver->repl_backlog)
mem += zmalloc_size(g_pserver->repl_backlog);
mh->repl_backlog = mem;
mem_total += mem;
@@ -1142,7 +1142,8 @@ struct redisMemOverhead *getMemoryOverheadData(void) {
mem_total+=mem;
std::unique_lock<fastlock> ul(g_expireLock);
mem = db->setexpire()->estimated_bytes_used();
mem = db->setexpire()->bytes_used();
mh->db[mh->num_dbs].overhead_ht_expires = mem;
mem_total+=mem;
+12 -9
View File
@@ -3115,12 +3115,13 @@ int rdbLoadRio(rio *rdb, int rdbflags, rdbSaveInfo *rsi) {
std::unique_ptr<rdbInsertJob> spjob;
// If we're tracking changes we need to reset this
std::vector<bool> fTracking(cserver.dbnum);
// We don't want to track here because processChangesAsync is outside the normal scope handling
for (int idb = 0; idb < cserver.dbnum; ++idb) {
if ((fTracking[idb] = g_pserver->db[idb]->FTrackingChanges()))
bool fTracking = g_pserver->db[0]->FTrackingChanges();
if (fTracking) {
// We don't want to track here because processChangesAsync is outside the normal scope handling
for (int idb = 0; idb < cserver.dbnum; ++idb) {
if (g_pserver->db[idb]->processChanges(false))
g_pserver->db[idb]->commitChanges();
}
}
rdb->update_cksum = rdbLoadProgressCallback;
@@ -3488,10 +3489,11 @@ int rdbLoadRio(rio *rdb, int rdbflags, rdbSaveInfo *rsi) {
}
wqueue.endWork();
// Reset track changes
for (int idb = 0; idb < cserver.dbnum; ++idb) {
if (fTracking[idb])
if (fTracking) {
// Reset track changes
for (int idb = 0; idb < cserver.dbnum; ++idb) {
g_pserver->db[idb]->trackChanges(false);
}
}
if (empty_keys_skipped) {
serverLog(LL_WARNING,
@@ -3509,10 +3511,11 @@ int rdbLoadRio(rio *rdb, int rdbflags, rdbSaveInfo *rsi) {
* the RDB file from a socket during initial SYNC (diskless replica mode),
* we'll report the error to the caller, so that we can retry. */
eoferr:
if (fTracking) {
// Reset track changes
for (int idb = 0; idb < cserver.dbnum; ++idb) {
if (fTracking[idb])
for (int idb = 0; idb < cserver.dbnum; ++idb) {
g_pserver->db[idb]->trackChanges(false);
}
}
wqueue.endWork();
+2 -2
View File
@@ -5485,8 +5485,8 @@ static int clusterManagerCommandRebalance(int argc, char **argv) {
listAddNodeTail(lsrc, src);
table = clusterManagerComputeReshardTable(lsrc, numslots);
listRelease(lsrc);
int table_len = 0;
if (!table || (table_len = (int) listLength(table)) != numslots) {
int table_len = (int) listLength(table);
if (!table || table_len != numslots) {
clusterManagerLogErr("*** Assertion failed: Reshard table "
"!= number of slots");
result = 0;
+3 -2
View File
@@ -98,6 +98,7 @@ extern "C" {
#define CC_QUIET (1<<1) /* Don't log connecting errors. */
struct clusterManagerLink;
typedef struct clusterManagerLink clusterManagerLink;
/* Dict Helpers */
@@ -248,12 +249,12 @@ typedef struct clusterManagerReshardTableItem {
/* Info about a cluster internal link. */
struct clusterManagerLink {
typedef struct clusterManagerLink {
sds node_name;
sds node_addr;
int connected;
int handshaking;
};
} clusterManagerLink;
typedef struct typeinfo {
char *name;
+8 -32
View File
@@ -190,7 +190,7 @@ int bg_unlink(const char *filename) {
bool createDiskBacklog() {
// Lets create some disk backed pages and add them here
std::string path = "./repl-backlog-temp" + std::to_string(gettid());
#if (defined __APPLE__ || defined __FreeBSD__)
#ifdef __APPLE__
int fd = open(path.c_str(), O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
#else
int fd = open(path.c_str(), O_CREAT | O_RDWR | O_LARGEFILE, S_IRUSR | S_IWUSR);
@@ -1132,14 +1132,6 @@ public:
replica->repl_put_online_on_ack = 1;
}
}
void abort() {
for (auto replica : replicas) {
// Close the connection to force a resync
freeClientAsync(replica);
}
replicas.clear();
}
};
int rdbSaveSnapshotForReplication(struct rdbSaveInfo *rsi) {
@@ -1235,11 +1227,7 @@ int rdbSaveSnapshotForReplication(struct rdbSaveInfo *rsi) {
retval = C_ERR;
break;
}
if (count != snapshotDeclaredCount) {
serverLog(LL_WARNING, "Replication BUG: Count of keys sent does not match actual count. Aborting full sync.");
replBuf.abort();
break;
}
serverAssert(count == snapshotDeclaredCount);
}
replBuf.end();
@@ -2989,11 +2977,10 @@ error:
}
void readSyncBulkPayload(connection *conn) {
serverAssert(GlobalLocksAcquired());
rdbSaveInfo rsi;
redisMaster *mi = (redisMaster*)connGetPrivateData(conn);
static int usemark = 0;
if (mi == nullptr || conn != mi->repl_transfer_s) {
if (mi == nullptr) {
// We're about to be free'd so bail out
return;
}
@@ -3006,9 +2993,6 @@ void readSyncBulkPayload(connection *conn) {
return;
}
if (conn != mi->repl_transfer_s)
return;
/* Final setup of the connected slave <- master link */
replicationCreateMasterClient(mi,mi->repl_transfer_s,rsi.repl_stream_db);
if (mi->isRocksdbSnapshotRepl) {
@@ -3817,14 +3801,12 @@ int connectWithMaster(redisMaster *mi) {
* Never call this function directly, use cancelReplicationHandshake() instead.
*/
void undoConnectWithMaster(redisMaster *mi) {
serverAssert(GlobalLocksAcquired());
auto conn = mi->repl_transfer_s;
connSetPrivateData(conn, nullptr);
mi->repl_transfer_s = NULL;
int result = aePostFunction(g_pserver->rgthreadvar[mi->ielReplTransfer].el, [conn]{
aePostFunction(g_pserver->rgthreadvar[mi->ielReplTransfer].el, [conn]{
connClose(conn);
}, false);
serverAssert(result == AE_OK);
});
mi->repl_transfer_s = NULL;
}
/* Abort the async download of the bulk dataset while SYNC-ing with master.
@@ -3979,10 +3961,6 @@ void freeMasterInfo(redisMaster *mi)
{
sdsfree(mi->masterauth);
zfree(mi->masteruser);
if (g_pserver->rdb_filename != nullptr && g_pserver->rdb_filename == mi->repl_transfer_tmpfile) {
unlink(g_pserver->rdb_filename);
g_pserver->rdb_filename = nullptr;
}
if (mi->repl_transfer_tmpfile)
zfree(mi->repl_transfer_tmpfile);
delete mi->staleKeyMap;
@@ -5620,6 +5598,7 @@ void flushReplBacklogToClients()
// Ensure no overflow if we get here
serverAssert(g_pserver->master_repl_offset - g_pserver->repl_batch_offStart <= g_pserver->repl_backlog_size);
serverAssert(g_pserver->repl_batch_idxStart != g_pserver->repl_backlog_idx);
// Repl backlog writes must become visible to all threads at this point
std::atomic_thread_fence(std::memory_order_release);
@@ -5651,10 +5630,7 @@ void flushReplBacklogToClients()
replica->repl_end_off = g_pserver->master_repl_offset;
/* Only if the there isn't already a pending write do we prepare the client to write */
if (replica->repl_curr_off == g_pserver->master_repl_offset) {
serverLog(LL_DEBUG, "Pending write when it's on repl_offset=%lld", g_pserver->master_repl_offset);
continue;
}
serverAssert(replica->repl_curr_off != g_pserver->master_repl_offset);
prepareClientToWrite(replica);
}
if (fAsyncWrite)
+7 -5
View File
@@ -240,12 +240,14 @@ public:
bool empty() const noexcept { return celem == 0; }
size_t size() const noexcept { return celem; }
size_t estimated_bytes_used() const
size_t bytes_used() const
{
// This estimate does't include all the overhead of the internal vectors
size_t cb = sizeof(this)
+ (m_data.capacity() * sizeof(m_data[0]))
+ sizeof(T) * size();
size_t cb = sizeof(this) + (m_data.capacity()-m_data.size())*sizeof(T);
for (auto &vec : m_data)
{
if (vec != nullptr)
cb += vec->bytes_used();
}
return cb;
}
+12 -39
View File
@@ -779,7 +779,7 @@ struct redisCommand redisCommandTable[] = {
0,NULL,0,0,0,0,0,0},
{"shutdown",shutdownCommand,-1,
"admin no-script ok-loading ok-stale noprop",
"admin no-script ok-loading ok-stale",
0,NULL,0,0,0,0,0,0},
{"lastsave",lastsaveCommand,1,
@@ -2648,26 +2648,6 @@ int serverCron(struct aeEventLoop *eventLoop, long long id, void *clientData) {
}
}
if (g_pserver->soft_shutdown) {
/* Loop through our clients list and see if there are any active clients */
listIter li;
listNode *ln;
listRewind(g_pserver->clients, &li);
bool fActiveClient = false;
while ((ln = listNext(&li)) && !fActiveClient) {
client *c = (client*)listNodeValue(ln);
if (c->flags & CLIENT_IGNORE_SOFT_SHUTDOWN)
continue;
fActiveClient = true;
}
if (!fActiveClient) {
if (prepareForShutdown(SHUTDOWN_NOFLAGS) == C_OK) {
serverLog(LL_WARNING, "All active clients have disconnected while a soft shutdown is pending. Shutting down now.");
throw ShutdownException();
}
}
}
g_pserver->cronloops++;
return 1000/g_pserver->hz;
}
@@ -2795,8 +2775,6 @@ void beforeSleep(struct aeEventLoop *eventLoop) {
AeLocker locker;
int iel = ielFromEventLoop(eventLoop);
tlsProcessPendingData();
locker.arm();
/* end any snapshots created by fast async commands */
@@ -2827,6 +2805,7 @@ void beforeSleep(struct aeEventLoop *eventLoop) {
uint64_t processed = 0;
int aof_state = g_pserver->aof_state;
locker.disarm();
processed += tlsProcessPendingData();
processed += handleClientsWithPendingWrites(iel, aof_state);
locker.arm();
processed += freeClientsInAsyncFreeQueue(iel);
@@ -2837,6 +2816,13 @@ void beforeSleep(struct aeEventLoop *eventLoop) {
/* Handle precise timeouts of blocked clients. */
handleBlockedClientsTimeout();
/* Handle TLS pending data. (must be done before flushAppendOnlyFile) */
if (tlsHasPendingData()) {
locker.disarm();
tlsProcessPendingData();
locker.arm();
}
/* If tls still has pending unread data don't sleep at all. */
aeSetDontWait(eventLoop, tlsHasPendingData());
@@ -2902,7 +2888,7 @@ void beforeSleep(struct aeEventLoop *eventLoop) {
static thread_local bool fFirstRun = true;
// note: we also copy the DB pointer in case a DB swap is done while the lock is released
std::vector<redisDb*> vecdb; // note we cache the database pointer in case a dbswap is done while the lock is released
if (cserver.storage_memory_model == STORAGE_WRITETHROUGH && !g_pserver->loading)
if (cserver.storage_memory_model == STORAGE_WRITETHROUGH && g_pserver->m_pstorageFactory != nullptr && !g_pserver->loading)
{
if (!fFirstRun) {
mstime_t storage_process_latency;
@@ -3015,11 +3001,8 @@ void afterSleep(struct aeEventLoop *eventLoop) {
serverAssert(serverTL->gcEpoch.isReset());
serverTL->gcEpoch = g_pserver->garbageCollector.startEpoch();
aeAcquireLock();
for (int idb = 0; idb < cserver.dbnum; ++idb)
g_pserver->db[idb]->trackChanges(false);
aeReleaseLock();
serverTL->disable_async_commands = false;
}
@@ -5070,8 +5053,6 @@ bool client::asyncCommand(std::function<void(const redisDbPersistentDataSnapshot
std::function<void(const redisDbPersistentDataSnapshot *)> &&postFn)
{
serverAssert(FCorrectThread(this));
if (serverTL->in_eval)
return false; // we cannot block clients in EVAL
const redisDbPersistentDataSnapshot *snapshot = nullptr;
if (!(this->flags & (CLIENT_MULTI | CLIENT_BLOCKED)))
snapshot = this->db->createSnapshot(this->mvccCheckpoint, false /* fOptional */);
@@ -5316,11 +5297,6 @@ void pingCommand(client *c) {
return;
}
if (g_pserver->soft_shutdown && !(c->flags & CLIENT_IGNORE_SOFT_SHUTDOWN)) {
addReplyError(c, "-SHUTDOWN PENDING");
return;
}
if (c->flags & CLIENT_PUBSUB && c->resp == 2) {
addReply(c,shared.mbulkhdr[2]);
addReplyBulkCBuffer(c,"pong",4);
@@ -6715,7 +6691,7 @@ static void sigShutdownHandler(int sig) {
* If we receive the signal the second time, we interpret this as
* the user really wanting to quit ASAP without waiting to persist
* on disk. */
if ((g_pserver->shutdown_asap || g_pserver->soft_shutdown) && sig == SIGINT) {
if (g_pserver->shutdown_asap && sig == SIGINT) {
serverLogFromHandler(LL_WARNING, "You insist... exiting now.");
rdbRemoveTempFile(g_pserver->rdbThreadVars.tmpfileNum, 1);
g_pserver->garbageCollector.shutdown();
@@ -6726,10 +6702,7 @@ static void sigShutdownHandler(int sig) {
}
serverLogFromHandler(LL_WARNING, msg);
if (g_pserver->config_soft_shutdown)
g_pserver->soft_shutdown = true;
else
g_pserver->shutdown_asap = 1;
g_pserver->shutdown_asap = 1;
}
void setupSignalHandlers(void) {
-4
View File
@@ -508,7 +508,6 @@ extern int configOOMScoreAdjValuesDefaults[CONFIG_OOM_COUNT];
#define CLIENT_PREVENT_AOF_PROP (1<<19) /* Don't propagate to AOF. */
#define CLIENT_PREVENT_REPL_PROP (1<<20) /* Don't propagate to slaves. */
#define CLIENT_PREVENT_PROP (CLIENT_PREVENT_AOF_PROP|CLIENT_PREVENT_REPL_PROP)
#define CLIENT_IGNORE_SOFT_SHUTDOWN (CLIENT_MASTER | CLIENT_SLAVE | CLIENT_BLOCKED | CLIENT_MONITOR)
#define CLIENT_PENDING_WRITE (1<<21) /* Client has output to send but a write
handler is yet not installed. */
#define CLIENT_REPLY_OFF (1<<22) /* Don't send replies to client. */
@@ -2722,9 +2721,6 @@ struct redisServer {
long long repl_batch_offStart = -1;
long long repl_batch_idxStart = -1;
int config_soft_shutdown = false;
bool soft_shutdown = false;
/* Lock Contention Ring Buffer */
static const size_t s_lockContentionSamples = 64;
uint16_t rglockSamples[s_lockContentionSamples];
-234
View File
@@ -1,234 +0,0 @@
#include "rocksdb.h"
#include <string>
#include <sstream>
#include <mutex>
#include <unistd.h>
#include "rocksdbfactor_internal.h"
static const char keyprefix[] = INTERNAL_KEY_PREFIX;
rocksdb::Options DefaultRocksDBOptions();
extern "C" pid_t gettid();
bool FInternalKey(const char *key, size_t cch)
{
if (cch >= sizeof(INTERNAL_KEY_PREFIX))
{
if (memcmp(key, keyprefix, sizeof(INTERNAL_KEY_PREFIX)-1) == 0)
return true;
}
return false;
}
RocksDBStorageProvider::RocksDBStorageProvider(RocksDBStorageFactory *pfactory, std::shared_ptr<rocksdb::DB> &spdb, std::shared_ptr<rocksdb::ColumnFamilyHandle> &spcolfam, const rocksdb::Snapshot *psnapshot, size_t count)
: m_pfactory(pfactory), m_spdb(spdb), m_psnapshot(psnapshot), m_spcolfamily(spcolfam), m_count(count)
{
m_readOptionsTemplate = rocksdb::ReadOptions();
m_readOptionsTemplate.verify_checksums = false;
m_readOptionsTemplate.snapshot = m_psnapshot;
}
void RocksDBStorageProvider::insert(const char *key, size_t cchKey, void *data, size_t cb, bool fOverwrite)
{
rocksdb::Status status;
std::unique_lock<fastlock> l(m_lock);
if (m_spbatch != nullptr)
status = m_spbatch->Put(m_spcolfamily.get(), rocksdb::Slice(key, cchKey), rocksdb::Slice((const char*)data, cb));
else
status = m_spdb->Put(WriteOptions(), m_spcolfamily.get(), rocksdb::Slice(key, cchKey), rocksdb::Slice((const char*)data, cb));
if (!status.ok())
throw status.ToString();
if (!fOverwrite)
++m_count;
}
void RocksDBStorageProvider::bulkInsert(char **rgkeys, size_t *rgcbkeys, char **rgvals, size_t *rgcbvals, size_t celem)
{
if (celem >= 16384) {
rocksdb::Options options = DefaultRocksDBOptions();
rocksdb::SstFileWriter sst_file_writer(rocksdb::EnvOptions(), options, options.comparator);
std::string file_path = m_pfactory->getTempFolder() + "/tmpIngest.";
file_path += std::to_string(gettid());
file_path += ".sst";
rocksdb::Status s = sst_file_writer.Open(file_path);
if (!s.ok())
goto LFallback;
// Insert rows into the SST file, note that inserted keys must be
// strictly increasing (based on options.comparator)
for (size_t ielem = 0; ielem < celem; ++ielem) {
s = sst_file_writer.Put(rocksdb::Slice(rgkeys[ielem], rgcbkeys[ielem]), rocksdb::Slice(rgvals[ielem], rgcbvals[ielem]));
if (!s.ok()) {
unlink(file_path.c_str());
goto LFallback;
}
}
s = sst_file_writer.Finish();
if (!s.ok()) {
unlink(file_path.c_str());
goto LFallback;
}
auto ingestOptions = rocksdb::IngestExternalFileOptions();
ingestOptions.move_files = true;
ingestOptions.write_global_seqno = false;
ingestOptions.failed_move_fall_back_to_copy = false;
// Ingest the external SST file into the DB
s = m_spdb->IngestExternalFile(m_spcolfamily.get(), {file_path}, ingestOptions);
if (!s.ok()) {
unlink(file_path.c_str());
goto LFallback;
}
} else {
LFallback:
auto spbatch = std::make_unique<rocksdb::WriteBatch>();
for (size_t ielem = 0; ielem < celem; ++ielem) {
spbatch->Put(m_spcolfamily.get(), rocksdb::Slice(rgkeys[ielem], rgcbkeys[ielem]), rocksdb::Slice(rgvals[ielem], rgcbvals[ielem]));
}
m_spdb->Write(WriteOptions(), spbatch.get());
}
std::unique_lock<fastlock> l(m_lock);
m_count += celem;
}
bool RocksDBStorageProvider::erase(const char *key, size_t cchKey)
{
rocksdb::Status status;
std::unique_lock<fastlock> l(m_lock);
if (m_spbatch != nullptr)
{
status = m_spbatch->Delete(m_spcolfamily.get(), rocksdb::Slice(key, cchKey));
}
else
{
if (!FKeyExists(key, cchKey))
return false;
status = m_spdb->Delete(WriteOptions(), m_spcolfamily.get(), rocksdb::Slice(key, cchKey));
}
if (status.ok())
--m_count;
return status.ok();
}
void RocksDBStorageProvider::retrieve(const char *key, size_t cchKey, callbackSingle fn) const
{
rocksdb::PinnableSlice slice;
auto status = m_spdb->Get(ReadOptions(), m_spcolfamily.get(), rocksdb::Slice(key, cchKey), &slice);
if (status.ok())
fn(key, cchKey, slice.data(), slice.size());
}
size_t RocksDBStorageProvider::clear()
{
size_t celem = count();
auto status = m_spdb->DropColumnFamily(m_spcolfamily.get());
auto strName = m_spcolfamily->GetName();
rocksdb::ColumnFamilyHandle *handle = nullptr;
rocksdb::ColumnFamilyOptions cf_options(m_pfactory->RocksDbOptions());
m_spdb->CreateColumnFamily(cf_options, strName, &handle);
m_spcolfamily = std::shared_ptr<rocksdb::ColumnFamilyHandle>(handle);
if (!status.ok())
throw status.ToString();
m_count = 0;
return celem;
}
size_t RocksDBStorageProvider::count() const
{
std::unique_lock<fastlock> l(m_lock);
return m_count;
}
bool RocksDBStorageProvider::enumerate(callback fn) const
{
std::unique_ptr<rocksdb::Iterator> it = std::unique_ptr<rocksdb::Iterator>(m_spdb->NewIterator(ReadOptions(), m_spcolfamily.get()));
size_t count = 0;
for (it->SeekToFirst(); it->Valid(); it->Next()) {
if (FInternalKey(it->key().data(), it->key().size()))
continue;
++count;
bool fContinue = fn(it->key().data(), it->key().size(), it->value().data(), it->value().size());
if (!fContinue)
break;
}
if (!it->Valid() && count != m_count)
{
if (const_cast<RocksDBStorageProvider*>(this)->m_count != count)
printf("WARNING: rocksdb count mismatch");
const_cast<RocksDBStorageProvider*>(this)->m_count = count;
}
assert(it->status().ok()); // Check for any errors found during the scan
return !it->Valid();
}
const IStorage *RocksDBStorageProvider::clone() const
{
std::unique_lock<fastlock> l(m_lock);
const rocksdb::Snapshot *psnapshot = const_cast<RocksDBStorageProvider*>(this)->m_spdb->GetSnapshot();
return new RocksDBStorageProvider(m_pfactory, const_cast<RocksDBStorageProvider*>(this)->m_spdb, const_cast<RocksDBStorageProvider*>(this)->m_spcolfamily, psnapshot, m_count);
}
RocksDBStorageProvider::~RocksDBStorageProvider()
{
if (m_spbatch != nullptr)
endWriteBatch();
if (m_spdb != nullptr && m_psnapshot == nullptr)
{
insert(count_key, sizeof(count_key), &m_count, sizeof(m_count), false);
flush();
}
if (m_spdb != nullptr)
{
if (m_psnapshot != nullptr)
m_spdb->ReleaseSnapshot(m_psnapshot);
}
}
rocksdb::WriteOptions RocksDBStorageProvider::WriteOptions() const
{
auto opt = rocksdb::WriteOptions();
return opt;
}
void RocksDBStorageProvider::beginWriteBatch()
{
m_lock.lock();
m_spbatch = std::make_unique<rocksdb::WriteBatch>();
}
void RocksDBStorageProvider::endWriteBatch()
{
m_spdb->Write(WriteOptions(), m_spbatch.get());
m_spbatch = nullptr;
m_lock.unlock();
}
void RocksDBStorageProvider::batch_lock()
{
m_lock.lock();
}
void RocksDBStorageProvider::batch_unlock()
{
m_lock.unlock();
}
void RocksDBStorageProvider::flush()
{
m_spdb->SyncWAL();
}
bool RocksDBStorageProvider::FKeyExists(const char *key, size_t cch) const
{
rocksdb::PinnableSlice slice;
return m_spdb->Get(ReadOptions(), m_spcolfamily.get(), rocksdb::Slice(key, cch), &slice).ok();
}
-56
View File
@@ -1,56 +0,0 @@
#pragma once
#include <memory>
#include "../IStorage.h"
#include <rocksdb/db.h>
#include "../fastlock.h"
#define INTERNAL_KEY_PREFIX "\x00\x04\x03\x00\x05\x02\x04"
static const char count_key[] = INTERNAL_KEY_PREFIX "__keydb__count\1";
static const char version_key[] = INTERNAL_KEY_PREFIX "__keydb__version\1";
static const char meta_key[] = INTERNAL_KEY_PREFIX "__keydb__metadata\1";
class RocksDBStorageFactory;
class RocksDBStorageProvider : public IStorage
{
RocksDBStorageFactory *m_pfactory;
std::shared_ptr<rocksdb::DB> m_spdb; // Note: This must be first so it is deleted last
std::unique_ptr<rocksdb::WriteBatch> m_spbatch;
const rocksdb::Snapshot *m_psnapshot = nullptr;
std::shared_ptr<rocksdb::ColumnFamilyHandle> m_spcolfamily;
rocksdb::ReadOptions m_readOptionsTemplate;
size_t m_count = 0;
mutable fastlock m_lock {"RocksDBStorageProvider"};
public:
RocksDBStorageProvider(RocksDBStorageFactory *pfactory, std::shared_ptr<rocksdb::DB> &spdb, std::shared_ptr<rocksdb::ColumnFamilyHandle> &spcolfam, const rocksdb::Snapshot *psnapshot, size_t count);
~RocksDBStorageProvider();
virtual void insert(const char *key, size_t cchKey, void *data, size_t cb, bool fOverwrite) override;
virtual bool erase(const char *key, size_t cchKey) override;
virtual void retrieve(const char *key, size_t cchKey, callbackSingle fn) const override;
virtual size_t clear() override;
virtual bool enumerate(callback fn) const override;
virtual const IStorage *clone() const override;
virtual void beginWriteBatch() override;
virtual void endWriteBatch() override;
virtual void bulkInsert(char **rgkeys, size_t *rgcbkeys, char **rgvals, size_t *rgcbvals, size_t celem) override;
virtual void batch_lock() override;
virtual void batch_unlock() override;
virtual void flush() override;
size_t count() const override;
protected:
bool FKeyExists(const char *key, size_t cchKey) const;
const rocksdb::ReadOptions &ReadOptions() const { return m_readOptionsTemplate; }
rocksdb::WriteOptions WriteOptions() const;
};
bool FInternalKey(const char *key, size_t cch);
-204
View File
@@ -1,204 +0,0 @@
#include "rocksdb.h"
#include "../version.h"
#include <rocksdb/filter_policy.h>
#include <rocksdb/table.h>
#include <rocksdb/utilities/options_util.h>
#include <rocksdb/sst_file_manager.h>
#include <rocksdb/utilities/convenience.h>
#include <rocksdb/slice_transform.h>
#include "rocksdbfactor_internal.h"
#include <sys/types.h>
#include <sys/stat.h>
rocksdb::Options DefaultRocksDBOptions() {
rocksdb::Options options;
options.max_background_compactions = 4;
options.max_background_flushes = 2;
options.bytes_per_sync = 1048576;
options.compaction_pri = rocksdb::kMinOverlappingRatio;
options.compression = rocksdb::kNoCompression;
options.enable_pipelined_write = true;
options.allow_mmap_reads = true;
options.avoid_unnecessary_blocking_io = true;
options.prefix_extractor.reset(rocksdb::NewFixedPrefixTransform(0));
rocksdb::BlockBasedTableOptions table_options;
table_options.block_size = 16 * 1024;
table_options.cache_index_and_filter_blocks = true;
table_options.pin_l0_filter_and_index_blocks_in_cache = true;
table_options.data_block_index_type = rocksdb::BlockBasedTableOptions::kDataBlockBinaryAndHash;
table_options.checksum = rocksdb::kNoChecksum;
table_options.format_version = 4;
options.table_factory.reset(NewBlockBasedTableFactory(table_options));
return options;
}
IStorageFactory *CreateRocksDBStorageFactory(const char *path, int dbnum, const char *rgchConfig, size_t cchConfig)
{
return new RocksDBStorageFactory(path, dbnum, rgchConfig, cchConfig);
}
rocksdb::Options RocksDBStorageFactory::RocksDbOptions()
{
rocksdb::Options options = DefaultRocksDBOptions();
options.max_open_files = filedsRequired();
options.sst_file_manager = m_pfilemanager;
options.create_if_missing = true;
options.create_missing_column_families = true;
options.info_log_level = rocksdb::ERROR_LEVEL;
options.max_total_wal_size = 1 * 1024 * 1024 * 1024;
return options;
}
RocksDBStorageFactory::RocksDBStorageFactory(const char *dbfile, int dbnum, const char *rgchConfig, size_t cchConfig)
: m_path(dbfile)
{
dbnum++; // create an extra db for metadata
// Get the count of column families in the actual database
std::vector<std::string> vecT;
auto status = rocksdb::DB::ListColumnFamilies(rocksdb::Options(), dbfile, &vecT);
// RocksDB requires we know the count of col families before opening, if the user only wants to see less
// we still have to make room for all column family handles regardless
if (status.ok() && (int)vecT.size() > dbnum)
dbnum = (int)vecT.size();
std::vector<rocksdb::ColumnFamilyDescriptor> veccoldesc;
veccoldesc.push_back(rocksdb::ColumnFamilyDescriptor(rocksdb::kDefaultColumnFamilyName, rocksdb::ColumnFamilyOptions())); // ignore default col family
m_pfilemanager = std::shared_ptr<rocksdb::SstFileManager>(rocksdb::NewSstFileManager(rocksdb::Env::Default()));
rocksdb::DB *db = nullptr;
auto options = RocksDbOptions();
for (int idb = 0; idb < dbnum; ++idb)
{
rocksdb::ColumnFamilyOptions cf_options(options);
cf_options.level_compaction_dynamic_level_bytes = true;
veccoldesc.push_back(rocksdb::ColumnFamilyDescriptor(std::to_string(idb), cf_options));
}
if (rgchConfig != nullptr)
{
std::string options_string(rgchConfig, cchConfig);
rocksdb::Status status;
if (!(status = rocksdb::GetDBOptionsFromString(options, options_string, &options)).ok())
{
fprintf(stderr, "Failed to parse FLASH options: %s\r\n", status.ToString().c_str());
exit(EXIT_FAILURE);
}
}
std::vector<rocksdb::ColumnFamilyHandle*> handles;
status = rocksdb::DB::Open(options, dbfile, veccoldesc, &handles, &db);
if (!status.ok())
throw status.ToString();
m_spdb = std::shared_ptr<rocksdb::DB>(db);
for (auto handle : handles)
{
std::string strVersion;
auto status = m_spdb->Get(rocksdb::ReadOptions(), handle, rocksdb::Slice(version_key, sizeof(version_key)), &strVersion);
if (!status.ok())
{
setVersion(handle);
}
else
{
SymVer ver = parseVersion(strVersion.c_str());
auto cmp = compareVersion(&ver);
if (cmp == NewerVersion)
throw "Cannot load FLASH database created by newer version of KeyDB";
if (cmp == OlderVersion)
setVersion(handle);
}
m_vecspcols.emplace_back(handle);
}
}
RocksDBStorageFactory::~RocksDBStorageFactory()
{
m_spdb->SyncWAL();
}
void RocksDBStorageFactory::setVersion(rocksdb::ColumnFamilyHandle *handle)
{
auto status = m_spdb->Put(rocksdb::WriteOptions(), handle, rocksdb::Slice(version_key, sizeof(version_key)), rocksdb::Slice(KEYDB_REAL_VERSION, strlen(KEYDB_REAL_VERSION)+1));
if (!status.ok())
throw status.ToString();
}
size_t RocksDBStorageFactory::filedsRequired() const {
return 256;
}
std::string RocksDBStorageFactory::getTempFolder()
{
auto path = m_path + "/keydb_tmp/";
if (!m_fCreatedTempFolder) {
if (!mkdir(path.c_str(), 0700))
m_fCreatedTempFolder = true;
}
return path;
}
IStorage *RocksDBStorageFactory::createMetadataDb()
{
IStorage *metadataDb = this->create(-1, nullptr, nullptr);
metadataDb->insert(meta_key, sizeof(meta_key), (void*)METADATA_DB_IDENTIFIER, strlen(METADATA_DB_IDENTIFIER), false);
return metadataDb;
}
IStorage *RocksDBStorageFactory::create(int db, key_load_iterator iter, void *privdata)
{
++db; // skip default col family
std::shared_ptr<rocksdb::ColumnFamilyHandle> spcolfamily(m_vecspcols[db].release());
size_t count = 0;
bool fUnclean = false;
std::string value;
auto status = m_spdb->Get(rocksdb::ReadOptions(), spcolfamily.get(), rocksdb::Slice(count_key, sizeof(count_key)), &value);
if (status.ok() && value.size() == sizeof(size_t))
{
count = *reinterpret_cast<const size_t*>(value.data());
m_spdb->Delete(rocksdb::WriteOptions(), spcolfamily.get(), rocksdb::Slice(count_key, sizeof(count_key)));
}
else
{
fUnclean = true;
}
if (fUnclean || iter != nullptr)
{
count = 0;
auto opts = rocksdb::ReadOptions();
opts.tailing = true;
std::unique_ptr<rocksdb::Iterator> it = std::unique_ptr<rocksdb::Iterator>(m_spdb->NewIterator(opts, spcolfamily.get()));
it->SeekToFirst();
bool fFirstRealKey = true;
for (;it->Valid(); it->Next()) {
if (FInternalKey(it->key().data(), it->key().size()))
continue;
if (fUnclean && it->Valid() && fFirstRealKey)
printf("\tDatabase %d was not shutdown cleanly, recomputing metrics\n", db);
fFirstRealKey = false;
if (iter != nullptr)
iter(it->key().data(), it->key().size(), privdata);
++count;
}
}
return new RocksDBStorageProvider(this, m_spdb, spcolfamily, nullptr, count);
}
const char *RocksDBStorageFactory::name() const
{
return "flash";
}
size_t RocksDBStorageFactory::totalDiskspaceUsed() const
{
return m_pfilemanager->GetTotalSize();
}
+4 -2
View File
@@ -26,10 +26,12 @@ TestStorageProvider::~TestStorageProvider()
{
}
void TestStorageProvider::insert(const char *key, size_t cchKey, void *data, size_t cb, bool /*fOverwrite*/)
void TestStorageProvider::insert(const char *key, size_t cchKey, void *data, size_t cb, bool fOverwrite)
{
auto strkey = std::string(key, cchKey);
m_map[strkey] = std::string((char*)data, cb);
bool fActuallyExists = m_map.find(strkey) != m_map.end();
serverAssert(fActuallyExists == fOverwrite);
m_map.insert(std::make_pair(strkey, std::string((char*)data, cb)));
}
+7 -7
View File
@@ -789,13 +789,13 @@ int64_t streamTrim(stream *s, streamAddTrimArgs *args) {
* update it after (and if) we actually remove the entry */
unsigned char *pcopy = p;
int64_t flags = lpGetInteger(p);
int flags = lpGetInteger(p);
p = lpNext(lp, p); /* Skip flags. */
int64_t to_skip;
int to_skip;
int64_t ms_delta = lpGetInteger(p);
int ms_delta = lpGetInteger(p);
p = lpNext(lp, p); /* Skip ID ms delta */
int64_t seq_delta = lpGetInteger(p);
int seq_delta = lpGetInteger(p);
p = lpNext(lp, p); /* Skip ID seq delta */
streamID currid = {0}; /* For MINID */
@@ -1125,7 +1125,7 @@ int streamIteratorGetID(streamIterator *si, streamID *id, int64_t *numfields) {
* the first entry emitted for this listpack, then we already
* emitted the current entry, and have to go back to the previous
* one. */
int64_t lp_count = lpGetInteger(si->lp_ele);
int lp_count = lpGetInteger(si->lp_ele);
while(lp_count--) si->lp_ele = lpPrev(si->lp,si->lp_ele);
/* Seek lp-count of prev entry. */
si->lp_ele = lpPrev(si->lp,si->lp_ele);
@@ -1155,7 +1155,7 @@ int streamIteratorGetID(streamIterator *si, streamID *id, int64_t *numfields) {
/* Get the flags entry. */
si->lp_flags = si->lp_ele;
int64_t flags = lpGetInteger(si->lp_ele);
int flags = lpGetInteger(si->lp_ele);
si->lp_ele = lpNext(si->lp,si->lp_ele); /* Seek ID. */
/* Get the ID: it is encoded as difference between the master
@@ -1264,7 +1264,7 @@ void streamIteratorRemoveEntry(streamIterator *si, streamID *current) {
* deleted entries in the listpack header.
*
* We start flagging: */
int64_t flags = lpGetInteger(si->lp_flags);
int flags = lpGetInteger(si->lp_flags);
flags |= STREAM_ITEM_FLAG_DELETED;
lp = lpReplaceInteger(lp,&si->lp_flags,flags);
+6 -54
View File
@@ -46,9 +46,6 @@
#include <sys/stat.h>
#include <arpa/inet.h>
#if OPENSSL_VERSION_NUMBER >= 0x30000000L
#include <openssl/decoder.h>
#endif
#define REDIS_TLS_PROTO_TLSv1 (1<<0)
#define REDIS_TLS_PROTO_TLSv1_1 (1<<1)
@@ -157,13 +154,14 @@ void tlsInit(void) {
*/
#if OPENSSL_VERSION_NUMBER < 0x10100000L
OPENSSL_config(NULL);
SSL_load_error_strings();
SSL_library_init();
#elif OPENSSL_VERSION_NUMBER < 0x10101000L
OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG, NULL);
#else
OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG|OPENSSL_INIT_ATFORK, NULL);
#endif
ERR_load_crypto_strings();
SSL_load_error_strings();
SSL_library_init();
#ifdef USE_CRYPTO_LOCKS
initCryptoLocks();
@@ -366,46 +364,20 @@ int tlsConfigure(redisTLSContextConfig *ctx_config) {
if (ctx_config->prefer_server_ciphers)
SSL_CTX_set_options(ctx, SSL_OP_CIPHER_SERVER_PREFERENCE);
#if ((OPENSSL_VERSION_NUMBER < 0x30000000L) && defined(SSL_CTX_set_ecdh_auto))
#if defined(SSL_CTX_set_ecdh_auto)
SSL_CTX_set_ecdh_auto(ctx, 1);
#endif
SSL_CTX_set_options(ctx, SSL_OP_SINGLE_DH_USE);
if (ctx_config->dh_params_file) {
FILE *dhfile = fopen(ctx_config->dh_params_file, "r");
DH *dh = NULL;
if (!dhfile) {
serverLog(LL_WARNING, "Failed to load %s: %s", ctx_config->dh_params_file, strerror(errno));
goto error;
}
#if (OPENSSL_VERSION_NUMBER >= 0x30000000L)
EVP_PKEY *pkey = NULL;
OSSL_DECODER_CTX *dctx = OSSL_DECODER_CTX_new_for_pkey(
&pkey, "PEM", NULL, "DH", OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS, NULL, NULL);
if (!dctx) {
serverLog(LL_WARNING, "No decoder for DH params.");
fclose(dhfile);
goto error;
}
if (!OSSL_DECODER_from_fp(dctx, dhfile)) {
serverLog(LL_WARNING, "%s: failed to read DH params.", ctx_config->dh_params_file);
OSSL_DECODER_CTX_free(dctx);
fclose(dhfile);
goto error;
}
OSSL_DECODER_CTX_free(dctx);
fclose(dhfile);
if (SSL_CTX_set0_tmp_dh_pkey(ctx, pkey) <= 0) {
ERR_error_string_n(ERR_get_error(), errbuf, sizeof(errbuf));
serverLog(LL_WARNING, "Failed to load DH params file: %s: %s", ctx_config->dh_params_file, errbuf);
EVP_PKEY_free(pkey);
goto error;
}
/* Not freeing pkey, it is owned by OpenSSL now */
#else
DH *dh = PEM_read_DHparams(dhfile, NULL, NULL, NULL);
dh = PEM_read_DHparams(dhfile, NULL, NULL, NULL);
fclose(dhfile);
if (!dh) {
serverLog(LL_WARNING, "%s: failed to read DH params.", ctx_config->dh_params_file);
@@ -420,11 +392,6 @@ int tlsConfigure(redisTLSContextConfig *ctx_config) {
}
DH_free(dh);
#endif
} else {
#if (OPENSSL_VERSION_NUMBER >= 0x30000000L)
SSL_CTX_set_dh_auto(ctx, 1);
#endif
}
/* If a client-side certificate is configured, create an explicit client context */
@@ -536,26 +503,11 @@ bool tlsCheckAgainstAllowlist(const char * client){
#define ASN1_STRING_get0_data ASN1_STRING_data
#endif
class TCleanup {
std::function<void()> fn;
public:
TCleanup(std::function<void()> fn)
: fn(fn)
{}
~TCleanup() {
fn();
}
};
bool tlsValidateCertificateName(tls_connection* conn){
if (g_pserver->tls_allowlist.empty())
return true; // Empty list implies acceptance of all
X509 * cert = SSL_get_peer_certificate(conn->ssl);
TCleanup certClen([cert]{X509_free(cert);});
/* Check the common name (CN) of the certificate first */
X509_NAME_ENTRY * ne = X509_NAME_get_entry(X509_get_subject_name(cert), X509_NAME_get_index_by_NID(X509_get_subject_name(cert), NID_commonName, -1));
const char * commonName = reinterpret_cast<const char*>(ASN1_STRING_get0_data(X509_NAME_ENTRY_get_data(ne)));
+2 -6
View File
@@ -53,12 +53,12 @@ start_server {overrides {active-replica {yes} multi-master {yes} client-output-b
set elapsed [expr {[clock milliseconds]-$cycle_start_time}]
if {$elapsed > $duration*1000} break
if {rand() < .05} {
test "PSYNC2 #3899 regression (multi-master): kill first replica" {
test "PSYNC2 #3899 regression: kill first replica" {
$R(1) client kill type master
}
}
if {rand() < .05} {
test "PSYNC2 #3899 regression (multi-master): kill chained replica" {
test "PSYNC2 #3899 regression: kill chained replica" {
$R(2) client kill type master
}
}
@@ -99,8 +99,4 @@ start_server {overrides {active-replica {yes} multi-master {yes} client-output-b
fail [format "The three instances have different data sets:\n\tnode 1: %s\n\tnode 2: %s\n\tnode 3: %s\nRun diff -u against /tmp/repldump*.txt for more info" [$R(0) debug digest] [$R(1) debug digest] [$R(2) debug digest] ]
}
}
assert {[s -2 sync_partial_ok] > 0}
assert {[s -1 sync_partial_ok] > 0}
assert {[s 0 sync_partial_ok] > 0}
}}}
-2
View File
@@ -6,7 +6,6 @@ proc prepare_value {size} {
return $_v
}
if {$::flash_enabled} {
start_server {tags {"replication-fast"} overrides {storage-provider {flash ./rocks.db.master} databases 256}} {
set slave [srv 0 client]
set slave_host [srv 0 host]
@@ -33,4 +32,3 @@ start_server {tags {"replication-fast"} overrides {storage-provider {flash ./roc
}
}
}
}
@@ -8,7 +8,6 @@
# If reconnect is > 0, the test actually try to break the connection and
# reconnect with the master, otherwise just the initial synchronization is
# checked for consistency.
if {$::flash_enabled} {
proc test_psync {descr duration backlog_size backlog_ttl delay cond mdl sdl reconnect} {
start_server [list tags {"repl"} overrides [list storage-provider {flash .rocks.db.m} repl-backlog-size 64m]] {
start_server [list tags {flash} overrides [list storage-provider {flash ./rocks.db} delete-on-evict no storage-flush-period 10]] {
@@ -134,4 +133,3 @@ foreach mdl {no yes} {
} $mdl $sdl 1
}
}
}
-14
View File
@@ -47,7 +47,6 @@ set ::all_tests {
integration/replication-3
integration/replication-4
integration/replication-psync
integration/replication-psync-flash
integration/replication-active
integration/replication-multimaster
integration/replication-multimaster-connect
@@ -60,13 +59,11 @@ set ::all_tests {
integration/failover
integration/keydb-cli
integration/keydb-benchmark
integration/replication-fast
integration/replication-psync-multimaster
unit/pubsub
unit/slowlog
unit/scripting
unit/maxmemory
unit/flash
unit/introspection
unit/introspection-2
unit/limits
@@ -89,7 +86,6 @@ set ::all_tests {
integration/logging
integration/corrupt-dump
integration/corrupt-dump-fuzzer
unit/soft_shutdown
}
# Index to the next test to run in the ::all_tests list.
set ::next_test 0
@@ -739,16 +735,6 @@ for {set j 0} {$j < [llength $argv]} {incr j} {
}
}
# Check if we compiled with flash
set status [catch {exec src/keydb-server --is-flash-enabled}]
if {$status == 0} {
puts "KeyDB was built with FLASH, including FLASH tests"
set ::flash_enabled 1
} else {
puts "KeyDB was not built with FLASH. Excluding FLASH tests"
set ::flash_enabled 0
}
set filtered_tests {}
# Set the filtered tests to be the short list (single_tests) if exists.
+1 -2
View File
@@ -1,4 +1,3 @@
if {$::flash_enabled} {
start_server [list tags {flash} overrides [list storage-provider {flash ./rocks.db} delete-on-evict no storage-flush-period 10]] {
test { FLASH - GET works after eviction } {
@@ -168,4 +167,4 @@ start_server [list tags {flash} overrides [list storage-provider {flash ./rocks.
}
}
}
+9 -15
View File
@@ -49,13 +49,10 @@ start_server {tags {"defrag"} overrides {appendonly yes auto-aof-rewrite-percent
r config set maxmemory 100mb
r config set maxmemory-policy allkeys-lru
for {set i 0} {$i < 10} {incr i} {
populate 700000 asdf1 150
populate 170000 asdf2 300
after 120 ;# serverCron only updates the info once in 100ms
set frag [s allocator_frag_ratio]
if {$frag >= 1.4} {break}
}
populate 700000 asdf1 150
populate 170000 asdf2 300
after 120 ;# serverCron only updates the info once in 100ms
set frag [s allocator_frag_ratio]
if {$::verbose} {
puts "frag $frag"
}
@@ -510,14 +507,11 @@ start_server {tags {"defrag"} overrides {server-threads 1 active-replica yes} }
r config set active-defrag-ignore-bytes 2mb
r config set maxmemory 100mb
r config set maxmemory-policy allkeys-lru
for {set i 0} {$i < 10} {incr i} {
populate 700000 asdf1 150
populate 170000 asdf2 300
r ping ;# trigger eviction following the previous population
after 120 ;# serverCron only updates the info once in 100ms
set frag [s allocator_frag_ratio]
if {$frag >= 1.4} {break}
}
populate 700000 asdf1 150
populate 170000 asdf2 300
r ping ;# trigger eviction following the previous population
after 120 ;# serverCron only updates the info once in 100ms
set frag [s allocator_frag_ratio]
if {$::verbose} {
puts "frag $frag"
}
-4
View File
@@ -126,10 +126,6 @@ start_server {tags {"scripting"}} {
r select 9
set res
} {original value}
test {EVAL background command} {
r eval {redis.call("SCAN", "0", "MATCH", "key*", "COUNT", 1000)} 0
} {}
if 0 {
test {EVAL - Script can't run more than configured time limit} {
-141
View File
@@ -1,141 +0,0 @@
start_server {tags {"soft_shutdown"} } {
test {soft shutdown command replies} {
assert_equal [r shutdown soft] "OK"
}
test {soft shutdown errors on ping} {
catch {[r ping]} e
assert_match {SHUTDOWN PENDING} $e
}
}
start_server {tags {"soft_shutdown"} } {
test {soft shutdown prevents new connections} {
assert_equal [r shutdown soft] "OK"
# reconnect
set catch_res [catch {set rd [redis_deferring_client]} e]
if {$::tls} {
assert_equal $catch_res 1
} else {
assert_match {*SHUTDOWN*} $e
}
}
}
start_server {tags {"soft_shutdown"} } {
test {soft shutdown allows commands to execute while waiting} {
assert_equal [r shutdown soft] "OK"
r set test val
assert_equal [r get test] {val}
}
}
start_server {tags {"soft_shutdown"} } {
test {soft shutdown shuts down after all clients exit} {
assert_equal [r shutdown soft] "OK"
r close
after 500
catch {set rd [redis_deferring_client]} e
assert_match {*refused*} $e
}
}
start_server {tags {"soft_shutdown"} overrides {soft-shutdown yes} } {
test {soft shutdown triggered by SIGINT} {
exec kill -SIGINT [s process_id]
after 100
catch {[r ping]} e
assert_match {SHUTDOWN PENDING} $e
}
test {second SIGINT forces a shutdown during a soft shutdown} {
exec kill -SIGINT [s process_id]
after 100
catch {[r ping]} e
assert_match {*I/O*} $e
}
}
start_server {tags {"soft_shutdown"} } {
test {monitor does not prevent soft shutdown} {
set monitor [redis_deferring_client]
$monitor monitor
assert_equal [r shutdown soft] "OK"
r close
after 500
catch {set rd [redis_deferring_client]} e
assert_match {*refused*} $e
}
}
start_server {tags {"soft_shutdown"} } {
start_server {} {
set node_0 [srv 0 client]
set node_0_host [srv 0 host]
set node_0_port [srv 0 port]
set node_0_pid [srv 0 pid]
set node_1 [srv -1 client]
set node_1_host [srv -1 host]
set node_1_port [srv -1 port]
set node_1_pid [srv -1 pid]
$node_0 replicaof $node_1_host $node_1_port
wait_for_sync $node_0
test {soft shutdown works for with master} {
$node_1 shutdown soft
} {OK}
test {soft shutdown on master doesn't affect replica} {
assert_equal [$node_0 ping] {PONG}
}
test {soft shutdown on master updates ping response} {
catch {$node_1 ping} e
assert_equal $e {SHUTDOWN PENDING}
}
test {master prevents new connections with soft shutdown} {
set c1 [redis $node_1_host $node_1_port 1 $::tls]
set catch_res [catch {$c1 read} e]
if {$::tls} {
assert_equal $catch_res 1
} else {
assert_match {*SHUTDOWN*} $e
}
}
test {master soft shutdown works after all clients disconnect} {
$node_1 close
after 500
catch {set c1 [redis $node_1_host $node_1_port 1 $::tls]} e
assert_match {*refused*} $e
}
}
}
start_server {tags {"soft_shutdown"} } {
start_server {} {
set node_0 [srv 0 client]
set node_0_host [srv 0 host]
set node_0_port [srv 0 port]
set node_0_pid [srv 0 pid]
set node_1 [srv -1 client]
set node_1_host [srv -1 host]
set node_1_port [srv -1 port]
set node_1_pid [srv -1 pid]
$node_0 replicaof $node_1_host $node_1_port
wait_for_sync $node_0
test {soft shutdown on replica is not blocked by master} {
assert_equal [$node_0 shutdown soft] {OK}
$node_0 close
after 500
catch {set c0 [redis $node_0_host $node_0_port 1 $::tls]} e
assert_match {*refused*} $e
}
}
}
-9
View File
@@ -172,15 +172,6 @@ start_server {
assert_equal [r XRANGE mystream - +] {{3-0 {f v}} {4-0 {f v}} {5-0 {f v}}}
}
test {XTRIM with MINID option, big delta from master record} {
r DEL mystream
r XADD mystream 1-0 f v
r XADD mystream 1641544570597-0 f v
r XADD mystream 1641544570597-1 f v
r XTRIM mystream MINID 1641544570597-0
assert_equal [r XRANGE mystream - +] {{1641544570597-0 {f v}} {1641544570597-1 {f v}}}
}
test {XADD mass insertion and XLEN} {
r DEL mystream
r multi
+9 -9
View File
@@ -1,27 +1,27 @@
# redis-copy.rb - Copyright (C) 2009-2010 Salvatore Sanfilippo
# keydb-copy.rb - Copyright (C) 2009-2010 Salvatore Sanfilippo
# BSD license, See the COPYING file for more information.
#
# Copy the whole dataset from one KeyDB/Redis instance to another one
# Copy the whole dataset from one Redis instance to another one
#
# WARNING: this utility is deprecated and serves as a legacy adapter
# for the more-robust redis-copy gem.
# for the more-robust keydb-copy gem.
require 'shellwords'
def redisCopy(opts={})
src = "#{opts[:srchost]}:#{opts[:srcport]}"
dst = "#{opts[:dsthost]}:#{opts[:dstport]}"
`redis-copy #{src.shellescape} #{dst.shellescape}`
`keydb-copy #{src.shellescape} #{dst.shellescape}`
rescue Errno::ENOENT
$stderr.puts 'This utility requires the redis-copy executable',
'from the redis-copy gem on https://rubygems.org',
'To install it, run `gem install redis-copy`.'
$stderr.puts 'This utility requires the keydb-copy executable',
'from the keydb-copy gem on https://rubygems.org',
'To install it, run `gem install keydb-copy`.'
exit 1
end
$stderr.puts "This utility is deprecated. Use the redis-copy gem instead."
$stderr.puts "This utility is deprecated. Use the keydb-copy gem instead."
if ARGV.length != 4
puts "Usage: redis-copy.rb <srchost> <srcport> <dsthost> <dstport>"
puts "Usage: keydb-copy.rb <srchost> <srcport> <dsthost> <dstport>"
exit 1
end
puts "WARNING: it's up to you to FLUSHDB the destination host before to continue, press any key when ready."