1. 12 Apr, 2020 1 commit
  2. 05 Apr, 2020 4 commits
    • Nick Craver's avatar
      Centralized package versioning with Directory.Packages.props (#1421) · f798868d
      Nick Craver authored
      Explicitly didn't do `/toys` here because the versions aren't shared but if it makes sense: yeah let's add em. This structure is made for easier migration to https://github.com/NuGet/Home/wiki/Centrally-managing-NuGet-package-versions later (we should just need to remove the manual import in each project file (necessary for ordering):
      ```xml
      <Import Project="$([MSBuild]::GetPathOfFileAbove('Directory.Packages.props', '$(MSBuildThisFileDirectory)../'))" />
      ```
      
      If you're wondering why `Directory.Build.targets` doesn't work - I'm not sure. It's fine for `netcoreapp*` builds, but .NET Full framework throws a fit:
      ```
      C:\git\StackExchange\StackExchange.Redis\tests\NRediSearch.Test\NRediSearch.Test.csproj : error NU1701: Package 'xunit 1.7.0.1540' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8' instead of the project target framework '.NETCoreApp,Version=v2.1'. This package may not be fully compatible with your project. [C:\git\StackExchange\StackExchange.Redis\Build.csproj]
      C:\git\StackExchange\StackExchange.Redis\tests\BasicTestBaseline\BasicTestBaseline.csproj : error NU1604: Project dependency BenchmarkDotNet does not contain an inclusive lower bound. Include a lower bound in the dependency version to ensure consistent restore results. [C:\git\StackExchange\StackExchange.Redis\Build.csproj]
      C:\git\StackExchange\StackExchange.Redis\tests\BasicTest\BasicTest.csproj : error NU1604: Project dependency BenchmarkDotNet does not contain an inclusive lower bound. Include a lower bound in the dependency version to ensure consistent restore results. [C:\git\StackExchange\StackExchange.Redis\Build.csproj]
      C:\git\StackExchange\StackExchange.Redis\tests\BasicTest\BasicTest.csproj : error NU1701: Package 'BenchmarkDotNet 0.5.0' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8' instead of the project target
      framework '.NETCoreApp,Version=v2.0'. This package may not be fully compatible with your project. [C:\git\StackExchange\StackExchange.Redis\Build.csproj]
      C:\git\StackExchange\StackExchange.Redis\tests\BasicTestBaseline\BasicTestBaseline.csproj : error NU1701: Package 'BenchmarkDotNet 0.5.0' was restored using '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, .NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8' instead of the project target framework '.NETCoreApp,Version=v2.0'. This package may not be fully compatible with your project. [C:\git\StackExchange\StackExchange.Redis\Build.csproj]
      ```
      ...but the approach in this PR is both works and is closer to future plans.
      f798868d
    • mgravell's avatar
      set source root if needed · 782ce11b
      mgravell authored
      782ce11b
    • mgravell's avatar
      release notes · 5c3036ab
      mgravell authored
      5c3036ab
    • Marc Gravell's avatar
      fix build to get green shields for Source Link and Deterministic (#1420) · eb97dc15
      Marc Gravell authored
      fix build to get green shields for Source Link and Deterministic
      eb97dc15
  3. 30 Mar, 2020 4 commits
  4. 27 Mar, 2020 1 commit
  5. 25 Mar, 2020 1 commit
  6. 23 Mar, 2020 9 commits
    • Nick Craver's avatar
      Move Issue922_ReconnectRaised to DEBUG · c3bc13d7
      Nick Craver authored
      c3bc13d7
    • Nick Craver's avatar
      FirstOrDefault love for Sentinel · 63bbcded
      Nick Craver authored
      63bbcded
    • Nick Craver's avatar
      Tweak versioning · 531ffa42
      Nick Craver authored
      531ffa42
    • mgravell's avatar
      fix plinq glitch · 1dcf55e1
      mgravell authored
      1dcf55e1
    • Nick Craver's avatar
      Sentinel: Several break fixes (#1402) · 49f24a2c
      Nick Craver authored
      * fix naming of SentinelGetSentinelAddressesAsync
      
      * tyop
      
      * Sentinel: don't use async over sync with .Result
      Co-authored-by: 's avatarmgravell <marc.gravell@gmail.com>
      49f24a2c
    • Nick Craver's avatar
      Fix null ref in Sentinel · 46be338b
      Nick Craver authored
      46be338b
    • Nick Craver's avatar
      Better Connection Counts & Error Messages (#1397) · a01cd041
      Nick Craver authored
      * ConnectionMultiplexer: track global counts for deebugging
      
      * Build dammit
      
      * Move to per-multiplexer/add tests
      
      Note: I know mutiplexer isn't spelled right - will fix that in a follow-up to avoid noise.
      
      * Fix test key names
      
      Broken since the 2.1 bump, oops
      
      * Simplify the NoConnectionAvailable static
      
      Simpifies usage for all callers. Also shares code and adds diagnostics to the "no connection" case.
      
      * Add tests for NoConnectionException
      
      * Failover: fix tests and debug some
      
      SubscriptionsSurviveMasterSwitchAsync is a thorn in our side - moving to DEBUG.
      
      * Remove bad check
      
      Inner is irrelevant here - can be not-null depending on the connection race.
      
      * Update message and add more tests!
      
      * Bump pipelines to 2.1.6
      a01cd041
    • Nick Craver's avatar
      Message clarification for #1287 (#1396) · 2ab9b375
      Nick Craver authored
      Old message:
      > To create a disconnected multiplexer, disable AbortOnConnectFail.
      
      New message proposal:
      > Error connecting right now. To allow this multiplexer to continue retrying until it's able to connect, use abortConnect=false in your connection string or AbortOnConnectFail=false; in your code.
      2ab9b375
    • Nick Craver's avatar
      Fix up boadcasts, tests, and logging across the board (#1400) · b90f991d
      Nick Craver authored
      This changes does the following:
      - Moves the broadcast to be only before the master reconfiguration to both before *and* after - a fix following https://github.com/StackExchange/StackExchange.Redis/commit/88dcf0c989b25623fb8ffb1f4d48c24593246cfe to fix the gap.
      - Tweaks tests by overall lessening runtime (and thus build server time). Overall, fixes a few static timeouts to be conditional (so they short circuit faster if met), and brings some tests that were some variant of the above into RELEASE since they're safe now.
      - Changes `UntilCondition` to take a `TimeSpan`, just because clearer. Even though I IntelliSense completed `.FromMinutes()` earlier and watched it like an idiot for a while...I stand by this decision!
      - Locks the `ITestOutputHelper` writer because...that was jacked up in races:
      
      ![off to the races](https://user-images.githubusercontent.com/454813/77232395-2f799980-6b77-11ea-8fb4-0398de25e313.png)
      
      ------
      
      Note: a lot of the test changes are just optimizations to delays which allow longer but short-circuit sooner. The important changes are in broadcast and locking around the test runner. I can think of downsides to neither, but want some @mgravell eyes. This should resolve a lot of flaky-ness with local (and build agent) tests. Not all of it, but a lot of it!
      b90f991d
  7. 21 Mar, 2020 1 commit
  8. 19 Mar, 2020 1 commit
  9. 18 Mar, 2020 7 commits
    • Shadi Massalha's avatar
      Sentinel Support Derived from pr-692 (#1067) · b2db13fc
      Shadi Massalha authored
      This PR is derived from PR-692 and have been merged with the latest master commit.
      Things that have been done:
      1. review code for PR-692
      2. fixed potential infinite loop in the code
      3. Adapt code to success build with the latest master commit
      4. Manual testing on 3 Sentinel nodes and 3 Redis nodes (connection and failover)
      
      Usage:
      ```C#
                      ConfigurationOptions sentinelConfig = new ConfigurationOptions();
                      sentinelConfig.ServiceName = "mymaster";
                      sentinelConfig.EndPoints.Add("192.168.99.102", 26379);
                      sentinelConfig.EndPoints.Add("192.168.99.102", 26380);
                      sentinelConfig.EndPoints.Add("192.168.99.102", 26381);
                      sentinelConfig.TieBreaker = "";
                      sentinelConfig.DefaultVersion = new Version(4, 0, 11);                 
                      // its important to set the Sentinel commands supported
                      sentinelConfig.CommandMap = CommandMap.Sentinel;
      
                      // Get sentinel connection
                      ConnectionMultiplexer sentinelConnection = ConnectionMultiplexer.Connect(sentinelConfig, Console.Out);
                      // Create master service configuration
                      ConfigurationOptions masterConfig = new ConfigurationOptions { ServiceName = "mymaster" };
                      // Get master Redis connection
                      var redisMasterConnection = sentinelConnection.GetSentinelMasterConnection(masterConfig);
      
                      ...
                     IDatabase db = redisMasterConnection.GetDatabase();                
                     db.StringSet(key, value);
                     ...
                     string value1 = db.StringGet(key);
      
      ```
      b2db13fc
    • Marc Gravell's avatar
      fix error with DNS resolution breaking endpoint iterator (#1393) · 748f1fa7
      Marc Gravell authored
      * re-implement GetEnumerator in EndPointCollection to be a bit more forgiving to concurrent changes during iteration
      
      * poke release notes
      748f1fa7
    • mgravell's avatar
      more release notes for 2.1.0 · 3f0c2b81
      mgravell authored
      3f0c2b81
    • hamish-omny's avatar
      Ensure that _activeMessage is always cleared, including if an exception is... · 58e8d63e
      hamish-omny authored
      Ensure that _activeMessage is always cleared, including if an exception is thrown while trying to send the message or flush the connection. Leaving _activeMessage set causes WriteMessageInsideLock to always return a "NoConnectionAvailable" error indefinitely (#1374)
      Co-authored-by: 's avatarNick Craver <craver@stackoverflow.com>
      58e8d63e
    • Gunnar Liljas's avatar
    • Nick Craver's avatar
      Add F# compatibility enhancements for #831 (#1386) · 659d5149
      Nick Craver authored
      Asked for in #831 and low overhead so why not! I didn't do `RedisChannel` since it already has a constructor available. Tests added to ensure these are used in a way we don't break them.
      659d5149
    • Marc Gravell's avatar
      eef7b8d6
  10. 17 Mar, 2020 2 commits
  11. 15 Mar, 2020 2 commits
    • Nick Craver's avatar
      Remove Unspecified/ from errors and test tweaks (#1385) · afc4ec1f
      Nick Craver authored
      In going through issues, I see many users confused by `Unspecified/` and it really serves no purpose. Let's get a quick win (and add a test for it).
      
      Also, WSL2 it appears has clock jitter - we can accommodate that while having a valid test, fixing that local case.
      afc4ec1f
    • Nick Craver's avatar
      Add test for #1183 (#1384) · f4a3d964
      Nick Craver authored
      Clarifies how IPv6 needs to be expressed in example usage.
      f4a3d964
  12. 14 Mar, 2020 7 commits
    • Nick Craver's avatar
      Add test to illustrate #1133 · c7cb6df9
      Nick Craver authored
      c7cb6df9
    • Nick Craver's avatar
      Add release notes and tag for v2.0.601 · 32c8667a
      Nick Craver authored
      32c8667a
    • Nick Craver's avatar
      Move ExecCompletes_Issue943 to long running · d0f7abf1
      Nick Craver authored
      This is 2 of the 6 minutes of test CPU time locally....don't need to hang on this so much.
      d0f7abf1
    • Nick Craver's avatar
      Fix naming of _activeMessage · 5a36dc7a
      Nick Craver authored
      Tidying this up so the diff/fix in #1374 is easier to analyze.
      5a36dc7a
    • Nick Craver's avatar
      Set the field instead of the property · 08bc1fb6
      Nick Craver authored
      Since logic exists in the getter, we need to set the field across for actual quality.  The `Issue883_Exhaustive` test illustrates the difference in the comparison (currently failing).
      08bc1fb6
    • Björn Lundström's avatar
    • Nick Craver's avatar
      NRediSearch Test Suite Fixes (#1383) · 084c9c18
      Nick Craver authored
      ### NRediSearch
      - Updated module so we're testing the right thing
      - More output in the logging path for diagnosing issues
      - Remove all the `FLUSHDB` calls masking issues
      - Handle duplicate documents in latest module
      
      Note: **locally** (on WSL 2), this fixes some issues and introduces stability but *does not* fix 2 scoring issues. Suggestions are coming back with scores > 1.0, which by the documentation is not supposed to happen...so I'm not sure what should be happening here. Here's the local WSL fail:
      ```
       NRediSearch.Test.ClientTests.ClientTest.TestGetSuggestionWithScore:
        Message: 
          StackExchange.Redis.RedisCommandException : Missing required fields:  score not within range: 2.11660146713257
        Stack Trace: 
          SuggestionBuilder.Build() line 99
          Client.GetSuggestionsWithPayloadAndScores(RedisResult[] results) line 1271
          Client.GetSuggestions(String prefix, SuggestionOptions options) line 796
          ClientTest.TestGetSuggestionWithScore() line 701
      ```
      ```
      NRediSearch.Test.ClientTests.ClientTest.TestAddSuggestionGetSuggestionPayloadScores:
        Message: 
          StackExchange.Redis.RedisCommandException : Missing required fields:  score not within range: 2.71068739891052
        Stack Trace: 
          SuggestionBuilder.Build() line 99
          Client.GetSuggestionsWithPayloadAndScores(RedisResult[] results) line 1271
          Client.GetSuggestions(String prefix, SuggestionOptions options) line 796
          ClientTest.TestAddSuggestionGetSuggestionPayloadScores() line 642
      ```
      
      However, the current fixes tidy up the CI pipeline so I recommend merging this as-is, then I'll keep following up with various local errors and I'm looking at some Docker test options as alternatives to WSL2 so that people can run either.
      084c9c18