ofekshenawa
f711eb0f62
feat(cluster): Implement Request and Response Policy Based Routing in Cluster Mode ( #3422 )
...
* Add search module builders and tests (#1 )
* Add search module builders and tests
* Add tests
* Use builders and Actions in more clean way
* Update search_builders.go
Co-authored-by: Nedyalko Dyakov <1547186+ndyakov@users.noreply.github.com >
* Update search_builders.go
Co-authored-by: Nedyalko Dyakov <1547186+ndyakov@users.noreply.github.com >
* Apply suggestions from code review
Co-authored-by: Nedyalko Dyakov <1547186+ndyakov@users.noreply.github.com >
* feat(routing): add internal request/response policy enums
* feat: load the policy table in cluster client (#4 )
* feat: load the policy table in cluster client
* Remove comments
* modify Tips and command pplicy in commandInfo (#5 )
* centralize cluster command routing in osscluster_router.go and refactor osscluster.go (#6 )
* centralize cluster command routing in osscluster_router.go and refactor osscluster.go
* enalbe ci on all branches
* Add debug prints
* Add debug prints
* FIX: deal with nil policy
* FIX: fixing clusterClient process
* chore(osscluster): simplify switch case
* wip(command): ai generated clone method for commands
* feat: implement response aggregator for Redis cluster commands
* feat: implement response aggregator for Redis cluster commands
* fix: solve concurrency errors
* fix: solve concurrency errors
* return MaxRedirects settings
* remove locks from getCommandPolicy
* Handle MOVED errors more robustly, remove cluster reloading at exectutions, ennsure better routing
* Fix: supports Process hook test
* Fix: remove response aggregation for single shard commands
* Add more preformant type conversion for Cmd type
* Add router logic into processPipeline
---------
Co-authored-by: Nedyalko Dyakov <nedyalko.dyakov@gmail.com >
* remove thread debugging code
* remove thread debugging code && reject commands with policy that cannot be used in pipeline
* refactor processPipline and cmdType enum
* remove FDescribe from cluster tests
* Add tests
* fix aggregation test
* fix mget test
* fix mget test
* remove aggregateKeyedResponses
* added scaffolding for the req-resp manager
* added default policies for the search commands
* split command map into module->command
* cleanup, added logic to refresh the cache
* added reactive cache refresh
* revert cluster refresh
* fixed lint
* addresed first batch of comments
* rewrote aggregator implementations with atomic for native or nearnative primitives
* addressed more comments, fixed lint
* added batch aggregator operations
* fixed lint
* updated batch aggregator, fixed extractcommandvalue
* fixed lint
* added batching to aggregateResponses
* fixed deadlocks
* changed aggregator logic, added error params
* added preemptive return to the aggregators
* more work on the aggregators
* updated and and or aggregators
* fixed lint
* added configurable policy resolvers
* slight refactor
* removed the interface, slight refactor
* change func signature from cmdName to cmder
* added nil safety assertions
* few small refactors
* added read only policies
* removed leftover prints
* Rebased to master, resolved comnflicts
* fixed lint
* updated gha
* fixed tests, minor consistency refactor
* preallocated simple errors
* changed numeric aggregators to use float64
* speculative test fix
* Update command.go
Co-authored-by: Nedyalko Dyakov <1547186+ndyakov@users.noreply.github.com >
* Update main_test.go
Co-authored-by: Nedyalko Dyakov <1547186+ndyakov@users.noreply.github.com >
* Add static shard picker
* Fix nil value handling in command aggregation
* Modify the Clone method to return a shallow copy
* Add clone method to digest command
* Optimize keyless command routing to respect ShardPicker policy
* Remove MGET references
* Fix MGET aggregation to map individual values to keys across shards
* Add clone method to hybrid search commands
* Undo changes in route keyless test
* remove comments
* Add test for DisableRoutingPolicies option
* Add Routing Policies Comprehensive Test Suite and Fix multi keyed aggregation for different step
---------
Co-authored-by: Nedyalko Dyakov <1547186+ndyakov@users.noreply.github.com >
Co-authored-by: Nedyalko Dyakov <nedyalko.dyakov@gmail.com >
Co-authored-by: Hristo Temelski <hristo.temelski@redis.com >
2025-11-28 11:46:23 +02:00
Nedyalko Dyakov
0ef6d0727d
feat: RESP3 notifications support & Hitless notifications handling [CAE-1088] & [CAE-1072] ( #3418 )
...
- Adds support for handling push notifications with RESP3.
- Using this support adds handlers for hitless upgrades.
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: Hristo Temelski <hristo.temelski@redis.com >
2025-09-10 22:18:01 +03:00
Amir Salehi
43e7fb5eef
test(util): add unit tests for Atoi, ParseInt, ParseUint, and ParseFloat ( #3377 )
2025-05-15 14:53:54 +03:00
ofekshenawa
42c32846e6
utils: export ParseFloat and MustParseFloat wrapping internal utils ( #3371 )
...
* utils: expose ParseFloat via new public utils package
* add tests for special float values in vector search
2025-05-09 12:24:36 +03:00
Tong Zhaoqi
15682e3227
feat: support write the types of pointer of simple data types ( #2745 ) ( #2753 )
...
Co-authored-by: ofekshenawa <104765379+ofekshenawa@users.noreply.github.com >
2023-10-31 07:17:22 +02:00
Tiago Peczenyj
e8ad794e96
Format code and fix go vet ( #2696 )
...
* run go fix ./...
Signed-off-by: Tiago Peczenyj <tpeczenyj@weborama.com >
* run make fmt
Signed-off-by: Tiago Peczenyj <tpeczenyj@weborama.com >
* fix go vet ./... issues
* Update README.md
Reorder imports with the rules defined in the Makefile
as if we run `make fmt`
* run gofumpt -w .
* update Makefile to use gofumpt instead gofmt
* increment makefile
* format test
* format tests
Signed-off-by: Tiago Peczenyj <tpeczenyj@weborama.com >
---------
Signed-off-by: Tiago Peczenyj <tpeczenyj@weborama.com >
Co-authored-by: ofekshenawa <104765379+ofekshenawa@users.noreply.github.com >
2023-09-20 14:03:44 +03:00
Vladimir Mihailenco
9b6ee9c3cc
chore: gofmt all code
2021-09-08 16:52:29 +03:00
Vladimir Mihailenco
0197108027
Use bufio.Writer
2018-08-17 14:14:02 +03:00
Vladimir Mihailenco
56dea1f39a
Fix proto.RedisError in slices
2018-02-22 14:24:27 +02:00