Commit Graph

483 Commits

Author SHA1 Message Date
Tomato6966 f3ab64e645
Added more useful flags to the flags section (#305)
Signed-off-by: Tomato6966 <chris.pre03@gmail.com>
2022-09-18 16:37:24 +03:00
romange 4041b60149 chore(helm-chart): update to v0.8.0 2022-09-18 13:35:09 +00:00
Boaz Sade 6ec453a599
feat(server): adding support for bitops #213 (#295)
feat(server): bitset bitget commands - update docs/api_status.md #213

Signed-off-by: Boaz Sade <boaz@dragonflydb.io>
2022-09-18 16:20:51 +03:00
Roman Gershman 7ed808d5d0 fix(rdb): Fix RDB load bug when loading hset 2022-09-18 13:15:39 +03:00
iko1 d3c848f97a
feat(server): implement json.del command (#239) (#262)
* feat(server): implement json.del command (#239)

Signed-off-by: iko1 <me@remotecpp.dev>
2022-09-17 19:19:47 +03:00
Ryan Russell b81634c25f
docs(server): readability cleanup (#304)
* docs: fix Daniel Lemire's name

Signed-off-by: Ryan Russell <git@ryanrussell.org>

* refactor(server): readability cleanup

Signed-off-by: Ryan Russell <git@ryanrussell.org>

* docs: actually fix the name attribution

Signed-off-by: Ryan Russell <git@ryanrussell.org>

Signed-off-by: Ryan Russell <git@ryanrussell.org>
2022-09-17 15:44:35 +03:00
Braydn 7cc761134b
fix(server): Added RDB load / save for DenseSet (#297)
Signed-off-by: Braydn <braydn.moore@uwaterloo.ca>
2022-09-14 20:09:32 +03:00
Ryan Russell 231ef3d367
docs(src/core): readability improvements (#293)
Signed-off-by: Ryan Russell <git@ryanrussell.org>

Signed-off-by: Ryan Russell <git@ryanrussell.org>
2022-09-14 15:30:05 +03:00
Roman Gershman 4522f2fdd1
chore(server): Fix clang warnings and errors (#290)
Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2022-09-14 09:05:51 +03:00
Braydn b8d791961e
feat(core): Added DenseSet and StringSet types (#268)
* feat(core): Added DenseSet & StringSet types with docs

- Improved documentation by adding labels to chain types & pointer tagging table
- Added potential improvements to the DenseSet types in the docs
- Added excalidraw save file for future editing
- Removed ambiguous overloading types
- Renamed iterators to be more clear


* feat(core): Cleaned up DenseSet and Docs
* feat(core): Made DenseSet more ergonomic
* feat(server): Integration of DenseSet into Server

- Integrated DenseSet with CompactObj and the Set Family commands

Signed-off-by: Braydn <braydn.moore@uwaterloo.ca>
2022-09-14 08:41:54 +03:00
Vladislav ed83b07fad
docs(api): Update api_status.md (#285)
* Update api_status.md
2022-09-13 20:13:34 +03:00
Vladislav cb024a23ac
feat(server): Watch & Unwatch commands (#277)
* chore(server): Refactor ConnectionState & DbSlice for watched key support

* feat(server): Add WATCH & UNWATCH commands

Signed-off-by: Vladislav Oleshko <vlad@dragonflydb.io>
Co-authored-by: Vladislav Oleshko <vlad@dragonflydb.io>
2022-09-13 19:14:11 +03:00
Boaz Sade d3359f1a0a
feat(server): support for setnx command #281 (#283)
Signed-off-by: Boaz Sade <boaz1sade@gmail.com>
2022-09-13 17:40:22 +03:00
Vladislav add252c301
fix(server): Fix QUIT not shutting down connection (#280)
* fix(server): Fix QUIT not shutting down connection

Fixes #170
2022-09-13 05:25:46 +03:00
odedponcz 0fbd1afa36
feat: Change tls command line argument to conform with Redis (#276)
Change tls command line argument to conform with Redis

Signed-off-by: Oded Poncz <oded@poncz.com>

Signed-off-by: Oded Poncz <oded@poncz.com>
2022-09-08 19:32:52 +03:00
romange a793125599 chore(helm-chart): update to v0.7.0 2022-09-08 13:18:49 +00:00
Vladislav a43badf50c
feat(core): Add lua modules (#273)
feat(server): Add modules to lua interpreter
2022-09-08 14:31:27 +03:00
Roman Gershman cfa1265b29 fix(server): fix a potential bug of loosing changes with multiple concurrent snapshots 2022-09-08 09:01:51 +03:00
Roman Gershman c5a7e658a1 fix(server): Fix break callback handling in case of thread migrations.
When a connection migrates to another thread, it also being handled by a different io_uring.
That means we need to cancel any pending io requests we had in the old io uring and reestablish them
in the new one.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2022-09-05 06:52:51 +03:00
Roman Gershman 14e61f532f feat(replication): Extend replication handshake protocol to support DF->DF replication.
1. Introduce REPLCONF command support.
2. Introduce DF specific DFLY SYNC command to allow multi-flow replication.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2022-09-02 16:39:53 +03:00
Roman Gershman 042800c2f4 feat(rdb): Allow producing multiple rdb files when creating a snapshot. 2022-08-30 22:41:37 +03:00
Roman Gershman 439d79f03c chore(rdb): refactor and some clean-ups of rdb code 2022-08-29 23:41:43 +03:00
Roman Gershman ae65c489e5 docs(rdb): More work on the rdb snapshotting document.
Also add some debugging command to control the replication flow.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2022-08-28 17:27:34 +03:00
Roman Gershman c72939d0d4 docs(rdb): Add rdbsave high level design. 2022-08-27 22:56:45 +03:00
Roman Gershman 1ed81cf61d chore(set): minor cleanups and refactorings. (#260) 2022-08-27 10:18:54 +03:00
iko1 3acb1bb704 feat(server): implement json.numincrby (#240) (#252)
* feat(server): implement json.numincrby (#240)

Signed-off-by: iko1 <me@remotecpp.dev>
2022-08-26 16:50:10 +03:00
iko1 3e3496c4bf feat(server): implement JSON.TOGGLE & JSON.ARRLEN & JSON.OBJLEN commands (#228)
feat(server): implement JSON.TOGGLE & JSON.ARRLEN & JSON.OBJLEN commands (#241)

Signed-off-by: iko1 <me@remotecpp.dev>

Signed-off-by: iko1 <me@remotecpp.dev>
2022-08-26 16:50:10 +03:00
iko1 e4651b95dc feat(server): implement JSON.STRLEN & JSON.TYPE commands (#225)
Signed-off-by: iko1 <me@remotecpp.dev>
2022-08-26 16:50:10 +03:00
iko1 5d3e9dc82a feat(server): implement JSON.GET command (#104)
Signed-off-by: iko1 <me@remotecpp.dev>
2022-08-26 16:50:10 +03:00
Roman Gershman 847a3f183b chore(json): Add more jsoncons tests
Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2022-08-26 16:50:10 +03:00
Roman Gershman 54444bf6ca chore(json): low level parsing function
Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2022-08-26 16:50:10 +03:00
Roman Gershman 985188c8ad chore(json): Add more unit tests.
Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2022-08-26 16:50:10 +03:00
Roman Gershman ad6e904a53 Add jsoncons library as third-party dependency 2022-08-26 16:50:10 +03:00
Roman Gershman 4e4ed63467
feat(server): tighten memory checks when inseting a new object. (#258)
Before this change Dragonfly evicted items only when it was low on memory and had to grow its main dictionary.
It is not enough because in many cases Dragonfly can grow in memory even when the main dictionary does not grow.
For example, when its dictionary is less than 90% utilized, but the newly added objects require lots of memory.

In addition, the dashtable adds additional segments, when other segments have enough available slots to fill the rest of the free memory.

This change adds another layer of defense that allows evicting items even when dictionary segments are not full.
The eviction is still local with respect to a segment. On my tests it seems that it's much harder to cross maxmemory limit than before.

In addition, we tightened the heuristic that allowes the dashtable to grow. Now it takes into account the average bytes per item
in order to project how much memory the full table takes before adding to it new segments.
This really improves dashtable utilization.

There are still things to improve:
1. the eviction behavior is rough. Once an insert does the eviction it tries to free enough objects to bring memory back.
   This may result in very spiky insertion/eviction patterns.
2. The eviction procedure, even though it's limited to a single segment, is quite heavy because it goes over all buckets
   in the segment. This may result in weird artifacts where we evict just enough to be under the limit, then add and evict
   again and so on.
3. Therefore, we may need a periodic eviction that will compliment this emergency eviction step.

Fixes #224 and partially addresses #256

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2022-08-26 15:00:08 +03:00
Braydn b7f85e59a6
feat(server): Implemented periodic snapshotting (#161) (#250)
* feat(server): Implemented periodic snapshotting (#161)

* feat(test): Added the ability to specify dragonfly cli parameters on a test basis (#199)

Signed-off-by: Braydn <braydn.moore@uwaterloo.ca>

* feat(server): Implemented periodic snapshotting (#161)

Code cleanup & CONTRIBUTORS.md modifcation

Signed-off-by: Braydn <braydn.moore@uwaterloo.ca>

* feat(server): Implemented periodic snapshotting (#161)

Parsing and race condition fixes. Improved pytests

Signed-off-by: Braydn <braydn.moore@uwaterloo.ca>

* feat(test): Cleaned up pytest code & added documentation (#199)

- Moved tests into their own file
- Renamed test namespace to avoid naming conflicts with pytest
- Updated requirements.txt to make test environment reproducible
- Added documentation to write tests

feat(server): Updated helio submodule

Signed-off-by: Braydn <braydn.moore@uwaterloo.ca>

Signed-off-by: Braydn <braydn.moore@uwaterloo.ca>
Co-authored-by: Braydn <braydnmoore3@gmail.com>
2022-08-26 13:54:38 +03:00
Roman Gershman c49e88899b docs(server): Start DF shared nothing design document. 2022-08-20 21:38:33 +03:00
Vladislav 25e700f39f
feat(server): Implement STICK command #219 (#245)
* feat(server): Implement STICK command #219

Signed-off-by: Vladislav Oleshko <vladislav.oleshko@gmail.com>
2022-08-20 16:50:43 +03:00
Roman Gershman 77bb34fab5
feat(monitoring): Add docker-compose for local monitoring dashboard. (#246)
Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2022-08-20 11:06:11 +03:00
Roman Gershman 7d2298b95a fix(server): Fix unrelevant error message when using UDS.
Also fixes #248.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2022-08-19 15:26:19 +03:00
odedponcz 08cda413f7
Move assets to static (#247)
Signed-off-by: Oded Poncz <oded@poncz.com>

Signed-off-by: Oded Poncz <oded@poncz.com>
2022-08-18 22:55:12 +03:00
odedponcz 3d3d395e25
fix:change statis assets url for http monitoring page (#243)
* fix:change statis assets url for http monitoring page

Signed-off-by: Oded Poncz <oded@poncz.com>

* fix:change statis assets url for http monitoring page

Signed-off-by: Oded Poncz <oded@poncz.com>

* fix:change statis assets url for http monitoring page

Signed-off-by: Oded Poncz <oded@poncz.com>

Signed-off-by: Oded Poncz <oded@poncz.com>
2022-08-17 15:06:22 +03:00
Roman Gershman 4054297bbd fix(rdb): add error msg when rejecting the rdb version. 2022-08-15 09:12:14 +03:00
Roman Gershman 9f935a33c0 fix(doc): add more examples on how to run node-redis test image 2022-08-15 08:37:28 +03:00
odedponcz f31d452939
docs: Update README.md twitter handle (#242)
Update README.md
2022-08-15 08:15:53 +03:00
odedponcz cf729f3fcb
feat(test): Add integration test for the jedis and node-redis clients (#233)
* docs: Improve wording in issue reporting

Signed-off-by: odedponcz <oded@poncz.com>

* docs: Change contribution doc flow

Signed-off-by: odedponcz <oded@poncz.com>

* feat(tests): Add integration test with node-redis

Signed-off-by: odedponcz <oded@poncz.com>

* Rename integration test docker files

Signed-off-by: odedponcz <oded@poncz.com>
2022-08-12 22:42:54 +03:00
odedponcz a00c205b5b
docs: Improve wording in issue reporting (#232)
* docs: Improve wording in issue reporting

Signed-off-by: odedponcz <oded@poncz.com>

* docs: Change contribution doc flow

Signed-off-by: odedponcz <oded@poncz.com>
2022-08-08 10:55:44 +03:00
odedponcz 3b04801cd6
fix: RENAMENX according to spec #229 (#230)
fix: RENAMENX according to spec #226

Signed-off-by: odedponcz <oded@poncz.com>
2022-08-07 22:49:21 +03:00
Roman Gershman d19fa58216 feat(server): support unix sockets.
Resolves #206. There some minor fixes left to do, but they demand improvements in helio:

1. Remove spurious socket configuration calls that fail on uds.
2. Remove incorrect port printing for uds listener (listener_interface.cc:79).

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2022-08-02 14:41:18 +03:00
Roman Gershman cf991deb03 chore(server): add updateval_amount statistic.
This statistic helps understanding how much Dragonfly memory grows via updating the existing value vs the new ones.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2022-08-02 11:03:46 +03:00
romange 404629258a chore(helm-chart): update to v0.6.0 2022-07-29 05:53:30 +00:00