Ana içeriğe geç

Breaking Changes: v0.0.80

· 4 dakikalık okuma
vNext Team
Burgan Tech Engineering

v0.0.80, $self hedefli transition'lar için pipeline'ı sadeleştirir, cancel/exit/timeout transition'larının Busy durumunu ne zaman set ettiğini değiştirir ve orchestration→execution sınırında correlation/trace header'larını sağlamlaştırır. Aşağıdaki maddeleri sürüm geçişinden önce gözden geçirin.

Breaking Changes

1. updateData artık state'in OnEntry/OnExit'ini tekrar çalıştırmıyor, timer'ları yeniden kurmuyor

Etkilenen Alan: Transition pipeline — $self hedefli transition'lar (migrations.json: self-target-transitions-skip-state-lifecycle) (vnext #883, vnext #884)

Önceki Davranış: updateData (hedefi her zaman $selfe sabitlenmiş) tüm pipeline'ı çalıştırıyordu: mevcut state'in OnExit task'ları çalışıyor, aynı state'in OnEntry task'ları ikinci kez çalışıyor ve state'in scheduled transition'ları iptal edilip sıfırdan yeniden kuruluyordu — her timeout sessizce sıfırlanıyordu.

Yeni Davranış: updateData için CancelScheduledJobs (39), OnExit (40), OnEntry (60) ve Schedule (80) adımları hariç tutulur. Transition'ın kendi onExecutionTasks'i, data yazımı ve auto-transition değerlendirmesi değişmeden çalışır; state hiç terk edilmediği/girilmediği için lifecycle hook'ları tekrar tetiklenmez. Yalnızca gerçek updateData transition'ını etkiler$self hedefli shared transition'lar (ve literal self-loop'lar) tam lifecycle'ı çalıştırmaya devam eder. Yön: davranış değişikliği.

Migration: updateData'nın state'in OnEntry'sini tekrar çalıştırmasına dayanan domain'ler bu mantığı transition'ın kendi onExecutionTasks'ine taşımalı. updateData'nın scheduled-transition timer'ını sıfırlamasına dayanan akışlar resetlemeyi kendileri modellemeli. Domain tanımlarında "target": "$self" için grep atmak faydalı olur.

2. cancel/exit/timeout artık Busy'yi pipeline yerine accept anında set ediyor

Etkilenen Alan: Transition admission / Busy durumu (vnext #884)

Önceki Davranış: cancel/exit/timeout transition'ları Busy 409 kontrolünden muaftı ve Busy bayrağı pipeline içinde set ediliyordu; bu transition'lar admission sırasında ayrı bir kilit almıyordu.

Yeni Davranış: cancel/exit/timeout artık Busy'yi accept anında, diğer tüm transition kind'leriyle aynı tek kilit altında set eder; iş IsPreReserved olarak pipeline'a girer ve pipeline ikinci kez kilit almaz. Sonuç: bir client'ın instance'ı Busy olarak gözlemlediği an daha erken kayar. Yön: davranış değişikliği.

Migration: Busy durumunu 202 yanıtından hemen sonra kontrol eden client/monitoring akışları, bu durumu artık daha erken görebileceğini hesaba katmalı; timing'e dayanan test veya izleme senaryolarını gözden geçirin.

3. Task binding'lerinde reserved trace/correlation header'ları artık ezilemiyor

Etkilenen Alan: Outbound task header binding'leri — HTTP, SOAP, Dapr service/binding/pub-sub/trigger invoker'ları (vnext #879, vnext #882)

Önceki Davranış: Bir task binding'i (mapping/config) traceparent, tracestate, baggage, x-request-id, X-Correlation-Id veya X-Workflow-Instance-Id header'larını kendi değerleriyle set edebiliyordu; bu, correlation zincirini kopartabiliyor veya sahte bir correlation ID'yi taşıyabiliyordu.

Yeni Davranış: Bu altı header reserved kabul edilir (IsReservedTraceHeader) — mapping'de tanımlı değerleri kaldırılır ve yalnızca doğrulanmış activity baggage'ından gelen değerlerle yeniden yazılır. Kimlik claim'leri (sub, act_sub) reserved değildir ve yalnızca fill-if-absent kuralına tabidir — binding bunları set ederse o değer kazanır. Yön: daha kısıtlayıcı.

Migration: Task tanımlarında bu altı header'ı elle set eden mapping'leri tarayın; artık hiçbir etkisi olmayacak. Correlation zincirini taşımak için bu değerlere ihtiyaç varsa, header yerine platformun otomatik yaydığı context'e güvenin.

4. Log enricher alan adları RequestHeader. prefix'i olmadan geliyor

Etkilenen Alan: Structured logging enricher alanları (Aether ≥ 1.0.35) (vnext #882)

Önceki Davranış: sub / act_sub gibi identity claim'leri log kayıtlarında requestheader_act_sub gibi prefix'li ve backend'e göre düzleştirilmiş adlarla görünüyordu.

Yeni Davranış: LoggingEnricherOptions:RequestHeaderKeyPrefix her host'ta "" olarak ayarlandı; alanlar artık sub, act_sub, jti, role, x_parent_instance_id, user_agent gibi prefix'siz adlarla yazılıyor. Response header'ları için prefix varsayılanda kalır. Yön: davranış değişikliği.

Migration: requestheader_act_sub gibi eski alan adlarına dayanan Kibana/Elastic dashboard'larını ve saved query'lerini yeni prefix'siz adlara (act_sub, sub, …) güncelleyin. Bu değişiklik Aether ≥ 1.0.35 gerektirir.


Bu sürümün tüm özellikleri için Release v0.0.80 notuna bakın.

vNext Runtime Platform Team