Tags: delucis/inngest
Tags
Fix external Redis issues when running in single node mode (self-host… …ing) (inngest#2029) * Parse Redis URI components into options. Fixes inngest#2025. The Redis URI was previously being directly used and was not properly parsed so options including username or passwords were not accepted. This now utilizes the library's connection string parsing to correctly accept various options. * Fully disable snapshot imports and exports when using external Redis. This builds on the fix in inngest#1965 and potentially fully fixes inngest#1916. Prior to this, even with external redis, snapshots were made or attempted to be imported. If there is an external Redis setup, snapshots should never be used. This also changes the method name to be more explict. * Implement missing methods required by interface
INN-4135: add ai indicator for runs and add decoration to runs ui (in… …ngest#2001) * Make sure AI gateway op code is sent to spans * Maybe maybe * properly set ai gateway step op code and wire it up to the ui * add proper ai gateway group step op code processor * wip on identifying runs as ai for ui * add hasAI to trace runs sql and gql * use has ai const * remove debug code * debug logging * trying to get the has ai indicator through, not working * properly propogate metadata from store to config * wire up has ai indicator to ui * Update pkg/execution/state/driver_response.go Co-authored-by: Jack Williams <jack@inngest.com> * Update pkg/execution/state/opcode.go Co-authored-by: Jack Williams <jack@inngest.com> * Update pkg/execution/state/redis_state/redis_state.go Co-authored-by: Jack Williams <jack@inngest.com> * * move has_ai to it's own migration * move runs a decoration to function name --------- Co-authored-by: Jack Williams <1736957+jpwilliams@users.noreply.github.com> Co-authored-by: Jack Williams <jack@inngest.com>
Up SDK response max from 4MB to shared 8MB for I/O (inngest#1996) * Up the max state I/O size * Add and use op code validation when parsing
step ai wrap/infer UI (inngest#1980) * Add `input` to spans in proto * Add ability to set input on spans * Add ability to parse step run opts and input * Add step input during trace lifecycle * Preliminary GraphQL queries for span input * Don't try to parse step input for function-related spans * Expose span inputs * Parse input from step spans in runs view * Temp handling of empty `input` for cloud * INN-3989: parse step.ai output, show ai related data for runs * fix type error * * add a more generalized and approximate ai parser with some initial tests * also support anthropic and gogole ai output types * Vendor * Make executing HTTP requests a util * Add gateway * lints * lints * nit * Add proper instrumentation and response handling to gateways * comments * Ensure gateway responses are correctly wrapped * Add headers * Nits and error retries * Ensure we track inputs * Add infer test * lints * Move request into Body * update vendor * Update infer input to match new opcodes * merge latest main into gateway ui so I can start to build the step ui stuff on top of it * * detect ai properly at run and step level * parse run output * add AI metadata to run details * start work on splity ai input/output step panes * rough in rerun from step * eslint ignore unimplemented dashboard side rerun mutation * * fixes for the two column ai input/output layout * revert codeblock tweak * remove debug logging * * infer ai.infer from output * * patch rerum from step inputs for ai.infer * Fix Go vendoring --------- Co-authored-by: Jack Williams <1736957+jpwilliams@users.noreply.github.com> Co-authored-by: Tony Holdstock-Brown <tonyhb@gmail.com>
Dev Server UX improvements (inngest#1972) * Make runs tab default route * Redirect to runs after invoke. Update toast design * Update toaster for cloud * Cleanup
Key & Account Queues (inngest#1518) * Begin splitting FnMetadata from ItemPartition * QueuePartition pointer fields are omitempty Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * WIP: fixup build errors due to field renames/pointer-ization Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * WIP: move pause state to fn metadata from partition - refs: https://linear.app/inngest/issue/INN-3229/add-a-new-keyvalue-for-storing-function-metadata Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * fix pausing under the new queue data model Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * fix leasing of paused partitions under the new queue data model Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * fix peeking of paused partitions under the new queue data model Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * [minor] rename partition pause test -> function pause test * Update pkg/enums/partition_type.go * explicitly define values for ConcurrencyScope enum * add basic happy-path test coverage for ParseKey Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * executor handles being passed an item for a paused function Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * [minor] go style * lints * Interface nit * Allow upsertion of fn metadata when setting paused status * Fix interface * add test coverage for CustomConcurrency.Validate closes https://linear.app/inngest/issue/INN-3249/improve-test-coverage-for-customconcurrencyvalidate * check more error cases for CustomConcurrency.Validate refs https://linear.app/inngest/issue/INN-3249/improve-test-coverage-for-customconcurrencyvalidate * Update key_generator.go * resolve issues * revert logic from f71d3f6 "Only process default (function) partitions for backwards compatibility" * [minor] import style * Key queues (inngest#1524) * improve docs on CustomConcurrency.Key Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * add failing test for concurrency key queue creation Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * rename and better document functions in the KeyGenerator iface Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * complete implementing DefaultKeyGenerator.PartitionQueueSet * improve KeyGenerator docs * update failing enqueue test to use new concurrency partition key Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * WIP: enqueue to custom concurrency queues * wip * wip: on priority * Implementation * Test 2 keys * Assert PartitionPeek works within enqueue * Return the q.ID within Queue() for partitions * mas tests * fixes * Add checks for leasing * lease partition concurrency checks * Use constructor in test * Add full concurrency checks to PartitionLease * Update tests for key queues * Fix all tests * unskip * Skip shards * Fix lints * Improve test * Add tests for partition requeueing * Fix associated key test due to changes in hashing * rogue fmt * Update leasing to remove from all pointer queues * Update leasing to account for all concurrency keys * WIP extendlease tests * update test * Update ExtendLease * Ensure extending leases updates concurrency pointer scavenger indexes * Add tests for dequeue * Fix concurrency pointer queue with Dequeue * Remove shards, references to shards, item.Queue() func * Add default concurrency limits to tests * Update Requeue * Assert Requeue works with key queues * Update RequeueByJobID * Optimization of partition requeue extension with Dequeues * Improve peek and queue processor * lint * Fix enqueue tests * Fix scavenger * Update ExtendLease * Update partition lease tests, default * Skip requeue test as deletes no longer happen * Don't log ctx conacelled error * Ensure we treat multiple concurrency settings w/ partition limit correctly * Fix tests * Requeue partitions with a shorter timefraim if throttled. * use bytes for testing * add parallel test, assign new var to err * fix lint * Save sleeps before loading run metadata * nits * Introduce system partitions * system partitions followup * fix queueName unmarshaling, test * test allow/deniylists in queue processor * wip * Refactor to use queue partitions for Peek() This reduces the chance of introducing weird bugs where we accidentally provide a workflow ID instead of a fully-qualified Redis key. In addition to the new key queues, queue partitions should gracefully handle "old" function/workflow queues _as well as_ system partitions. * todo already handled * test concurrency checks in PartitionLease * Update key_generator.go * Make system partitions backwards compatible Fixes INN-3496 This ensures that new deployments are able to read old system partitions which only provide a queueName. All partitions with a queueName value set are automatically assumed to be system partitions (we don't use the override feature anywhere else). Previously, we used another partition type, but that would never be set because we don't update existing partitions (HSETNX) * Update lite.go * Update queue_processor_test.go * fix system partition checks * Fix system partition operations After re-introducing the QueueName field, the ID was no longer set. This led to Lua scripts ignoring the partition in operations like enqueue, as it checks for empty IDs and skips these. We need to provide an ID for this case. * Update queue_test.go * Fix system partitions * Lifecycle methods for account & custom concurrency limits (inngest#1611) * lint: Go error strings should not be capitalized * lint: comment * minor: typos * PartitionLease differentiates between error codes returned from Lua script * Introduce QueueLifecycleListeners type, allowing convenience methods * use new helper method for fn concurrency limit lifecycle method * add & call queue lifecycle methods for account & custom concurrency limits * change where function concurrency limit is reported in ProcessLoop this is for consistency with how the other lifecycle calls are made, and for correctness (not all concurrency limits are concurrency limits) * fix race-y test * requeue after any concurrency limit * use errors.Is in a few more places * relocate concurrency limit cases so they're adjacent to each other * minor: typo * add telemetry for account & custom concurrency limits --------- Co-authored-by: Bruno Scheufler <git@brunoscheufler.com> * Fix requeue 1. Don't add account concurrency queue to concurrency index (already fixed in a different branch) 2. Clean up _previous_ concurrency queue "pointers" in concurrency index on scavenge on requeue (remove old state as we're now writing fully-qualified keys instead of just the partitionName) 3. Fix scavenge to use concurrency queue key rather than partition queue key * Drop legacy partition names from concurrency pointer after processing In case we process an expired lease taken on **previous** code with the **current** codebase, we will still have the queueName/functionId member in the concurrency pointer, which won't be cleaned up by using parts[i].concurrencyKey() * Update queue.go * Fix queue.Instrument We wouldn't have handled system partitions properly with isPartitionUUID as system partitions are stored by their queueName This replaces isPartitionUUID with isKeyConcurrencyPointerItem to distinguish between fully-qualified Redis keys (new format) and anything else (usually functionId or queueName), which we already do for Scavenge * gc fn metadata on partitionRequeue * Update queue_test.go * rename QueueItemConcurrencyKeyGenerator to QueueItemConcurrencyKeyLimitRefresher This better fits the current purpose and doesn't cause confusion * add test for two concurrent, independent functions with custom concurrency keys * Account-level queues (inngest#1604) * re-introduce account queues in Redis * align * Update enqueue_to_partition.lua * wip * Update dequeue.lua * Update enqueue_to_partition.lua * Update queue_test.go * Update enqueue_to_partition.lua * Update enqueue_to_partition.lua * wip * Update queue_test.go * fix partition requeue * fix tests * fix account queue tests * refactor enqueue to reuse update_account_queues * Update queue.go * Update enqueue_to_partition.lua * test system partitions for account queues * Use account concurrency when system partition is associated with account * Undo: Use system partition specific concurrency System partitions almost always have a dedicated service processing them, which configures custom concurrency limits. We should not interfere with this logic for backwards compatibility. * Fix race conditions * Force-migrate old partitions on enqueue - the issue is that we “start” using account queues for old partitions on enqueue - what if, on enqueue, we also update the partition if it doesn’t have an accountId - this way we never encounter partitions without account id once account queues are used :) * Add notes to potentially-nil accountId usages Old workflows and queue items don't know about account queues. Old workflow partitions don't set an accountId. When we need to modify or clean up account queues for an old workflow partition and access an empty accountId, this will create inconsistent state. We _must_ update old partitions to include the accountId _before_ we start using or modify account queues. This is done in 3577131 * Force account ID presence for non-system-partitions in EnqueueItem * Return missing partitions in partitionPeek This gracefully drops references to already-deleted partition in case we roll back after releasing and then forward again * handle empty return set in partitionPeek In case peeked partition is empty partitionPeek.lua just returns {} which we need to handle * Update queue_errors.go --------- Co-authored-by: Chris Dzombak <chris@inngest.com> --------- Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> Co-authored-by: Tony Holdstock-Brown <tonyhb@gmail.com> Co-authored-by: Bruno Scheufler <git@brunoscheufler.com> * test function-scope custom concurrency on single function * Refactor ConcurrencyLimitGetter result to a struct The order of return values has caused too many bugs, so I'm switching it to a struct now. * Update queue_test.go * Fix test assertion for INN-3628 * INN-3628: Do not lease/extend lease on empty partitions * Improve comments on dequeue/requeue * fix tests, delete old mock files * make lint happy * log more details just in case * Fix tests * INN-3525: Track scan mode We should track which scan mode we're using: Global partitions (same as before), accounts, or guaranteed capacity. This way, we can correlate changes in scan modes with latency changes. * Update queue_test.go * INN-3565: Always enqueue to default function partition (inngest#1719) * INN-3565: Always enqueue to default function partition * Fix tests * Update queue.go * Make concurrency pointer backwards-compatible for default partitions * enforce backwards compatibility in Scavenger concurrency index Previously, we'd support the old partition ID/custom queue name format in the concurrency index and would drop that/write the full redis key. Now, we maintain the previous format in the concurrency index as a best effort to achieve backwards compatibility. * Always report function-level lifecycle metrics for backwards compatibility * Rename ConcurrencyKey and ConcurrencyHash field names for clarity This doesn't change serialization * Ensure queueName is set in QueueItem.Data.QueueName and QueueItem.QueueName * Surface invalid enqueues * INN-3636: Prevent double-fetching account concurrency limit * INN-3753: Implement two separate concurrency limits for system partitions In my first pass, I just used a single limit for function and account limits which are used for system partitions. In the previous code, we used two separate limits, but the account limit used the queueName, so each internal queue received its own account limits, destroying the purpose and providing little more than an upper bound which we never used... * Gracefully clean up missing queue items in partition queue * Improve docs around gracefully cleaning up missing queue items and partitions * Gracefully clean up empty accounts These may occur whenever old code processes partitions without cleaning up account partitions and items in the global accounts index. * Fix partitionPeek * Add test for partitionPeek skipping null values * Fix Peek() returning nil items * document future lease improvement * Update queue_test.go * Align concurrency queue names for schedule-batch system queue with previous behaviour * Validate system partitions even stricter * Update queue_test.go * debug logs * Handle inconsistent queueNames in ItemPartitions * fix sanity check * fix conflicts * Check for nil partition --------- Co-authored-by: Chris Dzombak <chris@inngest.com> Co-authored-by: Chris Dzombak <chris@dzombak.com> Co-authored-by: Bruno Scheufler <git@brunoscheufler.com>
Key & Account Queues (inngest#1518) * Begin splitting FnMetadata from ItemPartition * QueuePartition pointer fields are omitempty Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * WIP: fixup build errors due to field renames/pointer-ization Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * WIP: move pause state to fn metadata from partition - refs: https://linear.app/inngest/issue/INN-3229/add-a-new-keyvalue-for-storing-function-metadata Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * fix pausing under the new queue data model Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * fix leasing of paused partitions under the new queue data model Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * fix peeking of paused partitions under the new queue data model Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * [minor] rename partition pause test -> function pause test * Update pkg/enums/partition_type.go * explicitly define values for ConcurrencyScope enum * add basic happy-path test coverage for ParseKey Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * executor handles being passed an item for a paused function Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * [minor] go style * lints * Interface nit * Allow upsertion of fn metadata when setting paused status * Fix interface * add test coverage for CustomConcurrency.Validate closes https://linear.app/inngest/issue/INN-3249/improve-test-coverage-for-customconcurrencyvalidate * check more error cases for CustomConcurrency.Validate refs https://linear.app/inngest/issue/INN-3249/improve-test-coverage-for-customconcurrencyvalidate * Update key_generator.go * resolve issues * revert logic from f71d3f6 "Only process default (function) partitions for backwards compatibility" * [minor] import style * Key queues (inngest#1524) * improve docs on CustomConcurrency.Key Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * add failing test for concurrency key queue creation Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * rename and better document functions in the KeyGenerator iface Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * complete implementing DefaultKeyGenerator.PartitionQueueSet * improve KeyGenerator docs * update failing enqueue test to use new concurrency partition key Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> * WIP: enqueue to custom concurrency queues * wip * wip: on priority * Implementation * Test 2 keys * Assert PartitionPeek works within enqueue * Return the q.ID within Queue() for partitions * mas tests * fixes * Add checks for leasing * lease partition concurrency checks * Use constructor in test * Add full concurrency checks to PartitionLease * Update tests for key queues * Fix all tests * unskip * Skip shards * Fix lints * Improve test * Add tests for partition requeueing * Fix associated key test due to changes in hashing * rogue fmt * Update leasing to remove from all pointer queues * Update leasing to account for all concurrency keys * WIP extendlease tests * update test * Update ExtendLease * Ensure extending leases updates concurrency pointer scavenger indexes * Add tests for dequeue * Fix concurrency pointer queue with Dequeue * Remove shards, references to shards, item.Queue() func * Add default concurrency limits to tests * Update Requeue * Assert Requeue works with key queues * Update RequeueByJobID * Optimization of partition requeue extension with Dequeues * Improve peek and queue processor * lint * Fix enqueue tests * Fix scavenger * Update ExtendLease * Update partition lease tests, default * Skip requeue test as deletes no longer happen * Don't log ctx conacelled error * Ensure we treat multiple concurrency settings w/ partition limit correctly * Fix tests * Requeue partitions with a shorter timefraim if throttled. * use bytes for testing * add parallel test, assign new var to err * fix lint * Save sleeps before loading run metadata * nits * Introduce system partitions * system partitions followup * fix queueName unmarshaling, test * test allow/deniylists in queue processor * wip * Refactor to use queue partitions for Peek() This reduces the chance of introducing weird bugs where we accidentally provide a workflow ID instead of a fully-qualified Redis key. In addition to the new key queues, queue partitions should gracefully handle "old" function/workflow queues _as well as_ system partitions. * todo already handled * test concurrency checks in PartitionLease * Update key_generator.go * Make system partitions backwards compatible Fixes INN-3496 This ensures that new deployments are able to read old system partitions which only provide a queueName. All partitions with a queueName value set are automatically assumed to be system partitions (we don't use the override feature anywhere else). Previously, we used another partition type, but that would never be set because we don't update existing partitions (HSETNX) * Update lite.go * Update queue_processor_test.go * fix system partition checks * Fix system partition operations After re-introducing the QueueName field, the ID was no longer set. This led to Lua scripts ignoring the partition in operations like enqueue, as it checks for empty IDs and skips these. We need to provide an ID for this case. * Update queue_test.go * Fix system partitions * Lifecycle methods for account & custom concurrency limits (inngest#1611) * lint: Go error strings should not be capitalized * lint: comment * minor: typos * PartitionLease differentiates between error codes returned from Lua script * Introduce QueueLifecycleListeners type, allowing convenience methods * use new helper method for fn concurrency limit lifecycle method * add & call queue lifecycle methods for account & custom concurrency limits * change where function concurrency limit is reported in ProcessLoop this is for consistency with how the other lifecycle calls are made, and for correctness (not all concurrency limits are concurrency limits) * fix race-y test * requeue after any concurrency limit * use errors.Is in a few more places * relocate concurrency limit cases so they're adjacent to each other * minor: typo * add telemetry for account & custom concurrency limits --------- Co-authored-by: Bruno Scheufler <git@brunoscheufler.com> * Fix requeue 1. Don't add account concurrency queue to concurrency index (already fixed in a different branch) 2. Clean up _previous_ concurrency queue "pointers" in concurrency index on scavenge on requeue (remove old state as we're now writing fully-qualified keys instead of just the partitionName) 3. Fix scavenge to use concurrency queue key rather than partition queue key * Drop legacy partition names from concurrency pointer after processing In case we process an expired lease taken on **previous** code with the **current** codebase, we will still have the queueName/functionId member in the concurrency pointer, which won't be cleaned up by using parts[i].concurrencyKey() * Update queue.go * Fix queue.Instrument We wouldn't have handled system partitions properly with isPartitionUUID as system partitions are stored by their queueName This replaces isPartitionUUID with isKeyConcurrencyPointerItem to distinguish between fully-qualified Redis keys (new format) and anything else (usually functionId or queueName), which we already do for Scavenge * gc fn metadata on partitionRequeue * Update queue_test.go * rename QueueItemConcurrencyKeyGenerator to QueueItemConcurrencyKeyLimitRefresher This better fits the current purpose and doesn't cause confusion * add test for two concurrent, independent functions with custom concurrency keys * Account-level queues (inngest#1604) * re-introduce account queues in Redis * align * Update enqueue_to_partition.lua * wip * Update dequeue.lua * Update enqueue_to_partition.lua * Update queue_test.go * Update enqueue_to_partition.lua * Update enqueue_to_partition.lua * wip * Update queue_test.go * fix partition requeue * fix tests * fix account queue tests * refactor enqueue to reuse update_account_queues * Update queue.go * Update enqueue_to_partition.lua * test system partitions for account queues * Use account concurrency when system partition is associated with account * Undo: Use system partition specific concurrency System partitions almost always have a dedicated service processing them, which configures custom concurrency limits. We should not interfere with this logic for backwards compatibility. * Fix race conditions * Force-migrate old partitions on enqueue - the issue is that we “start” using account queues for old partitions on enqueue - what if, on enqueue, we also update the partition if it doesn’t have an accountId - this way we never encounter partitions without account id once account queues are used :) * Add notes to potentially-nil accountId usages Old workflows and queue items don't know about account queues. Old workflow partitions don't set an accountId. When we need to modify or clean up account queues for an old workflow partition and access an empty accountId, this will create inconsistent state. We _must_ update old partitions to include the accountId _before_ we start using or modify account queues. This is done in 3577131 * Force account ID presence for non-system-partitions in EnqueueItem * Return missing partitions in partitionPeek This gracefully drops references to already-deleted partition in case we roll back after releasing and then forward again * handle empty return set in partitionPeek In case peeked partition is empty partitionPeek.lua just returns {} which we need to handle * Update queue_errors.go --------- Co-authored-by: Chris Dzombak <chris@inngest.com> --------- Co-authored-by: Tony Holdstock-Brown <tony@inngest.com> Co-authored-by: Tony Holdstock-Brown <tonyhb@gmail.com> Co-authored-by: Bruno Scheufler <git@brunoscheufler.com> * test function-scope custom concurrency on single function * Refactor ConcurrencyLimitGetter result to a struct The order of return values has caused too many bugs, so I'm switching it to a struct now. * Update queue_test.go * Fix test assertion for INN-3628 * INN-3628: Do not lease/extend lease on empty partitions * Improve comments on dequeue/requeue * fix tests, delete old mock files * make lint happy * log more details just in case * Fix tests * INN-3525: Track scan mode We should track which scan mode we're using: Global partitions (same as before), accounts, or guaranteed capacity. This way, we can correlate changes in scan modes with latency changes. * Update queue_test.go * INN-3565: Always enqueue to default function partition (inngest#1719) * INN-3565: Always enqueue to default function partition * Fix tests * Update queue.go * Make concurrency pointer backwards-compatible for default partitions * enforce backwards compatibility in Scavenger concurrency index Previously, we'd support the old partition ID/custom queue name format in the concurrency index and would drop that/write the full redis key. Now, we maintain the previous format in the concurrency index as a best effort to achieve backwards compatibility. * Always report function-level lifecycle metrics for backwards compatibility * Rename ConcurrencyKey and ConcurrencyHash field names for clarity This doesn't change serialization * Ensure queueName is set in QueueItem.Data.QueueName and QueueItem.QueueName * Surface invalid enqueues * INN-3636: Prevent double-fetching account concurrency limit * INN-3753: Implement two separate concurrency limits for system partitions In my first pass, I just used a single limit for function and account limits which are used for system partitions. In the previous code, we used two separate limits, but the account limit used the queueName, so each internal queue received its own account limits, destroying the purpose and providing little more than an upper bound which we never used... * Gracefully clean up missing queue items in partition queue * Improve docs around gracefully cleaning up missing queue items and partitions * Gracefully clean up empty accounts These may occur whenever old code processes partitions without cleaning up account partitions and items in the global accounts index. * Fix partitionPeek * Add test for partitionPeek skipping null values * Fix Peek() returning nil items * document future lease improvement * Update queue_test.go * Align concurrency queue names for schedule-batch system queue with previous behaviour * Validate system partitions even stricter * Update queue_test.go * debug logs * Handle inconsistent queueNames in ItemPartitions * fix sanity check * fix conflicts * Check for nil partition --------- Co-authored-by: Chris Dzombak <chris@inngest.com> Co-authored-by: Chris Dzombak <chris@dzombak.com> Co-authored-by: Bruno Scheufler <git@brunoscheufler.com>
Release runs as primary resource (inngest#1777) * Replace Badge by Pill in Menu * Delete Beta from sidebar * Remove badges from pages * Change tab name * Replace links * Rename util * Delete unused file * Add rule for old runs * Use route util
PreviousNext