1
0
Fork 0
mirror of https://github.com/dragonflydb/dragonfly.git synced 2024-12-14 11:58:02 +00:00
Commit graph

2918 commits

Author SHA1 Message Date
Andy Dunstall
ad73e18f6d
fix(save): don't create dirs for cloud dir (#4259) 2024-12-05 08:39:47 +00:00
Borys
071e299971
refactor: remove redundant allocations for streamer (#4225)
* refactor: remove redundant allocations for streamer
2024-12-05 08:15:31 +00:00
Roman Gershman
c2f8349c51
chore: update command interface for cluster and search families (#4258) 2024-12-05 09:12:50 +02:00
Stepan Bagritsevich
81079df0e1
fix(rax_tree): Fix crash caused by destructor in RaxTreeMap (#4228)
* fix(rax_tree): Fix double raxStop call in the SeekIterator

fixes dragonflydb#4172

Signed-off-by: Stepan Bagritsevich <stefan@dragonflydb.io>

* refactor(rax_tree): Address comments

Signed-off-by: Stepan Bagritsevich <stefan@dragonflydb.io>

---------

Signed-off-by: Stepan Bagritsevich <stefan@dragonflydb.io>
2024-12-04 21:34:15 +04:00
Kostas Kyrimis
d8fda40d4d
chore: split RecordExpiry preemptive and non-preemptive flows (#4252)
* add FiberGuard to RecordExpiry for non-preemptive flows

---------

Signed-off-by: kostas <kostas@dragonflydb.io>
2024-12-04 15:46:00 +02:00
Roman Gershman
892a415201
chore: update command interface for acl, hll families (#4253) 2024-12-04 13:15:09 +00:00
adiholden
7a23ec2aac
fix(server): fix memory leak on lua error (#4236)
The bug:
calling lua_error does not return, instead it unwinds the Lua call stack until an error handler is found or the
script exits. This lead to memory leak on object that should release memory in destructor.
Specific example is the absl::FixedArray<string_view, 4> args(argc); which allocates on heap if argc > 4. The free was not called leading to memory leak.
The fix:
Add scoping to to the function so that the destructor is called before calling raise error

Signed-off-by: adi_holden <adi@dragonflydb.io>
2024-12-03 16:47:43 +02:00
Roman Gershman
1c09056ab4
fix: command interface for json_family (#4243) 2024-12-03 16:13:14 +02:00
Roman Gershman
8d343bfd69
fix: stream bugs (#4240)
This PR syncs some of the improvements that were introduced in streams in Redis 7.2.3 OSS.

1. verify xsetid against max deleted id in the stream
2. Implement precise memory measurement of streams for "memory usage" command.
3. Always compact nodes in stream listpacks after creating new nodes.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-12-03 16:12:54 +02:00
Shahar Mike
95f2320825
chore: Hide managed service info in INFO (#4248)
Specifically:
* `INFO REPLICATION` does not list the replicas, but does still show
  `connected_slaves`
* `INFO SERVER` does not show `thread_count` and `os`

Fixes #4173
2024-12-03 16:09:13 +02:00
Shahar Mike
b0d633fb61
chore: Hide replica info in real cluster if --managed_service_info (#4241)
So far we only handled emulated cluster. This PR adds real cluster
support.

Related to #4173
2024-12-02 20:22:07 +02:00
Borys
935ae86c94
fix: RdbTest.LoadStream3 incorrect file usage (#4242)
fix: RdbTest.LoadStream3 used incorrect file
2024-12-02 17:58:18 +02:00
Shahar Mike
779bba71f9
fix: Fix test_network_disconnect_during_migration test (#4224)
There are actually a few failures fixed in this PR, only one of which is a test bug:

* `db_slice_->Traverse()` can yield, causing `fiber_cancelled_`'s value to change
* When a migration is cancelled, it may never finish `WaitForInflightToComplete()` because it has `in_flight_bytes_` that will never reach destination due to the cancellation
* `IterateMap()` with numeric key/values overrode the key's buffer with the value's buffer

Fixes #4207
2024-12-02 15:55:23 +02:00
Roman Gershman
dcee9a9874
fix: bugs in stream code (#4239)
* fix: bugs in stream code

1. Memory leak in streamGetEdgeID
2. Addresses CVE-2022-31144
3. Fixes XAUTOCLAIM bugs and adds tests.
4. Limits the count argument in XAUTOCLAIM command to 2^18 (CVE-2022-35951)

Also fixes #3830

---------

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
Signed-off-by: Roman Gershman <romange@gmail.com>
Co-authored-by: Shahar Mike <chakaz@users.noreply.github.com>
2024-12-02 15:12:14 +02:00
Roman Gershman
91aff49fcd
chore: fix bugs in stream_family (#4237)
1. Use transaction time in streams code, similarly to how we do it in other commands.
   Stop using mstime() and delete unused redis code.
2. Check for sequence overflow issue when passing huge sequence ids.
   Add a test.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-12-02 11:57:31 +02:00
andreibe
ada96d9041
Feat(Helm chart): Add env vars into pods (#4196)
* feat: update pod template

Signed-off-by: andreibe <95860450+andreibe24@users.noreply.github.com>

* fix: remove duplicate

Signed-off-by: andreibe <95860450+andreibe24@users.noreply.github.com>

* feat: update chart values.yaml

Signed-off-by: andreibe <95860450+andreibe24@users.noreply.github.com>

* feat: update README.md

Signed-off-by: andreibe <95860450+andreibe24@users.noreply.github.com>

* fix: change template behaviour on env

Signed-off-by: andreibe <andreibe24@users.noreply.github.com>

* chore: add helm ci tests

Signed-off-by: andreibe <andreibe24@users.noreply.github.com>

* fix: rerun go test

Signed-off-by: andreibe <andreibe24@users.noreply.github.com>

* test: add extra manifests

Signed-off-by: andreibe <andreibe24@users.noreply.github.com>

* fix: ci tests

Signed-off-by: andreibe <andreibe24@users.noreply.github.com>

---------

Signed-off-by: andreibe <95860450+andreibe24@users.noreply.github.com>
Signed-off-by: andreibe <andreibe24@users.noreply.github.com>
Co-authored-by: andreibe <andreibe24@users.noreply.github.com>
Co-authored-by: Tarun Pothulapati <tarun@dragonflydb.io>
2024-12-02 08:11:50 +00:00
Roman Gershman
c857ff98ad
chore: update command interface for bitops, bloom, zset families (#4235) 2024-12-02 00:25:37 +02:00
Roman Gershman
4a85c69db1
chore: support qlist compression when accounting for memory (#4233)
Also fix "debug objhist" so that its value histogram will show effective malloc
used distributions for all types.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-12-01 21:52:11 +02:00
Kostas Kyrimis
872e49b0b8
fix: command docs (#4229)
Signed-off-by: kostas <kostas@dragonflydb.io>
2024-11-30 16:53:22 +02:00
Roman Gershman
a4b3724929
chore: change the interface of hll, generic and list commands (#4227) 2024-11-29 14:02:51 +02:00
Roman Gershman
3ad5b387bd
chore: Track QList memory (#4226)
After running `debug POPULATE 100 list 100 rand type list elements 10000`
with `--list_experimental_v2=false`:

```
type_used_memory_list:16512800
used_memory:105573120
```

When running with `--list_experimental_v2=true`:

```
used_memory:105573120
type_used_memory_list:103601700
```

TODO: does not yet handle compressed entries correctly but we do not enable compression by default.

Fixes #3800

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-29 13:13:23 +02:00
Roman Gershman
68b7baf6a7
chore: qlist code clean ups (#4223)
Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-29 10:52:01 +02:00
Roman Gershman
183bfaeb67
chore: remove tail field from qlist (#4220)
Also update license's change date.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-28 18:27:48 +00:00
Kostas Kyrimis
4aece00aac
chore: add noop docs subcmd (#4214)
* add noop subcommand DOCS to COMMAND
2024-11-28 19:03:04 +02:00
Roman Gershman
010bd8add4
chore: change the interface of stream and server commands (#4219) 2024-11-28 18:44:01 +02:00
Roman Gershman
c9654d4050
chore: Add more qlist tests (#4217)
* chore: Add more qlist tests

Also fix a typo bug in NodeAllowMerge.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>

* chore: fix build

---------

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-28 14:54:13 +00:00
Borys
dc04b196d5
test: fix and unskip test_migration_timeout_on_sync (#4216) 2024-11-28 14:54:17 +02:00
adiholden
90b4fea0d9
bug(replication): snapshot cleanup fix in transition to stable sync (#4211)
Signed-off-by: adi_holden <adi@dragonflydb.io>
2024-11-28 08:38:36 +02:00
adiholden
369899a40a chore(helm-chart): update to v1.25.4 2024-11-27 15:39:53 +00:00
Borys
d6f2b76666
fix: cluster_mgr script (#4210) 2024-11-27 14:09:19 +00:00
Roman Gershman
57fd5f16a7
chore: update command interface for hset/set families (#4209) 2024-11-27 14:00:30 +00:00
Stepan Bagritsevich
bd143e4b81
fix(search_family): Fix crash when no SEPARATOR is specified in the FT.CREATE command (#4205)
fix(search_family): fix(search_family): Fix crash when no SEPARATOR is specified in the FT.CREATE command

Signed-off-by: Stepan Bagritsevich <stefan@dragonflydb.io>
2024-11-27 16:30:36 +04:00
oOraph
1ceca471be
feat(contrib/helm): evaluate the provided passwordSecretName value as a template (#4046)
* feat(contrib/helm): evaluate the provided passwordSecretName value as a template

Useful to reuse some defined variables or functions directly to compute the value
(external chart for instance, that depends on this one)

example:
'{{ include "something.defined.elsewhere" $ }}-secrets'

Signed-off-by: Raphael Glon <oOraph@users.noreply.github.com>

* update golden tests

---------

Signed-off-by: Raphael Glon <oOraph@users.noreply.github.com>
Co-authored-by: Raphael Glon <oOraph@users.noreply.github.com>
Co-authored-by: Tarun Pothulapati <tarun@dragonflydb.io>
2024-11-27 17:33:18 +05:30
Roman Gershman
a87d6aecef
chore: fully support qlist in all list_family commands (#4201)
Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-27 13:56:56 +02:00
Kostas Kyrimis
66e0fd0908
fix: stream memory tracking (#4067)
* add object memory usage for streams
* add test
2024-11-27 12:41:08 +02:00
Roman Gershman
065a63cab7
chore: qlist improvements (#4194)
fix: qlist improvements + bug fix in Erase

1. Reduce code duplication.
2. Expose qlist node count via "debug object"
3. Add more tests to qlist_test
4. Fix a bug in QList::Erase

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-27 11:28:40 +02:00
Roman Gershman
45f8e8446f
chore: get back on the decision to put a hard limit on command interface (#4203)
* chore: get back on the decision to put a hard limit on command interface

Limiting commands to only Transaction* and SinkReplyBuilder does not hold.
We need sometimes to access context fields for multitude of reasons.

But I do not want to pass the huge ConnectionContext object because, it's hard
then to track unusual access patterns.

The compromise: to introduce CommandContext that currently has tx, rb and extended fields.
It will be relatively easy to identify irregular access patterns by tracking the extended field.

This commit is the first one in series of probably 10-15 commits. No functional changes here.

---------

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-27 11:28:02 +02:00
Borys
3327e1a908
feat: add ability reading stream_listpacks_2/3 rdb types (#4192)
* feat: add ability reading stream_listpacks_2/3 rdb types

* refactor: address comments
2024-11-26 16:43:30 +02:00
Roman Gershman
f84e1eeac8
fix: debug object encoding names (#4188)
Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-26 16:11:18 +02:00
Kostas Kyrimis
2f748c24dd
chore: fix false positives sanitizers (#4190)
* disable false positive

Signed-off-by: kostas <kostas@dragonflydb.io>
2024-11-26 11:49:20 +02:00
Borys
0531c39aae
test: skip test_cluster_mgr because of unclosed instance (#4191) 2024-11-26 09:34:06 +00:00
dependabot[bot]
5c84f21caf
chore(deps): bump github/codeql-action from 3.27.4 to 3.27.5 in the actions group (#4186)
chore(deps): bump github/codeql-action in the actions group

Bumps the actions group with 1 update: [github/codeql-action](https://github.com/github/codeql-action).


Updates `github/codeql-action` from 3.27.4 to 3.27.5
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](ea9e4e3799...f09c1c0a94)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: actions
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-26 10:04:40 +02:00
Roman Gershman
1709061ae6
chore: stop periodic task earlier during the shutdown process (#4187)
Fixes #4151

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-26 10:02:15 +02:00
romange
e7b49fa1c4 chore(helm-chart): update to v1.25.3 2024-11-26 02:24:10 +00:00
Roman Gershman
2c663f3833
chore: produce core files in regtests (#4185)
Should work only for self-hosted runners.
The core files will be kept in /var/crash/
We also copy automatically dragonfly binary into /var/crash to be able to debug later.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-25 17:13:11 +00:00
Roman Gershman
63742dd0cf
fix: stop using openssl for container healthchecks (#4181)
Dragonfly responds to ascii based requests to tls port with:
`-ERR Bad TLS header, double check if you enabled TLS for your client.`

Therefore, it is possible to test now both tls and non-tls ports with a plain-text PING.
Fixes #4171

Also, blacklist the bloom-filter test that Dragonfly does not support yet.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-25 17:41:17 +02:00
Roman Gershman
7ac1631424
fix: deduplicate mget response (#4175)
* fix: deduplicate mget response

In case of duplicate mget keys, skips fetching the same key twice.
The optimization is straighforward - we just copy the response for the original key,
since the response is a shallow object, we potentially save lots of memory with this
deduplication. Always deduplicate inside OpMGet.

---------

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-25 17:29:53 +02:00
Borys
43c83d29fa
feat: cluster migrations restarts immediately if timeout happens (#4081)
* feat: cluster migrations restarts immediately if timeout happens

* feat: add DEBUG MIGRATION PAUSE command
2024-11-25 16:02:22 +02:00
Shahar Mike
3c65651c69
feat: Huge values breakdown in cluster migration (#4144)
* feat: Huge values breakdown in cluster migration

Before this PR we used `RESTORE` commands for transferring data between
source and target nodes in cluster slots migration.

While this _works_, it has a side effect of consuming 2x memory for huge
values (i.e. if a single key's value takes 10gb, serializing it will
take 20gb or even 30gb).

With this PR we break down huge keys into multiple commands (`RPUSH`,
`HSET`, etc), respecting the existing `--serialization_max_chunk_size`
flag.

Part of #4100
2024-11-25 15:58:18 +02:00
Stepan Bagritsevich
2b3c182cc9
fix(search_family): Fix LOAD fields parsing in the FT.AGGREGATE and FT.SEARCH commands (#4012)
* fix(search_family): Fix LOAD fields parsing in the FT.AGGREGATE and FT.SEARCH commands

fixes dragonflydb#3989

Signed-off-by: Stsiapan Bahrytsevich <stefan@dragonflydb.io>

* refactor: address comments

Signed-off-by: Stepan Bagritsevich <stefan@dragonflydb.io>

* refactor(search_family): Address comments 2

Signed-off-by: Stepan Bagritsevich <stefan@dragonflydb.io>

* refactor(search_family): address comments 3

Signed-off-by: Stepan Bagritsevich <stefan@dragonflydb.io>

* refactor(search_family): address comments 4

Signed-off-by: Stepan Bagritsevich <stefan@dragonflydb.io>

* refactor(search_family): address comments 5

Signed-off-by: Stepan Bagritsevich <stefan@dragonflydb.io>

---------

Signed-off-by: Stsiapan Bahrytsevich <stefan@dragonflydb.io>
Signed-off-by: Stepan Bagritsevich <stefan@dragonflydb.io>
2024-11-25 09:50:31 +00:00