Commit Graph

2857 Commits

Author SHA1 Message Date
romange
7d6f745636 chore(helm-chart): update to v1.25.2 2024-11-21 00:02:14 +00:00
Shahar Mike
24a1ec6ab2
fix: Huge entries fail to load outside RDB / replication (#4154)
* fix: Huge entries fail to load outside RDB / replication

We have an internal utility tool that we use to deserialize values in
some use cases:

* `RESTORE`
* Cluster slot migration
* `RENAME`, if the source and target shards are different

We [recently](https://github.com/dragonflydb/dragonfly/issues/3760)
changed this area of the code, which caused this regression as it only
handled RDB / replication streams.

Fixes #4143
2024-11-20 14:00:07 +00:00
Roman Gershman
36135f516f
fix: test_replication_all failure (#4155)
Fixes #4150. The failure can be reproduced with high probability on ARM via
`pytest dragonfly/replication_test.py -k test_replication_all[df_factory0-mode0-8-t_replicas3-seeder_config3-2000-False]`

Not sure why this barrier is needed but #4146 removes the barrier
which breaks a gentle balance in the code in unexpected way.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-20 14:00:28 +02:00
Roman Gershman
0e7ae34fe4
fix: enforce load limits when loading snapshot (#4136)
* fix: enforce load limits when loading snapshot

Prevent loading snapshots with used memory higher than max memory limit.

1. Store the used memory metadata only inside the summary file
2. Load the summary file before loading anything else, and if the used-memory is higher,
   abort the load.
---------

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-20 06:12:47 +02:00
Borys
4e7800f94f
fix: UB during cmd squashing reply size calculation (#4149)
* fix: UB during cmd squashing reply size calculation

* feat: add promtheus metric commands_squashing_replies_bytes
2024-11-19 13:40:30 +02:00
Roman Gershman
794bd1cdb3
chore: tune logs and improve restrict denied error (#4145)
1. Now error stats show "restrict_denied" instead of "Cannot execute restricted command ..." error.
2. Increased verbosity level when loading a key with expired timestamp.
3. pulled helio with better logs coverage of tls_socket.cc code.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-18 23:14:14 +02:00
dependabot[bot]
907346e3e6
chore(deps): bump github/codeql-action from 3.27.1 to 3.27.4 in the actions group (#4148)
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.1 to 3.27.4
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](4f3212b617...ea9e4e3799)

---
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-18 23:05:42 +02:00
Roman Gershman
d467a348ac
fix: allow SELECT in multi/exec if it's a noop (#4146)
Fixes #4120

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-18 22:27:34 +02:00
Borys
e16ef838e4
feat: add INFO memory section for squashing replies memory consuming (#4147)
* feat: add INFO memory section for squashing replies memory consuming

* refactor: address comments
2024-11-18 21:16:41 +02:00
Borys
5e2b48c3f3
fix: migration ACK response processing (#4140) 2024-11-18 09:28:07 +02:00
Roman Gershman
ee01dc4fb5
chore: fix a potential crash during client list (#4141) 2024-11-18 06:32:30 +02:00
Daniel M
d241839cff
chore:update fakeredis, remove irrelevant tests (#4014)
* chore:update fakeredis, remove irrelevant tests
2024-11-17 20:24:46 +02:00
adiholden
59c81fb98a
fix server: fix write to slowlog on squashing flow (#4138)
Signed-off-by: adi_holden <adi@dragonflydb.io>
2024-11-17 16:03:30 +02:00
Roman Gershman
8bd2b9ed3e
chore: optimize info command (#4137)
* chore: optimize info command

    Info command has a large latency when returning all the sections.
    But often a single section is required. Specifically,
    SERVER and REPLICATION sections are often fetched by clients
    or management components.

    This PR:
    1. Removes any hops for "INFO SERVER" command.
    2. Removes some redundant stats.
    3. Prints latency stats around GetMetrics command if it took to much.

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

* Update src/server/server_family.cc

Co-authored-by: Shahar Mike <chakaz@users.noreply.github.com>
Signed-off-by: Roman Gershman <romange@gmail.com>

* chore: remove GetMetrics dependency from the REPLICATION section

Also, address comments

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

* fix: clang build

---------

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-11-17 13:33:29 +02:00
Roman Gershman
8e3b8ccbe3
chore: run tests with list_experimental_v2 enabled (#4112)
Also fix issues with memory_test.py running locally.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-15 10:33:45 +01:00
Roman Gershman
2ff6bf35c1
chore: improve the state machine of RedisParser (#4085)
1. Simplify conditions inside the main loop.
2. Improve the logic inside ConsumeBulk() function.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-15 11:14:50 +02:00
Roman Gershman
c46cb2514f
chore: fix plain node insertion (#4134)
The blob allocation had invalid size and the value has never been copied.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-14 23:53:34 +02:00
adiholden
db67b35f8e
fix server: fix stats of pipeline squashed commands (#4132)
Signed-off-by: adi_holden <adi@dragonflydb.io>
2024-11-14 20:57:05 +02:00
dependabot[bot]
a887d822a9
chore(deps): bump github/codeql-action from 3.27.0 to 3.27.1 in the actions group (#4115)
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.0 to 3.27.1
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](662472033e...4f3212b617)

---
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-14 19:28:25 +02:00
Shahar Mike
1513134247
fix: Use MOVED error type for moved replies (#4125)
**The problem:**

When in cluster mode, `MOVED` replies (which are arguably not even errors) are aggregated per slot-id + remote host, and displayed in `# Errorstats` as such. For example, in a server that does _not_ own 8k slots, we will aggregate 8k different errors, and their counts (in memory).

This slows down all `INFO` replies, takes a lot of memory, and also makes `INFO` replies very long.

**The fix:**

Use `type` `MOVED` for moved replies, making them all the same under `# Errorstats`

Fixes #4118
2024-11-14 13:12:38 +02:00
Shahar Mike
f04e5497bc
fix: Do not use cc_ in connection if it's null (#4131)
* fix: Do not use `cc_` in connection if it's null

This is a rare condition, which we know can happen during shutdown (see
[here](https://github.com/dragonflydb/dragonfly/pull/3873#issue-2568503374))

* add comment
2024-11-14 12:41:51 +02:00
Roman Gershman
ab6088f5d6
chore: simplify BumpUps deduplication (#4098)
* chore: simplify BumpUps deduplication

This pr #2474 introduced iterator protection by
tracking which keys where bumped up during the transaction operation.
This was done by managing keys view set. However, this can be simplified
using fingerprints. Also, fingerprints do not require that the original keys exist.

In addition, this #3241 PR introduces FetchedItemsRestorer that tracks bumped set and
saves it to protect against fiber context switch. My claim is that it's redundant.
Since we only keep the auto-laundering iterators, when a fiber preempts these iterators recognize it
(see IteratorT::LaunderIfNeeded) and refresh themselves anyway.

To summarize: fetched_items_ protect us from iterator invalidation during atomic scenarios,
and auto-laundering protects us from everything else, so fetched_items_ can be cleared in that case.
---------

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-13 17:27:53 +02:00
adiholden
fb84d47b4d
feat server: experimental_new_io flag add as deprecated (#4127)
* feat server: experimental_new_io flag add as deprecated

Signed-off-by: adi_holden <adi@dragonflydb.io>
2024-11-13 13:29:40 +00:00
Borys
4bc9ad6f01
test: add test for snapshoting during migration (#4108)
* test: add test for snapshotting during migration

* test: add test to run replication after migration
2024-11-13 13:40:00 +02:00
Kostas Kyrimis
91c236ab2f
fix: slow CI tests (#4117)
* refactor test_big_value_serialization
* remove no needed replication tests for big value

---------

Signed-off-by: kostas <kostas@dragonflydb.io>
2024-11-13 10:32:31 +02:00
romange
7815c8d3d7 chore(helm-chart): update to v1.25.1 2024-11-12 08:04:45 +00:00
Roman Gershman
fa8f3f5564
fix: regression in squashing code when determining eval commands (#4116)
The regression was caused by #3947 and it causes crashes in bullmq.
It has not been found till now because python client sends commands in uppercase.
Fixes #4113

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
Co-authored-by: Kostas Kyrimis <kostas@dragonflydb.io>
2024-11-11 19:54:47 +00:00
Kostas Kyrimis
0facd6fd8f
fix: skip Send() in SinkReplyBuilder::Flush() when vec is empty (#4114)
* skip Send() in SinkReplyBuilder::Flush() when vec is empty

Signed-off-by: kostas <kostas@dragonflydb.io>
2024-11-11 17:53:30 +00:00
adiholden
3ab244616a
feat(server) : snapshot traverse physical buckets (#4084)
Signed-off-by: adi_holden <adi@dragonflydb.io>
2024-11-11 14:49:20 +02:00
Roman Gershman
79aa5d490d
chore: support rdb loading and container utils with QList. (#4109)
generic_family_test and rdb_test pass with qlist enabled.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-11 12:13:10 +02:00
romange
745db2c82f chore(helm-chart): update to v1.25.0 2024-11-11 07:48:44 +00:00
Roman Gershman
50473b56aa
chore: decouple reply_builder from ConnectionContext (#4069)
Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-10 21:14:24 +02:00
Roman Gershman
9b7af7d750
chore: implement Erase for a range (#4106)
chore: implement Erase with a range

Also migrate more unit tests from valkey repo.
Finally, fix OpTrim

All tests `list_family_test --list_experimental_v2` pass.

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

chore: implement OpTrim with QList
2024-11-10 16:33:34 +00:00
Stepan Bagritsevich
503bb4ed33
fix(search_family): Process wrong field types in indexes for the FT.SEARCH and FT.AGGREGATE commands (#4070)
* fix(search_family): Process wrong field types in indexes for the FT.SEARCH and FT.AGGREGATE commands

fixes  #3986
---------

Signed-off-by: Stepan Bagritsevich <stefan@dragonflydb.io>
2024-11-10 16:56:25 +02:00
Roman Gershman
f745f3133d
chore: Implement LMOVE over QList (#4104)
* chore: Implement LMOVE over QList

All tests in list_family_test besides LTrim pass.

---------

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-10 13:47:01 +00:00
Roman Gershman
1eef773d0a
fix: test_noreply_pipeline flakiness (#4102)
Fixes #3896. Now we retry several times.
In my checks this should significantly reduce the failure probability.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-10 13:39:24 +02:00
Borys
ab86d358b0
fix: update instruction how to build from the source for ubuntu (#4103) 2024-11-10 11:21:07 +00:00
Roman Gershman
be96e6cf99
chore: change Namespaces to be a global pointer (#4032)
* chore: change Namespaces to be a global pointer

Before the namespaces object was defined globally.
However it has non-trivial d'tor that is being called after main exits.
It's quite dangerous to have global non-POD objects being defined globally.
For example, if we used LOG(INFO) inside the Clear function , that would crash dragonfly on exit.

Ths PR changes it to be a global pointer.

---------

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-10 10:45:53 +00:00
Roman Gershman
9366c67464
chore: Implement list Pop/Erase functionality with QList (#4099)
Adjusted OpRem/OpBPop/OpPop

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-10 12:37:42 +02:00
Roman Gershman
c43ba5f2cc
chore: RdbSerializer::SaveListObject supports QList (#4101)
Now, `./rdb_test --list_experimental_v2` passes.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-10 12:35:24 +02:00
Vladislav
eadce55b67
chore: remove old io (#3953)
* chore: Remove old IO

* fix: fix last error accounting
* chore: use unique_ptr<char> in MGetResponse storage

---------

Signed-off-by: Vladislav Oleshko <vlad@dragonflydb.io>
2024-11-10 11:56:41 +02:00
adiholden
2d49a28c15
fix(server): handle running script load inside multi (#4074)
Signed-off-by: adi_holden <adi@dragonflydb.io>
2024-11-10 09:34:40 +02:00
Roman Gershman
75c961e7ed
chore: Add initial bindings for QList in list_family (#4093)
The feature is guarded by list_experimental_v2 flag, which is disabled.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-10 07:40:50 +02:00
Roman Gershman
1819e51f78
chore: implement QList::Erase functionality (#4092)
* chore: implement QList::Erase functionality

    Also add a parametrized test covering fill/compress options.
    Fix a compression bug introduced when copying the code.
    Introduce move c'tor/operator.

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

* chore: implement QList::Replace functionality

Also add a parametrized test covering fill/compress options.

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

---------

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-09 20:06:32 +02:00
Kostas Kyrimis
d3ef0a3630
fix(sanitizers): disable false positive FtProfileInvalidQuery (#4090)
* disable FtProfileInvalidQuery 

Signed-off-by: kostas <kostas@dragonflydb.io>
2024-11-08 18:46:54 +02:00
Roman Gershman
5838ed99b4
chore: implement QList::Insert function (#4087)
* chore: implement QList::Insert function

Also add a basic test for Insertion.
Prepare the skeleton for Replace functionality.
---------

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-08 11:33:37 +00:00
Vladislav
b860b712c0
chore(acl): Implicit categories (#3411)
Most of our CO:: categories became meaningless with the introduction of acl. For example, CO::FAST literally doesn't mean anything, it's never read or used.

* add implicit categories

---------

Signed-off-by: Vladislav Oleshko <vlad@dragonflydb.io>
2024-11-08 12:40:56 +02:00
Roman Gershman
c9537bb52e
chore: implement QList::Iterate (#4086)
Also, copy the main flow for the Insert function.
It's not finished yet, hence no tests yet.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-08 11:19:54 +02:00
Blanky
43060ba79e
chore(dependabot): Allows only security patches (#4075)
* feat(dependabot): Add dependabot to check for vulnerabilies and update dependencies

---------

Signed-off-by: BLANKatGITHUB <131886247+BLANKatGITHUB@users.noreply.github.com>
Signed-off-by: Blanky <131886247+BLANKatGITHUB@users.noreply.github.com>
2024-11-08 08:08:33 +02:00
Roman Gershman
41d8df6e11
Add index based iterator to QList interface (#4083)
chore: add index based iterator to the interface

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2024-11-07 19:26:57 +00:00