| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
Fix INFO all/default/everything returning empty response (#1645) * Fix INFO all/default/everything returning empty response Implement support for INFO all, default, and everything options: - all: returns all DefaultInfo sections excluding module-generated ones - default: returns the default set of sections (same as no-arg INFO) - everything: returns all DefaultInfo sections including modules Added pre-declared HashSet collections (AllInfoSet, EverythingInfoSet) in GarnetInfoMetrics.cs derived from DefaultInfo to support these options. Updated InfoCommand.cs to use UnionWith with the new HashSets instead of silently skipping the ALL keyword. Added tests for all three options, verifying correct section inclusion/exclusion. Fixes #1643 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * make everything option use DefaultInfo * Add null/empty guard in GetSectionHeaders test helper Adds explicit asserts before splitting INFO output so test failures surface a clear message instead of a NullReferenceException. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * wip; restructuring cluster tests to reduce CI duration * separate dispose from close and configure socket to allow rapid connect * ensure socket is disposed succesfully * fix failing test * update global.json --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> | 6 个月前 | |
parsing code assumes RESP2, so just force it for this connection (#2183) | 7 天前 | |
Fixes for expiry-related commands (#1296) * wip * expire/expireat done - tests passing * SortedSet expire + Hash expire done * adding tests * hashset expire tests + format * added some comments * Update test/Garnet.test/RespSortedSetTests.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * format * fixed comment * Addressed comments & folded NetworkEXPIREAT into NetworkEXPIRE * build fix * Added comments to new tests * format * Updating encoding logic * fix * fix * fix * unnecessary test removed * Moved to struct instead of utils class for expiration --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> | 1 年前 | |
Adding Support for .Net 9 (#919) * net9 changes * Collection expression fix * Fixing SYSLIB0057 * Removing ServicePointManager * Temporary fix for RedisCallErrors test failing in .net9 * some fixes * Added .net90 to CI and the Nightly GitHub Action * Fixed Garnet Worker to be both .net80 and .net90 and updated ADO pipelines to use net9.0 * Updated Tsav CI that runs in ADO when mirrored * Fix to RedisCallErrors * test * fix * Skipping RedisCallErrors test * Reverting ignored test * Updating CI * CI fix * Ignoring RedisCallErrors test when environment variable is not set * Added net90 to the external release pipeline. Required changed to publish profile. GitHub release section working now. Need to finish Nuget. The actual GH Release task and Nuget Push are disabled at this point. * Fixed bug in compressed file directory * Another try on fixing the destination directory issue * Added CodeQL.yml which is custom so it works with net90 as well. Updated GarnetHost to get all the runtimes * Set RunTImes to only be packed once since they are C++ and not dependent on framework * Fixed broken merge * Added WorkFlow dispatch and commented out net90 * Added net90 to CodeQL * Enabled the Create GH Release and Push Nuget packages tasks so it is all ready to go when merged * format * format * Added 9.0 to dot net restore. Not for test matrix but for build. * Updated BDN expected values * Trying to run BDN on net90 framework. * Updated values because of the new Net90 BDN test runs * Update some of the expected in the Operations.SortedSetOperations BDN to handle Net 9.0 * Getting net90 expected values narrowed down. Just seems to be a couple that are a bit variant. * Fixed a bug in the BDN script and updated expected values. * address new codeQL requirement * Cleaned up unnecessary using --------- Co-authored-by: TedHartMS <15467143+TedHartMS@users.noreply.github.com> Co-authored-by: darrenge <darrenge@microsoft.com> Co-authored-by: Vasileios Zois <vazois@microsoft.com> | 1 年前 | |
Harden LightEpoch: make the epoch announce part of the slot-claim CAS (#2015) * Fix unfenced epoch announce in LightEpoch (x86-64) A thread entering a protected region announced its epoch with a plain store, which is not ordered against the reclaimer's later load of the same slot. A reclaimer could scan a live reader's slot, see it as free, raise SafeToReclaimEpoch past the reader's epoch, and free a page the reader was about to dereference. The claim CAS now writes localCurrentEpoch directly, so claiming the slot and announcing the epoch are one locked RMW and the announce is globally visible before any load in the protected region can issue. No barrier and no atomic is added; the lock cmpxchg was already there. localCurrentEpoch doubles as the ownership word, sound because a protected thread never announces epoch 0. Release() correspondingly clears threadId before freeing the slot. LightEpoch moves to its own Garnet.LightEpoch project so it can be tested and disassembled in isolation, with unit tests and a quarantine litmus harness under playground/LightEpochLitmus. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 38cd2f3a-d460-407c-8a96-a7330974ce99 * Build LightEpochLitmus for net8.0 as well CodeQL builds the whole solution with 'dotnet build -f net8.0', which failed because the litmus project only targeted net10.0. Inherit the repo default net8.0;net10.0 and pin the Dockerfile/README commands to net10.0. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: b5f062b9-2d72-4cf0-b6f3-4c9beb98d068 * Rename LightEpoch projects to Tsavorite.epoch / Tsavorite.test.epoch Drop the Garnet prefix from the epoch library and its unit test project so they match the Tsavorite.core / Tsavorite.test.* naming of the rest of the storage engine. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d306b783-4a33-4673-9e29-790995df8179 * Move LightEpoch back into Tsavorite.core Undo the split of LightEpoch into a standalone project: the sources return to src/core/Epochs/ and the duplicated Murmur3 helper is dropped in favor of the existing Utility.Murmur3. LightEpochLitmus now references Tsavorite.core. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d306b783-4a33-4673-9e29-790995df8179 * Drop redundant IDisposable declaration from LightEpoch LightEpoch already exposed a public Dispose(); declaring the interface adds nothing and was not part of the fix. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d306b783-4a33-4673-9e29-790995df8179 * Restore .github/copilot-instructions.md to match main Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d306b783-4a33-4673-9e29-790995df8179 * Document ProtectAndDrain refresh semantics and address review feedback Rewrite the ProtectAndDrain docs to state that it refreshes an already-held slot rather than entering the protected region, that SafeToReclaimEpoch is gated on the minimum announced epoch so a holder that never refreshes stalls reclamation process-wide, and that a refresh relinquishes protection for the previously announced epoch. Read CurrentEpoch volatile when announcing and inline ReserveEntry into ReserveEntryForThread. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: b6f65ef0-7c7f-40d9-a95f-3ecb62de9d5a * Trim ProtectAndDrain doc comment Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: b6f65ef0-7c7f-40d9-a95f-3ecb62de9d5a * Simplify ProtectAndDrain doc wording Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: b6f65ef0-7c7f-40d9-a95f-3ecb62de9d5a * Inline the announced epoch read in ProtectAndDrain Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: b6f65ef0-7c7f-40d9-a95f-3ecb62de9d5a * Restore the original Drain argument expression in ProtectAndDrain Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: b6f65ef0-7c7f-40d9-a95f-3ecb62de9d5a * Use volatile accesses for the announced-epoch word Make the ProtectAndDrain announce a release store and the reclaimer's ComputeNewSafeToReclaimEpoch scan an acquire load, so a slot's announced epoch cannot be observed out of order with the work it guards. Hoist the announced epoch into a local so Drain reuses it instead of re-reading the slot. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 8b507896-826f-444c-b958-51c19863f429 --------- Co-authored-by: Tiago Napoli <tiagonapoli@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 38cd2f3a-d460-407c-8a96-a7330974ce99 Copilot-Session: b5f062b9-2d72-4cf0-b6f3-4c9beb98d068 Copilot-Session: d306b783-4a33-4673-9e29-790995df8179 Copilot-Session: b6f65ef0-7c7f-40d9-a95f-3ecb62de9d5a Copilot-Session: 8b507896-826f-444c-b958-51c19863f429 | 2 个月前 | |
Replace net9 with net10 in projects and CIs (#1518) * replace net9 with net10 in project files * Update net9.0 to net10.0 in ci and nightly * Updated BDN to run net10 instead of net90 the website is not done yet. * Updating BDNs to not use .net9.0. Unfortunately, .net10 is not supported in current BDNs. * Updated External Release to release 8.0 and 10.0 only (no 9.0) * fix * Enabled Win10 for BDN since recent fix * Updated a couple BDNs expected values that were a bit out of range * Updated .net9.0 for CodeQL --------- Co-authored-by: Badrish Chandramouli <badrishc@microsoft.com> | 8 个月前 | |
Replace net9 with net10 in projects and CIs (#1518) * replace net9 with net10 in project files * Update net9.0 to net10.0 in ci and nightly * Updated BDN to run net10 instead of net90 the website is not done yet. * Updating BDNs to not use .net9.0. Unfortunately, .net10 is not supported in current BDNs. * Updated External Release to release 8.0 and 10.0 only (no 9.0) * fix * Enabled Win10 for BDN since recent fix * Updated a couple BDNs expected values that were a bit out of range * Updated .net9.0 for CodeQL --------- Co-authored-by: Badrish Chandramouli <badrishc@microsoft.com> | 8 个月前 | |
Fix Allure wiring: remove duplicate attributes and fix CI check for transitive dependencies (#1784) * Split cluster tests into 5 parallel CI projects Split Garnet.test.cluster into separate projects to enable parallel CI: - Garnet.test.cluster: shared infra + basic cluster tests (144 tests) - Garnet.test.cluster.migrate: migrate + slot verification (67 tests) - Garnet.test.cluster.replication: all replication tests (372 tests) - Garnet.test.cluster.vectorsets: vector set cluster tests (30 tests) - Garnet.test.cluster.multilog: sharded log replication tests (163 tests) Child projects reference base via ProjectReference + InternalsVisibleTo. Updated CI and nightly workflow matrices to run all 5 in parallel. Fixed Allure wiring check to find AllureTestBase in referenced assemblies. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Split replication tests into TLS, AsyncReplay, and DisklessSync projects Separate Garnet.test.cluster.replication into 3 additional projects for parallel CI execution: - Garnet.test.cluster.replication.tls: TLS replication tests (inherits ClusterReplicationBaseTests with useTLS=true) - Garnet.test.cluster.replication.asyncreplay: Async replay tests (inherits ClusterReplicationBaseTests with asyncReplay=true) - Garnet.test.cluster.replication.disklesssync: Diskless sync tests (standalone ClusterReplicationDisklessSyncTests) Base replication project retains ClusterReplicationBaseTests and ClusterResetDuringReplicationTests. Updated InternalsVisibleTo, multilog project references, CI and nightly workflow matrices, and solution file. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Split Garnet.test into 8 projects for parallel CI execution Split the monolithic Garnet.test project into 8 focused test projects: - Garnet.test (base): RESP core, config, admin, infra (~774 tests) - Garnet.test.collections: Hash, List, Set, SortedSet, Geo (~746 tests) - Garnet.test.acl: ACL and auth tests (~426 tests) - Garnet.test.scripting: Lua, custom commands, transactions, AOF, modules (~585 tests) - Garnet.test.complexstring: Bitmap, HyperLogLog (~386 tests) - Garnet.test.vectorset: VectorSet tests (~36 tests) - Garnet.test.rangeindex: RangeIndex tests (~58 tests) - Garnet.test.extensions: JSON, DiskANN, revivification, storage internals (~527 tests) Each child project references Garnet.test for shared infrastructure (TestUtils, AllureTestBase, extensions). InternalsVisibleTo entries added to Garnet.server, Garnet.host, GarnetServer, GarnetJSON, and Tsavorite.core for child projects. Updated CI and nightly workflows with expanded test matrices. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add missing [AllureNUnit] attributes to cluster sub-project test fixtures Added [AllureNUnit] and [TestFixture] to ClusterReplicationTLS, ClusterReplicationAsyncReplay, ClusterReplicationShardedLog, and ClusterReplicationDisklessSyncShardedLog to pass CI Allure wiring check. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix Allure wiring: remove duplicate [AllureNUnit] and fix CI check for transitive dependencies - Remove duplicate [AllureNUnit] from derived test classes (TLS, AsyncReplay, MultiLog) that inherit it from base classes, fixing runtime error 'Unable to change the container context because the test context is active' - Fix CI Allure wiring check to search AppDomain.GetAssemblies() instead of using Assembly.Load() on direct references, which failed for AllureTestBase in transitive dependencies (e.g. Garnet.test.cluster via Garnet.test.cluster.replication) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * ci: add NuGet package cache to all CI jobs Add actions/cache@v4 for ~/.nuget/packages to format-garnet, format-tsavorite, build-test-garnet, and build-test-tsavorite jobs. Cache key is based on runner.os and hash of *.csproj and Directory.Packages.props files, with a fallback restore-key for partial matches. This reduces dotnet restore time, especially on Windows runners where install dependencies averaged 1.1 min (up to 4.1 min) per job. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * ci: split Garnet build and test into separate jobs Split build-test-garnet into two jobs: - build-garnet: 8 jobs (os × framework × config) that restore, build, and upload bin/obj artifacts with 1-day retention - test-garnet: 128 jobs that download build artifacts and run dotnet test --no-build --no-restore This eliminates 120 redundant builds (~316 CPU-minutes per run). Test jobs no longer need Rust toolchain, NuGet cache, or restore steps. The pipeline-success job now depends on test-garnet instead of build-test-garnet. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Split Tsavorite tests into 5 subprojects for parallel CI execution Split the monolithic Tsavorite.test project into 5 test subprojects to enable parallel CI execution and reduce the critical-path bottleneck: - Tsavorite.test (core tests, shared infrastructure) - Tsavorite.test.recordops (revivification, delete/dispose, record lifecycle) - Tsavorite.test.session (session, unsafe context, read cache chain tests) - Tsavorite.test.hlog (log, scan, device, spanbyte, compaction tests) - Tsavorite.test.recovery (recovery, checkpoint, object recovery tests) CI workflow changes: - ci.yml: Split build-test-tsavorite into separate build-tsavorite and test-tsavorite jobs with 5x4 matrix (os x framework x config x subproject) - nightly.yml: Added new subprojects to test matrix with proper allure-results staging and cleanup paths - Scoped NuGet restore to Tsavorite.slnx only in build job Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Cache Azurite npm install and skip for subprojects that don't need it - Add npm cache (actions/cache) for Azurite in both ci.yml and nightly.yml - In ci.yml, conditionally skip Node.js setup, Azurite install, and RunAzureTests env var for test.recordops, test.session, and test.recovery (only test and test.hlog use Azure storage device tests) - Saves ~200s on Windows / ~20s on Linux per skipped subproject job Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix Allure wiring: restore path prefix on Tsavorite artifact download upload-artifact strips the common ancestor (libs/storage/Tsavorite/cs/) from the glob paths. Specify path: on download-artifact to restore the prefix so the Allure check and test run steps find DLLs at the expected location. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add -graph flag to dotnet build for faster CI builds MSBuild graph build constructs the project dependency graph upfront and schedules builds optimally, avoiding redundant project evaluations. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Decouple format checks from build dependency chain Run format-garnet and format-tsavorite in parallel with builds instead of blocking them. Format failures still gate pipeline-success, but builds and tests can start immediately, saving ~1-2 min off the critical path. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix test execution: run dotnet test against DLLs directly dotnet test with --no-build against project directories silently exits with 0 tests when MSBuild evaluation fails to locate the pre-built assemblies. Running against the DLL directly bypasses MSBuild entirely and reliably discovers and executes tests from downloaded artifacts. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Restore execute permission on GarnetServer after artifact download upload-artifact strips the Unix execute bit. Add chmod +x for the GarnetServer binary on Linux after downloading build artifacts, so tests that launch it as a subprocess (e.g., GarnetBitmapTests) work. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Split test.session into test.session + test.session.context Split the Tsavorite.test.session subproject (23.1 min worst case) into two for better CI parallelism: - test.session: ReadCacheChainTests, ReadAddressTests, NativeReadCacheTests, RandomReadCacheTests (read-cache focused) - test.session.context: TransactionalUnsafeContextTests, UnsafeContextTests, SessionTests, FunctionPerSessionTests (session/context focused) Extracted shared helpers into test/SessionContextTestUtils.cs to resolve cross-project dependencies. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix Tsavorite formatting in SessionContextTestUtils.cs Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Remove lowMemory param from ClusterSRPrimaryCheckpointRetrieve Make manySegments imply lowMemory instead of requiring both parameters. This reduces test combinations from 16 to 8 (removes redundant cases where lowMemory=false,manySegments=true which was already a no-op due to the existing manySegments = lowMemory && manySegments guard). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Reorganize test projects into standalone/ and cluster/ subdirectories Move Garnet.test* projects under test/standalone/ and Garnet.test.cluster* projects under test/cluster/ for better organization. - Move 8 standalone test projects to test/standalone/ - Move 8 cluster test projects to test/cluster/ - Update all .csproj relative paths (ProjectReference, Compile Include, EmbeddedResource, AssemblyOriginatorKeyFile, testcerts) - Update Garnet.slnx with nested folder structure - Update TstRunner.csproj project references - Update CI workflows (ci.yml, nightly.yml) with subdir resolution - Update runGarnetTests.cmd path Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Consolidate Tsavorite test projects under single test/ directory Move satellite test projects (test.hlog, test.recordops, test.recovery, test.session, test.session.context) from cs/ into cs/test/ as subdirectories. - Move 5 satellite test project directories under cs/test/ - Update satellite csproj relative paths (src/, Garnet.snk, Tsavorite.test ref) - Add Compile Remove glob to Tsavorite.test.csproj to exclude subdirectories - Update Tsavorite.slnx project paths - Fix Tsavorite.test.csproj AllureTestBase.cs path for prior Garnet test move - Update CI workflows (ci.yml, nightly.yml) Tsavorite directory maps Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Remove Rust toolchain setup from CI build-garnet job Pre-built native BfTree binaries exist for all platforms (linux-x64, win-x64, osx-x64, osx-arm64). The BfTreeInterop.csproj already gracefully skips cargo when it's not installed, falling back to pre-built binaries. Rust is only needed to rebuild from source for bftree/range-index development. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Remove all Allure test reporting infrastructure - Remove AllureTestBase class, rename to TestBase (keep RunningTests tracking) - Remove [AllureNUnit] attribute from all 158 test fixtures - Remove Allure.Net.Commons and Allure.NUnit package references from all csproj files - Remove Allure packages from Directory.Packages.props - Remove Allure wiring verification steps from ci.yml (Garnet + Tsavorite) - Remove Allure CLI install, results staging, report generation from nightly.yml - Remove Allure artifact/history/report steps from deploy-website.yml - Delete test/Allure/ directory (GenerateAllureReport.ps1, categories.json) - Update docs: README badge, copilot-instructions, skills, onboarding Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix CI: remove -graph flag and artifact pipeline for test jobs The -graph flag on dotnet build silently skips projects inside nested <Folder> elements in .slnx files. After restructuring test directories into test/standalone/ and test/cluster/ with nested solution folders, only 4 of 16 test projects were built, causing 'DLL not found' errors in 33 of 36 test jobs. Changes: - Remove -graph flag from build-garnet and build-tsavorite jobs - Remove artifact upload/download pipeline between build and test jobs - Test jobs now build inline via dotnet test <project-dir> (matching the pattern used on main branch) - Add NuGet cache and restore to test jobs - Remove redundant framework dimension from build-garnet matrix - Keep build jobs as fast-fail compilation gates Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix RootTestsProjectPath for restructured test directories After moving test projects into test/standalone/ and test/cluster/, Split("Garnet.test")[0] returns test/standalone/ instead of test/. Navigate up one level to reach the correct test/ root directory. Fixes DocsTests, RespCommandTests, RespCustomCommandTests, and RespModuleTests failures caused by incorrect relative path resolution. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix refs to test for vs * fix config test * adjust max parallel jobs in CI * revert parallel max cap * split workflow graph --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> | 4 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 6 个月前 | ||
| 7 天前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 2 个月前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 4 个月前 |