Server-issued aggregationFilterToken on buckets, consumed verbatim via
searchRequest.aggregationFilters as exact, case-sensitive matches.
Range tokens use the MS Graph spelling (range(min, 1980),
range(2010, max, to="le")); decoding accepts optional whitespace and
the le marker, and maps the upper bound exclusively so a drilldown
returns exactly the matches the bucket counted.
Sub-aggregations on both engines. bleve folds child buckets from doc values through the same collector as the metrics, terms and ranges alike; the service unions nested buckets across spaces. AGG-10 to AGG-16 in the parity suite.
sum/min/max/avg over a numeric field, carried as the proto
MetricDefinition/Metric message pair end to end: the engines emit a
Metric result (avg as sum/count accumulators), the service layer
reduces metrics across spaces, the graph layer maps them from and to
the libregraph metricDefinition/searchMetric objects.
Numeric and date ranges on both engines: bleve numeric and date-time range facets, OpenSearch range and date_range aggregations, a bound that is neither number nor date is rejected. A terms aggregation on a numeric field now points to ranges as the alternative. AGG-04, 05 and 07 to 09 in the parity suite.
Term buckets on both engines: bleve facets, OpenSearch terms aggregations, buckets merged across spaces and post-processed per BucketDefinition (minimum count, sort, size). Terms aggregations on numeric fields are rejected at the graph endpoint. Pinned in the parity suite as AGG-01 to AGG-03. Ranges, metrics and sub-aggregations are declined until the engines evaluate them.
MS Graph style search endpoint: searchRequest with KQL queryString,
from/size pagination (clamped to the spec's bounds), entityTypes
validated to driveItem, hits as driveItems with webUrl. The proto
carries metric aggregations as a MetricDefinition/Metric message pair
so an unset definition is distinguishable from any kind.
The byte-based truncation cut through the two-byte UTF-8 sequence of
Motörhead's ö, committing invalid UTF-8 into the parity README. Shared
rune-based ellipsize helper; matrix regenerated.
First tagged release carrying the merged search spec: the search query
endpoint with aggregations (metricDefinition/searchMetric,
geohashDefinition, aggregationFilterToken), sortProperty and the
auth-guest additions.
Point the go-micro.dev/v4 replace at the latest main-v4 maintenance
branch commit in butonic/go-micro (cd412c15) instead of the v4.11.3
tag. The new base is upstream v4.11.1 plus the registry cache
node-TTL fixes (upstream #2715, #2736, #2740), the concurrent map
access fix (upstream #2794), plus further dependency updates and test
fixes on the maintenance branch.
The branch also modernizes go-micro's own go.mod (go 1.26, lego,
dario.cat/mergo v1, x/deque v2, ...), and MVS pulls the aligned
versions into this module: lego v4.35.2 -> lego/v5 v5.5.2,
go-jose/go-jose/v4 -> v4.1.5, gofrs/flock -> v0.13.1,
mattn/go-isatty -> v0.0.24, go.uber.org/zap -> v1.28.0, x/net ->
0.59.0, miekg/dns -> 1.1.73, moby api/client, ProtonMail/go-crypto
-> 1.5.2, klauspost/compress -> 1.20.1, gorilla/handlers -> 1.5.2,
gobwas/ws -> 1.4.0, nxadm/tail -> 1.4.11, ...
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>
The AfterScenario hook only asserted that the clean command returned
200, but cleaning sessions happens asynchronously in the daemon. Poll
the session list until it is empty (60s deadline) so leftover sessions
do not leak into the next scenario.
The uploads sessions command builds a posix driver with async file
uploads enabled, which makes it join the "dcfs" JetStream queue group.
Clean/restart/resume events published by the command itself can then be
routed to the CLI's own short-lived consumer; the nats client auto-acks
them and they are lost when the process exits, leaving stale upload
sessions behind.
Disable asyncfileuploads for the CLI driver instance so it only lists
sessions and publishes events. Also emit [] instead of null when the
session list is empty so the JSON output stays parseable.
A trashed folder keeps its path in the index, so a new folder can take
the same one. The descendant lookup behind move, delete, restore and
purge matched on space and path only: purging the trashed folder took
the live folder and its descendants out of the index, and moving the
live folder carried the trashed tree along.
Both engines now also match the root's trash state; purge with
onlyDeleted keeps matching the trashed ones only.
Ported from owncloud/ocis#11693. The uploads clean command now emits an events.CleanUpload event via the event stream rather than calling Purge directly. Requires the corresponding reva bump (vendor changes pulled in separately).
cleanup and fix the upload id
tweak error messages
(cherry picked from commit f7e53bb94698875efd092abaa6f38b6608dad4d4)
Signed-off-by: Jörn Friedrich Dreyer <jfd@butonic.de>