Ana içeriğe geç

"transitions" ile etiketlenmiş 4 gönderi

Tüm Etiketleri Görüntüle

Release v0.0.90

· 6 dakikalık okuma
vNext Team
Burgan Tech Engineering

Overview

This release reorders the transition pipeline's epilogue so timers are never armed for a state the instance is already leaving. LifecycleOrder.Auto becomes 80 and LifecycleOrder.Schedule becomes 90 — auto-transition conditions are evaluated before scheduled transitions arm their timers — and a new guard skips arming entirely when the auto step has already selected a winner, logging ScheduledTransitionsSkippedForChainedNext (EventId 10156, Debug) instead of enqueuing a Dapr job and an InstanceJob row that the next hop would immediately tear down (#943). Beyond the wasted enqueue, the armed-then-cancelled window briefly exposed scheduled entries in the state function for states the instance was already leaving — clients could see a timer that would never fire. Alongside it, activation-episode tracing ties triggers, asynchronous jobs, subflows and event delivery into a single named episode, with synthetic activation spans and end-to-end activation duration metrics (#931). This release runs on component schema 0.0.53.

Release v0.0.86

· 11 dakikalık okuma
vNext Team
Burgan Tech Engineering

Overview

This release is trace-driven performance work on the paths a busy instance actually spends its time in. updateData admission becomes lock-free: the kind is status-neutral, so the async accept no longer takes the status lock or runs the duplicate-active-job guard, and N parallel updateData requests are all admitted — measured as zero 409s under five-way parallel load where the baseline trace showed 84% dead air (#917). Script compilation moves to async single-flight, so waiters await one shared compile instead of blocking thread-pool threads while Roslyn emits, taking cold-window Dapr p99 from 177.7 ms to 81.1 ms; the same change adds compile-cost tags to the task span and Trigger.Local.* spans for in-process trigger invocations (#917). Hot-path allocation drops across the board — response bodies are no longer buffered to measure their size, the EF command interceptor stops copying the full SQL text about six times per command, and raw request bodies are no longer eagerly decoded to UTF-16 — alongside a partial GIN index on InstancesData.Data that finally serves the @> containment predicates every attributes.* filter already emitted, compiled poll-path fingerprint queries, Server GC on every host, and InstanceWriteGate at 256 stripes (#911). On the release side, prerelease publishing moves from manual dispatch to PR labels (#912, #915). This release runs on component schema 0.0.53.

Release v0.0.80

· 14 dakikalık okuma
vNext Team
Burgan Tech Engineering

Overview

This release makes a client request observable from end to end and finishes the Busy-as-mutex work started in v0.0.79. Armed timers are now visible to clients — the state response carries a scheduledTransitions list built from active scheduled-transition jobs, each with a persisted UTC executeAtUtc taken from the new InstanceJob.ExecuteAt column, and the scheduled job set folds into the fingerprint ETag so a parked long-poller no longer misses a re-armed timer (response shape v6) (#876). Correlation becomes a four-carrier contract — W3C trace context, X-Request-Id, X-Correlation-Id and X-Workflow-Instance-Id each do exactly one job, propagate across the orchestration → execution → outbound-task boundary, and land in Elastic under stable label names, so one query returns a whole flow (#879, #882). Busy-as-mutex is refined in three places: a $self transition no longer re-runs the state's lifecycle, the accept path takes one lock instead of two, and an async accept on a parent holding an open SubFlow correlation now reserves the whole chain down to the leaf before answering 202 (#883, #884). This release runs on component schema 0.0.52.

Release v0.0.79

· 19 dakikalık okuma
vNext Team
Burgan Tech Engineering

Overview

This release turns functions into fully declared client contracts and closes long-standing gaps in transition authorization. Functions gain a declarative contractverbs, inputSchema, outputSchema, inputView, outputView — enforced at invocation (405 with Allow for undeclared verbs, 400 with field-level errors on schema violations) (#858); every contract slot also accepts rule-based entries (first match wins, trailing rule-less fallback) and is discoverable through new /info, /view, /schema endpoints plus a built-in catalog function linked from the state response (#868, #869). Views declare per-mode display with the new { sdi, mdi } object form alongside the legacy string (#858). Mapping scripts can read related instances — the parent that started this instance, or its own sub items — through context.Related instead of duplicating data across the boundary (#857). updateData and exit are now discoverable in availableTransitions and their roles actually filter (#859), availableIn entries can be role-scoped per state (#870), and all role grant evaluation funnels through one evaluator, fixing surfaces that disagreed about the same caller (#860). The state function returns completed child correlations with terminal outcomes (#856), and UrlTemplates collapses to a single BasePath (#871). Fixes cover component version-resolution caching (#867) and subflow terminal-event deduplication (#855). Transition execution moves to Busy-as-mutex — the Busy status itself is the execution mutex, updateData becomes a status-neutral reserve transition admitted unconditionally (the one safe way to update data and advance an instance under parallel requests), cancel/exit bypass the busy check, and every InstanceData row is persisted the moment it is produced (#877). Workflow tracing gains a business-focused span taxonomy (vnext.layer, vnext.span.category) on Aether 1.0.34, defaulting to the Business detail level (#874). This release runs on component schema 0.0.52.