1
0
mirror of https://github.com/redis/go-redis.git synced 2025-12-03 18:31:14 +03:00
Commit Graph

2766 Commits

Author SHA1 Message Date
Nedyalko Dyakov
15872f52be Merge branch 'master' into implement-tls-url-parameters-pr2076 2025-10-21 12:00:21 +03:00
Hristo Temelski
7aa4a60667 update gomods to align them with the latest beta (#3539)
Co-authored-by: Nedyalko Dyakov <1547186+ndyakov@users.noreply.github.com>
2025-10-21 11:28:04 +03:00
Hristo Temelski
1e6ee06740 test(e2e): testing framework upgrade (#3541)
* update e2e test, change script

* update script and tests

* fixed bdbid parsing

* disabled majority of tests, swapped event order

* change the config tag

* revert test order

* fix typo

* reenable all e2e tests

* change the clonfig flag key for all e2e tests

* improve logging for debug purposes of tests

* longer deadline for FI in CI

* increase waiting for notifications

* extend tests

* dont fail on flaky third client

* fi new params

* fix test build

* more time for migrating

* first wait for FI action, then assert notification

* fix test build

* fix tests

* fix tests

* change output

* global print logs for tests

* better output

* fix error format

* maybe the notification is already received

* second and third client fix

* print output if failed

* better second and third client checks

* output action data if notification is not received

* stop command runner

* database create / delete actions

* database create / delete actions used in tests

* fix import

* remove example

* remove unused var

* use different port than the one in env

* wait for action to get the response

* fix output

* fix create db config

* fix create db config

* use new database for client

* fix create db config

* db per scenario

* less logs, correct check

* Add CTRF to the scenario tests (#3545)

* add some json ctrf improvements

* fix -v

* attempt to separate the output

---------

Co-authored-by: Nedyalko Dyakov <1547186+ndyakov@users.noreply.github.com>

---------

Co-authored-by: Nedyalko Dyakov <nedyalko.dyakov@gmail.com>
Co-authored-by: kiryazovi-redis <ivaylo.kiryazov@redis.com>
Co-authored-by: Nedyalko Dyakov <1547186+ndyakov@users.noreply.github.com>
2025-10-17 17:23:10 +03:00
Jason Parraga
f7eed76fbc Add support for filtering traces for certain commands (#3519)
* Add support for filtering commands when tracing

Signed-off-by: Jason Parraga <sovietaced@gmail.com>

* Filter sensitive data by default

Signed-off-by: Jason Parraga <sovietaced@gmail.com>

* Address comments

Signed-off-by: Jason Parraga <sovietaced@gmail.com>

---------

Signed-off-by: Jason Parraga <sovietaced@gmail.com>
Co-authored-by: Nedyalko Dyakov <1547186+ndyakov@users.noreply.github.com>
2025-10-14 18:15:58 +03:00
dependabot[bot]
3d68c7e42f chore(deps): bump github/codeql-action from 3 to 4 (#3544)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3 to 4.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-10-14 16:18:39 +03:00
Feng.YJ
3ad9f9cb23 fix: add missing error variable for non-unix build constraints (#3538)
* fix: add missing error variable for non-unix build constraints

* chore: name "_" for unused parameters

---------

Co-authored-by: Elena Kolevska <elena-kolevska@users.noreply.github.com>
2025-09-29 09:35:04 +03:00
Hristo Temelski
a44df88257 version 9.15.1, used to retract itself and 9.15.0 (#3537)
* version 9.15.1, used to retract itself and 9.15.0

* added retract to the submodules

* revert submodules retracts as they are not needed
extra/redisotel/v9.15.1 extra/rediscensus/v9.15.1 extra/redisprometheus/v9.15.1 v9.15.1 extra/rediscmd/v9.15.1
2025-09-27 23:33:54 +03:00
Hristo Temelski
819f01b489 retract wrongly released version (#3533) extra/redisotel/v9.16.0-beta.1 extra/redisprometheus/v9.16.0-beta.1 extra/rediscensus/v9.16.0-beta.1 v9.16.0-beta.1 extra/rediscmd/v9.16.0-beta.1 2025-09-27 15:38:46 +01:00
Hristo Temelski
7405cff430 depreciate 9.15.0 (#3532) extra/rediscensus/v9.15.0-beta.3 extra/rediscmd/v9.15.0-beta.3 extra/redisotel/v9.15.0-beta.3 extra/redisprometheus/v9.15.0-beta.3 v9.15.0-beta.3 2025-09-27 02:17:21 +03:00
Hristo Temelski
8b38e27f97 release: 9.15.0-beta.2 (#3531) extra/redisprometheus/v9.15.0-beta.2 extra/redisotel/v9.15.0-beta.2 v9.15.0-beta.2 extra/rediscmd/v9.15.0-beta.2 extra/rediscensus/v9.15.0-beta.2 2025-09-26 19:40:07 +03:00
Nedyalko Dyakov
75ddeb3d5a feat(e2e-testing): maintnotifications e2e and refactor (#3526)
* e2e wip

* cleanup

* remove unused fault injector mock

* errChan in test

* remove log messages tests

* cleanup log messages

* s/hitless/maintnotifications/

* fix moving when none

* better logs

* test with second client after action has started

* Fixes

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Test fix

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* feat(e2e-test): Extended e2e tests

* imroved e2e test resiliency

---------

Signed-off-by: Elena Kolevska <elena@kolevska.com>
Co-authored-by: Elena Kolevska <elena@kolevska.com>
Co-authored-by: Elena Kolevska <elena-kolevska@users.noreply.github.com>
Co-authored-by: Hristo Temelski <hristo.temelski@redis.com>
2025-09-26 19:17:09 +03:00
Hristo Temelski
e6e52bc735 feat(tag.sh): Improved resiliency of the release process (#3530) 2025-09-26 18:35:29 +03:00
cxljs
113a18ae75 fix: pipeline repeatedly sets the error (#3525)
* fix: pipeline repeatedly sets the error

Signed-off-by: Xiaolong Chen <fukua95@gmail.com>

* add test

Signed-off-by: Xiaolong Chen <fukua95@gmail.com>

* CI

Signed-off-by: Xiaolong Chen <fukua95@gmail.com>

---------

Signed-off-by: Xiaolong Chen <fukua95@gmail.com>
Co-authored-by: Nedyalko Dyakov <1547186+ndyakov@users.noreply.github.com>
2025-09-17 17:32:24 +03:00
Omid Hosseini
286735bef1 chore(docs): Update hash_commands.go (#3523)
add ctx for clarification when reading docs in comments
2025-09-17 12:18:24 +03:00
dependabot[bot]
363fa8eeb4 chore(deps): bump rojopolis/spellcheck-github-actions (#3520)
Bumps [rojopolis/spellcheck-github-actions](https://github.com/rojopolis/spellcheck-github-actions) from 0.51.0 to 0.52.0.
- [Release notes](https://github.com/rojopolis/spellcheck-github-actions/releases)
- [Changelog](https://github.com/rojopolis/spellcheck-github-actions/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rojopolis/spellcheck-github-actions/compare/0.51.0...0.52.0)

---
updated-dependencies:
- dependency-name: rojopolis/spellcheck-github-actions
  dependency-version: 0.52.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-16 00:51:18 +03:00
Nedyalko Dyakov
0dcfeefea7 chore(release): 9.15.0-beta.1 (#3514) v9.15.0-beta.1 extra/redisprometheus/v9.15.0-beta.1 extra/redisotel/v9.15.0-beta.1 extra/rediscensus/v9.15.0-beta.1 extra/rediscmd/v9.15.0-beta.1 2025-09-10 23:02:16 +03: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
Hristo Temelski
2da6ca07c0 chore(release): Update the rest of the versions (#3513)
* chore(release): Update the rest of the versions

* improved tag script
extra/rediscensus/v9.14.0 extra/redisotel/v9.14.0 extra/rediscmd/v9.14.0 v9.14.0 extra/redisprometheus/v9.14.0
2025-09-10 15:01:18 +03:00
Hristo Temelski
c11a704481 chore(release): v9.14.0 (#3512) 2025-09-10 14:33:08 +03:00
Elena Kolevska
8f5469abd0 chore(ci): Update release drafter config to exclude dependabot (#3511)
Exclude 'dependabot' from contributors in release drafter config.
2025-09-10 12:55:22 +03:00
Nedyalko Dyakov
a264ffb8a4 fix: SetErr on Cmd if the command cannot be queued correctly in multi/exec (#3509)
* set error if queued fails

* try fix for cluster

* add errors to cmds in pipeline if about to be returned
2025-09-09 18:45:37 +03:00
Hristo Temelski
e0853aba63 Added batch process method to the pipeline (#3510)
* Added batch process method to the pipeline

* Added Process and BatchProcess tests

* Fix test matching
2025-09-09 18:10:17 +03:00
dependabot[bot]
65e1c22065 chore(deps): bump actions/setup-go from 5 to 6 (#3504)
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5 to 6.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](https://github.com/actions/setup-go/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-09-09 11:34:38 +03:00
Nedyalko Dyakov
52bda7a35a chore(release): 9.13.0 (#3500) extra/rediscmd/v9.13.0 v9.13.0 extra/redisprometheus/v9.13.0 extra/redisotel/v9.13.0 extra/rediscensus/v9.13.0 2025-09-03 14:52:32 +03:00
Matthew Hooker
19fdc488a7 chore(otel): register wait metrics (#3499) 2025-09-03 13:12:41 +03:00
Nedyalko Dyakov
56829d4925 Merge branch 'master' into implement-tls-url-parameters-pr2076 2025-09-02 16:03:17 +03:00
LINKIWI
10121e9e1c feat(osscluster): Support subscriptions against cluster slave nodes (#3480) 2025-09-02 16:03:00 +03:00
Jonathan Suever
6f41b600c5 fix(client): Do not assume that all non-IP hosts are loopbacks (#3085)
* Do not assume that all non-IP hosts are loopbacks

* handle localhost and Docker internal hostnames

---------

Co-authored-by: Nedyalko Dyakov <nedyalko.dyakov@gmail.com>
Co-authored-by: Nedyalko Dyakov <1547186+ndyakov@users.noreply.github.com>
Co-authored-by: ofekshenawa <ofek.shenawa@redis.com>
Co-authored-by: ofekshenawa <104765379+ofekshenawa@users.noreply.github.com>
2025-09-02 15:58:50 +03:00
Matthew Hooker
f0058063a9 feat(otel): Add wait metrics to otel (#3493)
* Add wait metrics to otel

* add unit
2025-09-02 15:48:18 +03:00
cxljs
fafec3f3ce Pipeliner expose queued commands (#3496)
* Pipeliner expose queued commands

Signed-off-by: Xiaolong Chen <fukua95@gmail.com>

* add tests and update some comments

Signed-off-by: Xiaolong Chen <fukua95@gmail.com>

---------

Signed-off-by: Xiaolong Chen <fukua95@gmail.com>
2025-09-01 17:44:26 +03:00
cxljs
6b9cbe8c54 fix(test): fix a timing issue in pubsub test (#3498)
Signed-off-by: Xiaolong Chen <fukua95@gmail.com>
2025-09-01 17:15:50 +03:00
Nedyalko Dyakov
e91f6ced09 fix(make test): Add default env in makefile (#3491)
* fix(make test): add default env in makefile

* Apply suggestion from @ndyakov

* update hardcoded version
2025-09-01 16:17:28 +03:00
cxljs
6bc7238340 Fix the ReplicaOnly option does not take effect when using NewFailoverClusterClient (#3482)
Signed-off-by: Xiaolong Chen <fukua95@gmail.com>
Co-authored-by: Nedyalko Dyakov <1547186+ndyakov@users.noreply.github.com>
2025-09-01 10:09:32 +03:00
cxljs
bb94ac7898 chore(readme): Update the introduction to running tests in README.md (#3495)
* update README.md

Signed-off-by: Xiaolong Chen <fukua95@gmail.com>

* update README.md

Signed-off-by: Xiaolong Chen <fukua95@gmail.com>

---------

Signed-off-by: Xiaolong Chen <fukua95@gmail.com>
2025-09-01 10:08:14 +03:00
ofekshenawa
7add47d726 Merge branch 'master' into implement-tls-url-parameters-pr2076 2025-08-22 16:35:34 +03:00
cybersmeashish
ff4d63e06b chore(test): Add comprehensive edge case tests for IncrByFloat command (#3477)
This commit adds extensive test coverage for the IncrByFloat Redis command,
covering various edge cases and scenarios that were not previously tested.

Test cases added:
- Negative increment values
- Zero increment (should return current value)
- High precision floating point operations
- Non-existent key behavior (should start from 0)
- Integer values stored as strings
- Scientific notation (both positive and negative)
- Error handling for non-numeric values
- Very large numbers (near float64 limits)
- Very small numbers (near zero precision)

These tests ensure robust behavior of the IncrByFloat command across
different numeric formats and edge conditions, improving the overall
reliability and test coverage of the go-redis library.

The tests use Gomega's BeNumerically matcher for floating point
comparisons to handle precision issues appropriately.
2025-08-18 20:05:47 +03:00
cxljs
e07f55bed1 chore(buffers): Set the default read/write buffer size of Redis connection to 32KiB (#3483)
* update README.md

Signed-off-by: Xiaolong Chen <fukua95@gmail.com>

* typo: 0.5MiB -> 256KiB

Signed-off-by: Xiaolong Chen <fukua95@gmail.com>

* Set the default read/write buffer size of Redis connection to 32KiB

Signed-off-by: Xiaolong Chen <fukua95@gmail.com>

---------

Signed-off-by: Xiaolong Chen <fukua95@gmail.com>
2025-08-18 20:04:55 +03:00
Elena Kolevska
b8682d037b chore(ci): Bumps test image to 8.2.1-pre (#3478)
* Bumps test image to 8.2.1-pre

Signed-off-by: Elena Kolevska <elena@kolevska.com>

* Missed the “benchmark” job

Signed-off-by: Elena Kolevska <elena@kolevska.com>

---------

Signed-off-by: Elena Kolevska <elena@kolevska.com>
2025-08-18 16:51:38 +03:00
cxljs
8336c44404 chore(client): fix UniversalOptions miss ReadBufferSize and WriteBufferSize options (#3485)
Signed-off-by: Xiaolong Chen <fukua95@gmail.com>
2025-08-18 15:46:31 +03:00
dependabot[bot]
d2ad801ba2 chore(deps): bump actions/checkout from 4 to 5 (#3484)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v5)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-18 11:33:44 +03:00
ofekshenawa
5060993085 Merge branch 'master' into implement-tls-url-parameters-pr2076 2025-08-14 18:53:38 +03:00
ofekshenawa
835d6ef7c3 fix: update RedissUsernamePassword test case for TLS 1.2 enforcement
Fix the remaining cluster test failure by updating the RedissUsernamePassword
test case to expect MinVersion: tls.VersionTLS12.

The test was failing because:
- Expected: TLSConfig with MinVersion: 0 (not set)
- Actual: TLSConfig with MinVersion: 771 (TLS 1.2)

This completes the alignment of all cluster test cases with our security-first
approach where all rediss:// URLs automatically enforce TLS 1.2 minimum.

All cluster test cases now consistently expect MinVersion: tls.VersionTLS12
for rediss:// URLs, matching the behavior of single client tests.
2025-08-14 18:50:30 +03:00
ofekshenawa
8ff9a76346 fix: update cluster test expectations for TLS 1.2 enforcement
Fix the failing cluster test 'ClusterClient ParseURL match ParseClusterURL'
by updating the MissingRedissPort test case to expect MinVersion: tls.VersionTLS12.

The test was failing because:
- Expected: MinVersion: 0 (not set)
- Actual: MinVersion: 771 (TLS 1.2)

This aligns with our security-first approach where all rediss:// URLs
automatically enforce TLS 1.2 minimum, even when no TLS parameters
are explicitly specified.

Test verification:
- Created and ran isolated test confirming ParseClusterURL now correctly
  sets MinVersion: 771 for basic rediss://localhost URLs
- All cluster URL parsing now consistent with single client behavior

This resolves the cluster test failure while maintaining the enhanced
security posture across all client types.
2025-08-14 18:46:09 +03:00
ofekshenawa
62a56aa6b1 fix: update test expectations for consistent TLS 1.2 enforcement
After pulling the latest security fixes, update test cases to match the new
security-first behavior where all rediss:// URLs enforce TLS 1.2 minimum:

**Changes Made**:
1. **Cluster Test Fixes**:
   - Updated ParseRedissURL test to expect MinVersion: tls.VersionTLS12
   - Updated MultipleRedissURLs test to expect MinVersion: tls.VersionTLS12
   - Updated RedissTLSCert test to expect MinVersion: tls.VersionTLS12
   - Updated RedissSkipVerify test to expect MinVersion: tls.VersionTLS12

2. **Sentinel Client Consistency**:
   - Made sentinel client behavior consistent with single/cluster clients
   - Always set MinVersion to TLS 1.2 for rediss:// URLs, even when not specified
   - Matches the security-first approach across all client types

**Security Behavior**:
- All rediss:// URLs now enforce minimum TLS 1.2 by default
- Consistent security posture across single, cluster, and sentinel clients
- No breaking changes for secure configurations
- Enhanced security for all TLS connections

**Test Results**:
- All single client tests pass 
- All builds successful 
- Consistent behavior across all client types 

This ensures uniform security enforcement and test expectations across
the entire go-redis library.
2025-08-14 17:13:13 +03:00
cxljs
97817108dd Set the read/write buffer size of the sentinel client to 4KiB (#3476)
Signed-off-by: Xiaolong Chen <fukua95@gmail.com>
2025-08-14 15:48:45 +03:00
ofekshenawa
2614ca0e7e Potential fix for code scanning alert no. 14: Insecure TLS configuration
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-08-14 11:40:43 +03:00
ofekshenawa
a4436229e3 Potential fix for code scanning alert no. 13: Insecure TLS configuration
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-08-14 11:37:53 +03:00
ofekshenawa
1cfe757f09 Potential fix for code scanning alert no. 15: Insecure TLS configuration
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-08-14 11:37:38 +03:00
ofekshenawa
a070b72dfd security: fix remaining CodeQL insecure TLS configuration alerts
Address the final 3 CodeQL security alerts for 'Insecure TLS configuration':

**Root Cause**:
CodeQL detected that setting  or
would result in , which is insecure
(TLS version 0).

**Security Fix**:
- When  or  is specified, don't set
  the TLS version at all - let Go use its secure defaults
- Only set explicit TLS versions when they are >= TLS 1.2 (secure)
- Applied fix consistently across all client types

**Files Fixed**:
- options.go (lines 609, 620) - Single client
- osscluster.go (lines 336, 350) - Cluster client
- sentinel.go (lines 446, 460) - Sentinel client

**Security Behavior**:
-  → Don't set MinVersion (Go default: secure)
-  → Error: insecure, minimum TLS 1.2 required
-  → Set explicit secure version
- Same logic applies to

**Test Coverage**:
- Added test case for  behavior
- Verified all security validation tests pass
- Confirmed no regression in functionality

This resolves all remaining CodeQL security alerts while maintaining
secure defaults and clear error messages for insecure configurations.
2025-08-14 11:20:18 +03:00
ofekshenawa
85cfa2db7b security: fix CodeQL security vulnerabilities in TLS parameters
Address 9 high-severity security issues identified by GitHub CodeQL:

1. **Integer Conversion Security**:
   - Add proper bounds checking for tls_min_version and tls_max_version
   - Validate input range (0-65535) before casting to uint16
   - Prevent integer overflow vulnerabilities

2. **TLS Security Enforcement**:
   - Enforce minimum TLS 1.2 (771) for all TLS version parameters
   - Reject insecure TLS versions (< TLS 1.2) with clear error messages
   - Prevent downgrade attacks and insecure configurations

3. **Comprehensive Validation**:
   - Applied security fixes to all client types (single, cluster, sentinel)
   - Added security validation test cases
   - Updated documentation to reflect security requirements

4. **Test Coverage**:
   - Added tests for insecure TLS version rejection
   - Added tests for integer overflow protection
   - Updated existing tests to use secure TLS versions (771, 772)

Security improvements:
- Prevents integer overflow attacks via malicious URL parameters
- Enforces secure TLS configurations by default
- Provides clear error messages for security violations
- Maintains backward compatibility for secure configurations

Fixes all CodeQL security alerts while maintaining functionality.
2025-08-14 11:10:31 +03:00