Breaking Changes: v0.0.84
v0.0.84, instance query (filter/sort/groupBy/aggregation) doğrulamasını fail-open'dan fail-closed'a çevirir. Önceden desteklenmeyen veya bozuk bir sorgu parametresi sessizce yok sayılıp istek yine de 200 dönüyordu — bu sürümden sonra çalıştırılamayan her şey açıkça reddediliyor. Aşağıdaki maddeleri sürüm geçişinden önce gözden geçirin.
Breaking Changes
1. Geçersiz filter artık 400 ile reddediliyor
Etkilenen Alan: Instance list/filter sorguları — Orchestration ve Monitoring (vnext #881)
Önceki Davranış:
Desteklenmeyen bir operatör (gte, lte, neq, contains, ...), bozuk/kesik JSON veya yanlış yazılmış bir envelope anahtarı (fitler) sessizce yok sayılıyor, ilgili koşul hiç uygulanmadan sorgu tüm satırları döndürüyordu.
Yeni Davranış:
Bu durumların tamamı 400 Validation:900011 ile (filter.unknownOperator, filter.unrecognizedFormat, filter.unknownProperty, filter.noOperator, filter.emptyLogicalOperator, filter.legacyNotAggregatable gibi alt kodlarla) reddedilir; bilinen yazım hataları için düzeltme önerisi de döner (gte → ge gibi). Boş filtre ({}, {"attributes":{}}) hâlâ "kısıtlama yok" anlamına gelir. Yön: daha kısıtlayıcı.
Migration:
gte/lte/neq/contains gibi vocabulary-dışı operatörleri desteklenen wire operatörlerine çevirin (ge, le, ne, like/match). Bu operatörlerin daha önce geniş sonuç döndürdüğünü unutmayın — onlara dayanan rapor/ekranlarda sayılar yanlış olabilir.
2. Geçersiz sort/orderBy artık 400 ile reddediliyor
Etkilenen Alan: Instance list sıralaması — Orchestration ve Monitoring (vnext #881)
Önceki Davranış:
sort=-createdAt gibi bir kısayol, yanlış direction değeri, bilinmeyen alan adı veya güvensiz attributes. path'i sessizce yok sayılıyor, sorgu CreatedAt DESC'e düşüyordu.
Yeni Davranış:
Tüm bu durumlar 400 Validation:900012 ile (sort.invalidJson, sort.invalidDirection, sort.unknownField, sort.unsafePath) reddedilir. sort/orderBy her zaman JSON formatı gerektirir: sort={"field":"createdAt","direction":"desc"}. Yön: daha kısıtlayıcı.
Migration:
-field kısayolunu kullanan tüm client/entegrasyonları JSON forma taşıyın. Erişim loglarını sort=/orderBy= için tarayıp { (URL-encoded %7B) ile başlamayan değerleri düzeltin.
3. groupBy/aggregation doğrulaması ve legacy filtre + aggregation kombinasyonu reddi
Etkilenen Alan: Instance query aggregation/groupBy — Orchestration ve Monitoring (vnext #881)
Önceki Davranış:
Legacy (field=operator:value) formatta bir filtre groupBy/aggregation ile birlikte kullanıldığında GraphQL parser'a olduğu gibi veriliyor, koşul sessizce üretilmiyor ve aggregation filtresiz çalışıyordu; boş/bozuk aggregation JSON'u da benzer şekilde yok sayılıyordu.
Yeni Davranış:
Legacy format + aggregation kombinasyonu 400 Validation:900011 (filter.legacyNotAggregatable) ile reddedilir; geçersiz groupBy/aggregation JSON'u sırasıyla 400 Validation:900013 / Validation:900014 döner. Yön: daha kısıtlayıcı.
Migration:
Grouping/aggregation kullanan sorgularda filtreyi GraphQL-tarzı JSON olarak yazın; legacy field=operator:value sözdizimini bırakın.
4. GetInstancesTask'ta "-field" sort kısayolu artık reddediliyor; geçersiz filtre task'ı fail ediyor
Etkilenen Alan: GetInstancesTask workflow task'ı — local ve remote (Dapr) yürütme (vnext #881)
Önceki Davranış:
Task tanımındaki sort/filter çalıştırmadan önce doğrulanmıyordu; "sort": "-CreatedAt" dokümante edilmiş bir kısayol gibi görünse de hiçbir zaman çalışmıyordu — ParseOrderBy null dönüyor ve sorgu CreatedAt DESC'e düşüyordu. Geçersiz bir filter de task'ı sessizce filtresiz çalıştırıyordu.
Yeni Davranış:
Task'ın filter ve sort alanları çalıştırmadan önce doğrulanır; geçersiz bir değer Result.Fail döner ve error boundary zincirine girer — bir Abort kuralı altında instance Faulted olabilir. Bu, önceden çalışan ve deploy edilmiş tanımların, kod değişikliği olmadan yalnızca runtime upgrade'i ile durabileceği anlamına gelir. Yön: daha kısıtlayıcı.
Migration:
"sort": "-CreatedAt" değerini "sort": "{\"field\":\"createdAt\",\"direction\":\"desc\"}" gibi JSON forma geçirin (ayrıntılı eşleme tablosu için vnext reposundaki docs/contracts/instance-query-validation-breaking-changes.md'e bakın). Runtime upgrade'inden önce domain paketlerinizi "sort" alanı { ile başlamayan tüm GetInstancesTask tanımları için tarayın ve redeploy edin.
Bu sürümün tüm özellikleri için Release v0.0.84 notuna bakın.
vNext Runtime Platform Team
