You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Fix for FT.CURSOR in cluster; requires single server
- update SE.Redis ref to allow new GetServer(RedisKey) usage
- add utility API to capture an IServer and database if using cluster
- create internal AggregationResult subclass that includes the IServer
- capture server in Aggregate[Async]
- create new overloads for CusorDel[Async] and CursorRead[Async] that take AggregationResult, and push consumers towards that overload
- use captured server/database when appropriate
- use the new API from tests
- add new I[Async]Enumerable API for simplicity: AggregateEnumerable[Async]
- add tests for new API
- use cluster env from cursor tests
* update interfaces
* dotnet format
* use correct routing in AddDocument
* .gitignore - docker containers
* dotnet format
* - enable all-environments over almost all FT tests
- workaround DBSIZE usage
- use IP in endpoints.json to prevent double-counting of servers
- compensate for NumDocs oddity on cluster, and don't test detailed numbers (which vary by shard)
* don't hit disconnected servers when crawling endpoints
* dotnet format
* more search test tweaks
* rev SE.Redis for RedisValue fix
* more test fixes
* dotnet format... again
* fix routing of dictionary methods
* actually: not a key
* try to add more replication stability
* TestApplyAndFilterAggregations - loop attempt
* only continue on last attempt!
* allow even more time in TestApplyAndFilterAggregations
* fix CI mstest on .net9
* grandfather many cluster tests pre 8
* update local docker file
* skip a bunch more tests on cluster pre 8
* skip TestCreate on cluster < 8
* Update tests/dockers/docker-compose.yml
Co-authored-by: atakavci <[email protected]>
* clarify that the enumerable APIs may involve multiple operations
* clarify why/when the old cursor API will fail
---------
Co-authored-by: atakavci <[email protected]>
[Obsolete("When possible, use CursorDel(AggregationResult) instead. This legacy API will not work correctly on CLUSTER environments, but will continue to work for single-node deployments.")]
[Obsolete("When possible, use AggregateEnumerable or CursorRead(AggregationResult, int?) instead. This legacy API will not work correctly on CLUSTER environments, but will continue to work for single-node deployments.")]
[Obsolete("When possible, use CursorDelAsync(AggregationResult, int?) instead. This legacy API will not work correctly on CLUSTER environments, but will continue to work for single-node deployments.")]
[Obsolete("When possible, use AggregateAsyncEnumerable or CursorReadAsync(AggregationResult, int?) instead. This legacy API will not work correctly on CLUSTER environments, but will continue to work for single-node deployments.")]
@@ -72,18 +120,52 @@ public bool Create(string indexName, Schema schema)
72
120
}
73
121
74
122
/// <inheritdoc/>
123
+
[Obsolete("When possible, use CursorDel(AggregationResult) instead. This legacy API will not work correctly on CLUSTER environments, but will continue to work for single-node deployments.")]
[Obsolete("When possible, use CusorReadEnumerable or CursorRead(AggregationResult, int?) instead. This legacy API will not work correctly on CLUSTER environments, but will continue to work for single-node deployments.")]
if(resultis not AggregationResult.WithCursorAggregationResultwithCursor)
158
+
{
159
+
thrownewArgumentException(message:$"{nameof(CursorReadAsync)} must be called with a value returned from a previous call to {nameof(AggregateAsync)} with a cursor.",paramName:nameof(result));
0 commit comments