Giter VIP home page Giter VIP logo

queues-redis-driver's Introduction

queues-redis-driver's People

Contributors

0xtim avatar andrewangeta avatar bennydebock avatar gwynne avatar jaapwijnen avatar jdmcd avatar kishimotovn avatar maciejtrybilo avatar mordil avatar tanner0101 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

queues-redis-driver's Issues

error: because no versions of queues-redis-driver match the requirement 1.0.0..<2.0.0

I tried to follow the documentation here: https://docs.vapor.codes/4.0/queues/

My Package.swift:

// swift-tools-version:5.2
import PackageDescription

let package = Package(
    name: "MyProject",
    platforms: [
       .macOS(.v10_15)
    ],
    dependencies: [
        // ๐Ÿ’ง A server-side Swift web framework.
        .package(url: "https://github.com/vapor/vapor.git", from: "4.0.0"),
        .package(url: "https://github.com/vapor/fluent.git", from: "4.0.0"),
        .package(url: "https://github.com/vapor/fluent-postgres-driver.git", from: "2.0.0"),
        .package(url: "https://github.com/vapor/queues-redis-driver.git", from: "1.0.0"),
        .package(url: "https://github.com/henrik-dmg/HPOpenWeather", from: "3.0.0")
    ],
    targets: [
        .target(
            name: "App",
            dependencies: [
                .product(name: "Fluent", package: "fluent"),
                .product(name: "FluentPostgresDriver", package: "fluent-postgres-driver"),
                .product(name: "HPOpenWeather", package: "HPOpenWeather"),
                .product(name: "QueuesRedisDriver", package: "queues-redis-driver"),
                .product(name: "Vapor", package: "vapor")
            ],
            swiftSettings: [
                .unsafeFlags(["-cross-module-optimization"], .when(configuration: .release))
            ]
        ),
        .target(name: "Run", dependencies: [.target(name: "App")]),
        .testTarget(name: "AppTests", dependencies: [
            .target(name: "App"),
            .product(name: "XCTVapor", package: "vapor"),
        ])
    ]
)

giving me the following error:

error: because no versions of queues-redis-driver match the requirement 1.0.0..<2.0.0 and root depends on queues-redis-driver 1.0.0..<2.0.0, version solving failed.

What am I missing here?

Crash in jobs

        s.provider(JobsProvider(refreshInterval: .seconds(1)))

        s.extend(JobsConfiguration.self) { configuration, container in
            let job = try ExecutorJob(container)
            configuration.add(job)
        }
        
        s.register(JobsPersistenceLayer.self) { c in
            let source = RedisConnectionSource(
                config: RedisConfiguration(
                    hostname: "127.0.0.1",
                    port: 6380,
                    password: nil,
                    database: 0,
                    logger: nil
                ),
                eventLoop: c.eventLoop
            )
            let pool = ConnectionPool<RedisConnectionSource>(source: source)
            return JobsRedisDriver(client: pool, eventLoop: c.eventLoop)
        }

image

Use of `dispatch` requires explicit use of `hop(to:)`

Currently, when you dispatch a job inside a route handler or another context you can run into a NIO precondition that the dispatch method is not returning on the same event loop. This happens due to _QueuesRedisDriver using a client property, which is basically RedisConnectionPool which could be on any of app.eventLoopGroup's event loops.

Even though _QueuesRedisDriver conforms to RedisClient and has a eventLoop property, it still uses client to send the request, which means it ends up on the pool's event loop, causing the precondition.

An easy fix is adding .hop(to:) whenever you use .dispatch() for example. However, this can get tedious to remember. So, this package or RedisStack should handle hopping to the context.eventLoop automatically

Job run failing. connection timeout

Every time I start my server the job that is supposed to start immediately is failing with the error:
[ ERROR ] Job run failed: RedisConnectionPoolError(baseError: RediStack.RedisConnectionPoolError.BaseError.timedOutWaitingForConnection) (Queues/QueuesCommand.swift:122)

When I enable debug logging the error is surrounded by endless messages like this one:

[ DEBUG ] sending command [rdstk_args: [vapor_queues[default], vapor_queues[default]-processing], rdstk_command: RPOPLPUSH, rdstk_conn_id: 65F8B004-C293-4D82-A169-00A743F90973, rdstk_conpool_id: 7CEE7851-B2D5-4633-A7CD-EB562023F067] (RediStack/RedisConnection.swift:245)
[ DEBUG ] sending command [rdstk_args: [vapor_queues[default], vapor_queues[default]-processing], rdstk_command: RPOPLPUSH, rdstk_conn_id: 5048909A-DB80-4824-BAF5-D2CA120C4541, rdstk_conpool_id: 7CEE7851-B2D5-4633-A7CD-EB562023F067] (RediStack/RedisConnection.swift:245)
[ DEBUG ] command succeeded [rdstk_conn_id: 5048909A-DB80-4824-BAF5-D2CA120C4541, rdstk_conpool_id: 7CEE7851-B2D5-4633-A7CD-EB562023F067, rdstk_result: NULL] (RediStack/RedisConnection.swift:272)

I initialised queues like this:

let redisConf = try RedisConfiguration(
    hostname: Environment.get("REDIS_HOST") ?? "localhost",
    port: Environment.get("REDIS_PORT").flatMap(Int.init(_:)) ?? RedisConnection.Configuration.defaultPort,
    password: app.getSecret(with: "REDIS").wait(),
    database: Environment.get("REDIS_DB").flatMap(Int.init(_:))
)
app.queues.use(.redis(redisConf))

Afterwards I added my jobs and then dispatched one job that should start immediately at the end of my configure.swift file:

try app.queues.queue.dispatch(SomeJob.self, .init()).wait()

Has anyone an idea why the job is failing or what the error means exactly?

Environment

  • Vapor Framework version: 4.53.0

  • Vapor Toolbox version: 18.3.3

  • OS version: MacOS 12.1

  • Redis: 5.0.5

  • Queues: 1.8.1

  • Queues Redis Driver: 1.0.3

Few Jobs becoming orphaned

Describe the bug

I'm using Queues with one remote Redis instance. Sometimes a few jobs to get orphaned, that means, they are stored but not listed in their queue list. Manually putting them into their corresponding list fixes, they get executed. In the logs, from the instance where jobs are dispatched, I get few errors like connection was closed unexpectedly that are always followed by command failed. I could not yet confirm this, but I suspect those failed attempts are causing orphan jobs.

To Reproduce

Not clear how to reproduce it, but one way to try would be: regularly dispatching jobs to a remote Redis instance and trying to cause some connection problems.

Expected behavior

Something to prevent or some periodic routine that fixes orphaned jobs, making sure they will be executed at some point.

Environment

  • Vapor Framework version: framework: 4.67.1
  • Vapor Toolbox version: main (6000cc5)
  • OS version: Ubuntu 20.04 (LTS) x64
  • Project compiled with Swift version 5.7.1 (swift-5.7.1-RELEASE)

Remove 4.0.0 tag

Not sure if I am missing something, but there is a 4.0.0 tag that doesn't seem to fit semver. This causes scripts and tools that check for outdated versions to suggest updating to 4.0.0.

module / type name clash

The type JobsRedisDriver should not have the same name as the module. This can create issues with disambiguation.

EventLoop precondition failures.

Prerequisites

A local instance of Redis in a docker container running
docker run -d -p 6379:6379 --name vapor-jobs redis
docker exec -it vapor-jobs sh (or whatever)
A vapor app started with the jobs command
in configure.swift app.jobs.use(.redis(RedisConfiguration()))
swift run Run jobs
No existing jobs queued into redis

127.0.0.1:6379> keys *
(empty list or set)

Results from running

We get the precondition failures for event loops during the pop or dequeue phase

Screen Shot 2019-12-31 at 4 42 55 PM

@tanner0101 @mcdappdev

Full stack trace

  thread #1, queue = 'com.apple.main-thread'
    frame #0: 0x00007fff721e48f6 libsystem_kernel.dylib`__psynch_cvwait + 10
    frame #1: 0x0000000103b26be6 libsystem_pthread.dylib`_pthread_cond_wait + 701
    frame #2: 0x00000001002f7f51 Run`ConditionLock.lock(wantedValue=1, self=0x0000000103d18510) at lock.swift:147:23
    frame #3: 0x000000010023523e Run`EventLoopFuture.wait(file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/vapor/Sources/Vapor/Application.swift", line=75, self=0x0000000103d16390) at EventLoopFuture.swift:922:14
    frame #4: 0x0000000100003a09 Run`Application.run(self=0x0000000103e131a0) at Application.swift:75:38
    frame #5: 0x0000000100001383 Run`main at main.swift:3:20
    frame #6: 0x00007fff72098405 libdyld.dylib`start + 1
    frame #7: 0x00007fff72098405 libdyld.dylib`start + 1
  thread #2, name = 'NIO-ELT-0-#0'
    frame #0: 0x00007fff722de072 libxpc.dylib`xpc_uint64_get_value + 31
    frame #1: 0x00007fff722de031 libxpc.dylib`_xpc_uint64_serialize + 59
    frame #2: 0x00007fff722ddfdd libxpc.dylib`_xpc_dictionary_serialize_apply + 186
    frame #3: 0x00007fff722ddaed libxpc.dylib`_xpc_dictionary_apply_node_f + 132
    frame #4: 0x00007fff722dddb6 libxpc.dylib`_xpc_dictionary_serialize + 143
    frame #5: 0x00007fff722dd7cf libxpc.dylib`_xpc_serializer_pack + 526
    frame #6: 0x00007fff722dd577 libxpc.dylib`_xpc_pipe_pack_message + 119
    frame #7: 0x00007fff722ecab1 libxpc.dylib`_xpc_pipe_simpleroutine + 58
    frame #8: 0x00007fff722e2d08 libxpc.dylib`xpc_pipe_simpleroutine + 42
    frame #9: 0x00007fff722c770d libsystem_trace.dylib`___os_activity_stream_reflect_block_invoke + 29
    frame #10: 0x0000000103a9776f libdispatch.dylib`_dispatch_client_callout + 8
    frame #11: 0x0000000103a9afc3 libdispatch.dylib`_dispatch_block_invoke_direct + 289
    frame #12: 0x0000000103a9ae97 libdispatch.dylib`dispatch_block_perform + 124
    frame #13: 0x00007fff722c71b9 libsystem_trace.dylib`_os_activity_stream_reflect + 530
    frame #14: 0x00007fff722cb460 libsystem_trace.dylib`_os_log_impl_stream + 535
    frame #15: 0x00007fff722c01bd libsystem_trace.dylib`_os_log_impl_flatten_and_send + 8514
    frame #16: 0x00007fff722c0acb libsystem_trace.dylib`_os_log_with_args_impl + 491
    frame #17: 0x00007fff720d8a23 libsystem_asl.dylib`asl_log + 255
    frame #18: 0x00007fff717ce4d0 libswiftCore.dylib`swift_reportError + 64
    frame #19: 0x00007fff718461c4 libswiftCore.dylib`_swift_stdlib_reportFatalErrorInFile + 116
    frame #20: 0x00007fff7175b18e libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded, Arg[2] = Exploded> of closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 238
    frame #21: 0x00007fff7175b307 libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded, Arg[2] = Exploded> of closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 87
    frame #22: 0x00007fff7152af0c libswiftCore.dylib`function signature specialization <Arg[1] = [Closure Propagated : closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never, Argument Types : [Swift.StaticStringSwift.UnsafeBufferPointer<Swift.UInt8>Swift.UIntSwift.UInt32]> of generic specialization <()> of Swift.String.withUTF8<A>((Swift.UnsafeBufferPointer<Swift.UInt8>) throws -> A) throws -> A + 236
    frame #23: 0x00007fff7172d710 libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded> of Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 496
    frame #24: 0x00007fff7152a4c9 libswiftCore.dylib`Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 25
    frame #25: 0x000000010021f3de Run`EventLoop.preconditionInEventLoop(file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/swift-nio/Sources/NIO/EventLoop.swift", line=158, self=0x0000000103d09b60) at EventLoop.swift:597:9
    frame #26: 0x000000010029c49e Run`protocol witness for EventLoop.preconditionInEventLoop(file:line:) in conformance SelectableEventLoop at <compiler-generated>:0
    frame #27: 0x000000010021ed65 Run`closure #1 in EventLoop.assertInEventLoop(self=0x0000000103d09b60, file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/swift-nio/Sources/NIO/EventLoop.swift", line=158) at EventLoop.swift:591:18
    frame #28: 0x000000010021edac Run`partial apply for closure #1 in EventLoop.assertInEventLoop(file:line:) at <compiler-generated>:0
    frame #29: 0x00000001002df50e Run`closure #1 in implicit closure #1 in debugOnly(body=0x000000010021ed70 Run`partial apply forwarder for closure #1 () -> () in (extension in NIO):NIO.EventLoop.assertInEventLoop(file: Swift.StaticString, line: Swift.UInt) -> () at <compiler-generated>) at Utilities.swift:24:14
    frame #30: 0x00000001002df488 Run`debugOnly(body=0x000000010021ed70 Run`partial apply forwarder for closure #1 () -> () in (extension in NIO):NIO.EventLoop.assertInEventLoop(file: Swift.StaticString, line: Swift.UInt) -> () at <compiler-generated>) at Utilities.swift:24:5
    frame #31: 0x000000010021b710 Run`EventLoop.assertInEventLoop(file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/swift-nio/Sources/NIO/EventLoop.swift", line=158, self=0x0000000103d09b60) at EventLoop.swift:590:9
    frame #32: 0x000000010021c211 Run`RepeatedTask.reschedule0(self=0x0000000103d163e0) at EventLoop.swift:158:24
    frame #33: 0x000000010021c194 Run`closure #1 in closure #1 in RepeatedTask.reschedule(_0=<unavailable>, self=0x0000000103d163e0) at EventLoop.swift:148:22
    frame #34: 0x00000001001a92d0 Run`thunk for @escaping @callee_guaranteed (@guaranteed Result<(), Error>) -> () at <compiler-generated>:0
    frame #35: 0x0000000100231d70 Run`closure #1 in EventLoopFuture.whenComplete(callback=0x0000000100229090 Run`partial apply forwarder for reabstraction thunk helper from @escaping @callee_guaranteed (@guaranteed Swift.Result<(), Swift.Error>) -> () to @escaping @callee_guaranteed (@in_guaranteed Swift.Result<(), Swift.Error>) -> () at <compiler-generated>, self=0x0000000106b012d0) at EventLoopFuture.swift:738:13
    frame #36: 0x0000000100229930 Run`thunk for @escaping @callee_guaranteed () -> (@owned CallbackList) at <compiler-generated>:0
    frame #37: 0x000000010022a591 Run`thunk for @escaping @callee_guaranteed () -> (@owned CallbackList)partial apply at <compiler-generated>:0
    frame #38: 0x000000010022aef3 Run`thunk for @escaping @callee_guaranteed () -> (@out CallbackList) at <compiler-generated>:0
    frame #39: 0x000000010022ae17 Run`CallbackList._run(self=NIO.CallbackList @ 0x00007000029c4910) at EventLoopFuture.swift:107:28
    frame #40: 0x000000010022b608 Run`EventLoopPromise._resolve(value=success, self=NIO.EventLoopPromise<RediStack.RESPValue> @ 0x00007000029c4a10) at EventLoopFuture.swift:226:42
    frame #41: 0x000000010022b4f1 Run`EventLoopPromise.succeed(value=null, self=NIO.EventLoopPromise<RediStack.RESPValue> @ 0x00007000029c4af0) at EventLoopFuture.swift:171:14
    frame #42: 0x00000001012dc9be Run`RedisCommandHandler.channelRead(context=0x0000000103d1bf50, data=NIO.NIOAny @ 0x00007000029c4f08, self=0x0000000103e189d0) at RedisCommandHandler.swift:93:25
    frame #43: 0x00000001012dcb19 Run`protocol witness for _ChannelInboundHandler.channelRead(context:data:) in conformance RedisCommandHandler at <compiler-generated>:0
    frame #44: 0x00000001001e2df4 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x00007000029c4f08, self=0x0000000103d1bf50) at ChannelPipeline.swift:1339:28
    frame #45: 0x00000001001e6a63 Run`ChannelHandlerContext.fireChannelRead(data=NIO.NIOAny @ 0x00007000029c4f08, self=0x0000000103d1bdb0) at ChannelPipeline.swift:1152:20
    frame #46: 0x00000001012db396 Run`RedisByteDecoder.decode(context=0x0000000103d1bdb0, buffer=NIO.ByteBuffer @ 0x00007000029c54d0, self=(parser = RediStack.RESPTranslator @ 0x0000000106b02b00)) at RedisByteDecoder.swift:35:17
    frame #47: 0x00000001012db703 Run`protocol witness for ByteToMessageDecoder.decode(context:buffer:) in conformance RedisByteDecoder at <compiler-generated>:0
    frame #48: 0x00000001002026dd Run`closure #1 in ByteToMessageHandler.decodeLoop(decoder=, buffer=NIO.ByteBuffer @ 0x00007000029c54d0, decodeMode=normal, self=0x0000000106b032f0, context=0x0000000103d1bdb0, allowEmptyBuffer=false) at Codec.swift:562:49
    frame #49: 0x000000010020a92d Run`partial apply for closure #1 in ByteToMessageHandler.decodeLoop(context:decodeMode:) at <compiler-generated>:0
    frame #50: 0x0000000100201214 Run`ByteToMessageHandler.withNextBuffer(allowEmptyBuffer=false, body=0x000000010020a910 Run`partial apply forwarder for closure #1 (inout A, inout NIO.ByteBuffer) throws -> NIO.DecodingState in NIO.ByteToMessageHandler.(decodeLoop in _F2A740607FEBA425AF6F8C49A24C0AD7)(context: NIO.ChannelHandlerContext, decodeMode: NIO.ByteToMessageHandler<A>.(DecodeMode in _F2A740607FEBA425AF6F8C49A24C0AD7)) throws -> NIO.(B2MDBuffer in _F2A740607FEBA425AF6F8C49A24C0AD7).BufferProcessingResult at <compiler-generated>, self=0x0000000106b032f0) at Codec.swift:524:36
    frame #51: 0x0000000100201f81 Run`ByteToMessageHandler.decodeLoop(context=0x0000000103d1bdb0, decodeMode=normal, self=0x0000000106b032f0) at Codec.swift:558:35
    frame #52: 0x0000000100203e99 Run`ByteToMessageHandler.channelRead(context=0x0000000103d1bdb0, data=NIO.NIOAny @ 0x00007000029c6218, self=0x0000000106b032f0) at Codec.swift:631:29
    frame #53: 0x0000000100204799 Run`protocol witness for _ChannelInboundHandler.channelRead(context:data:) in conformance ByteToMessageHandler<A> at <compiler-generated>:0
    frame #54: 0x00000001001e2df4 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x00007000029c6218, self=0x0000000103d1bdb0) at ChannelPipeline.swift:1339:28
    frame #55: 0x00000001001e2e85 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x00007000029c6218, self=0x0000000103d1bbc0) at ChannelPipeline.swift:1341:24
    frame #56: 0x00000001001de90d Run`ChannelPipeline.fireChannelRead0(data=NIO.NIOAny @ 0x00007000029c6218, self=0x0000000106b02ce0) at ChannelPipeline.swift:829:29
    frame #57: 0x000000010019fbee Run`BaseStreamSocketChannel.readFromSocket(self=0x0000000103c144c0) at BaseStreamSocketChannel.swift:107:35
    frame #58: 0x0000000100197456 Run`BaseSocketChannel.readable0(self=0x0000000103c144c0) at BaseSocketChannel.swift:1033:35
    frame #59: 0x0000000100198b1d Run`BaseSocketChannel.readable(self=0x0000000103c144c0) at BaseSocketChannel.swift:1017:14
    frame #60: 0x000000010019a009 Run`protocol witness for SelectableChannel.readable() in conformance BaseSocketChannel<A> at <compiler-generated>:0
    frame #61: 0x0000000100298b6b Run`SelectableEventLoop.handleEvent<C>(ev=(rawValue = 4), channel=0x0000000103c144c0, self=0x0000000103d0d980) at SelectableEventLoop.swift:284:25
    frame #62: 0x0000000100299c50 Run`closure #1 in closure #1 in SelectableEventLoop.run(ev=NIO.SelectorEvent<NIO.NIORegistration> @ 0x00007000029c6bd8, self=0x0000000103d0d980) at SelectableEventLoop.swift:333:30
    frame #63: 0x0000000100299fd9 Run`thunk for @callee_guaranteed (@guaranteed SelectorEvent<NIORegistration>) -> (@error @owned Error) at <compiler-generated>:0
    frame #64: 0x000000010029e334 Run`partial apply for thunk for @callee_guaranteed (@guaranteed SelectorEvent<NIORegistration>) -> (@error @owned Error) at <compiler-generated>:0
    frame #65: 0x00000001002a8e35 Run`Selector.whenReady(strategy=block, body=0x000000010029e320 Run`partial apply forwarder for reabstraction thunk helper from @callee_guaranteed (@guaranteed NIO.SelectorEvent<NIO.NIORegistration>) -> (@error @owned Swift.Error) to @escaping @callee_guaranteed (@in_guaranteed NIO.SelectorEvent<NIO.NIORegistration>) -> (@error @owned Swift.Error) at <compiler-generated>, self=0x0000000103d0dd80) at Selector.swift:621:17
    frame #66: 0x000000010029994a Run`closure #1 in SelectableEventLoop.run(self=0x0000000103d0d980, nextReadyTask=nil) at SelectableEventLoop.swift:328:31
    frame #67: 0x000000010029d294 Run`partial apply for closure #1 in SelectableEventLoop.run() at <compiler-generated>:0
    frame #68: 0x0000000100187cdf Run`thunk for @callee_guaranteed () -> (@error @owned Error) at <compiler-generated>:0
    frame #69: 0x000000010029d2b4 Run`thunk for @callee_guaranteed () -> (@error @owned Error)partial apply at <compiler-generated>:0
    frame #70: 0x0000000100295322 Run`closure #1 in withAutoReleasePool<T>(execute=0x000000010029d2a0 Run`reabstraction thunk helper from @callee_guaranteed () -> (@error @owned Swift.Error) to @escaping @callee_guaranteed () -> (@out (), @error @owned Swift.Error)partial apply forwarder with unmangled suffix ".7" at <compiler-generated>) at SelectableEventLoop.swift:25:13
    frame #71: 0x000000010029537f Run`partial apply for closure #1 in withAutoReleasePool<A>(_:) at <compiler-generated>:0
    frame #72: 0x00007fff71d4af0e libswiftObjectiveC.dylib`ObjectiveC.autoreleasepool<A>(invoking: () throws -> A) throws -> A + 46
    frame #73: 0x00000001002952c9 Run`withAutoReleasePool<T>(execute=0x000000010029d2a0 Run`reabstraction thunk helper from @callee_guaranteed () -> (@error @owned Swift.Error) to @escaping @callee_guaranteed () -> (@out (), @error @owned Swift.Error)partial apply forwarder with unmangled suffix ".7" at <compiler-generated>) at SelectableEventLoop.swift:24:16
    frame #74: 0x0000000100298f16 Run`SelectableEventLoop.run(self=0x0000000103d0d980) at SelectableEventLoop.swift:327:17
    frame #75: 0x000000010022158b Run`closure #1 in static MultiThreadedEventLoopGroup.setupThreadAndEventLoop(t=0x0000000103d0d950, initializer=0x0000000100228c30 Run`partial apply forwarder for reabstraction thunk helper from @escaping @callee_guaranteed (@in_guaranteed NIO.NIOThread) -> (@out ()) to @escaping @callee_guaranteed (@guaranteed NIO.NIOThread) -> () at <compiler-generated>, self=NIO.MultiThreadedEventLoopGroup, lock=(mutex = 0x0000000103e13ca0), _loop=0x0000000103d0d980, loopUpAndRunningGroup=0x0000000103e13ce0) at EventLoop.swift:792:23
    frame #76: 0x0000000100228d0a Run`partial apply for closure #1 in static MultiThreadedEventLoopGroup.setupThreadAndEventLoop(name:initializer:) at <compiler-generated>:0
    frame #77: 0x0000000100221bdf Run`thunk for @escaping @callee_guaranteed (@guaranteed NIOThread) -> () at <compiler-generated>:0
    frame #78: 0x00000001002dc781 Run`partial apply for thunk for @escaping @callee_guaranteed (@guaranteed NIOThread) -> () at <compiler-generated>:0
    frame #79: 0x00000001002dcb67 Run`closure #1 in static NIOThread.spawnAndRun(p=(_rawValue = 0x0000000103e13c50 -> 0x00007fff9ee3ec58 libswiftCore.dylib`InitialAllocationPool + 17760)) at Thread.swift:118:13
    frame #80: 0x00000001002dcbd9 Run`@objc closure #1 in static NIOThread.spawnAndRun(name:detachThread:body:) at <compiler-generated>:0
    frame #81: 0x0000000103b268da libsystem_pthread.dylib`_pthread_start + 125
    frame #82: 0x0000000103b22f07 libsystem_pthread.dylib`thread_start + 15
  thread #3, name = 'NIO-ELT-0-#1'
    frame #0: 0x0000000103ac8b16 libdispatch.dylib`-[OS_dispatch_data dealloc] + 1
    frame #1: 0x00007fff722dc5d2 libxpc.dylib`_xpc_dispose + 125
    frame #2: 0x00007fff722fa8ae libxpc.dylib`-[OS_xpc_object dealloc] + 17
    frame #3: 0x00007fff722dca47 libxpc.dylib`_xpc_dictionary_node_free + 62
    frame #4: 0x00007fff722dc94b libxpc.dylib`_xpc_dictionary_dispose + 34
    frame #5: 0x00007fff722dc5d2 libxpc.dylib`_xpc_dispose + 125
    frame #6: 0x00007fff722fa8ae libxpc.dylib`-[OS_xpc_object dealloc] + 17
    frame #7: 0x00007fff722c71c1 libsystem_trace.dylib`_os_activity_stream_reflect + 538
    frame #8: 0x00007fff722cb460 libsystem_trace.dylib`_os_log_impl_stream + 535
    frame #9: 0x00007fff722c01bd libsystem_trace.dylib`_os_log_impl_flatten_and_send + 8514
    frame #10: 0x00007fff722c0acb libsystem_trace.dylib`_os_log_with_args_impl + 491
    frame #11: 0x00007fff720d8a23 libsystem_asl.dylib`asl_log + 255
    frame #12: 0x00007fff717ce4d0 libswiftCore.dylib`swift_reportError + 64
    frame #13: 0x00007fff718461c4 libswiftCore.dylib`_swift_stdlib_reportFatalErrorInFile + 116
    frame #14: 0x00007fff7175b18e libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded, Arg[2] = Exploded> of closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 238
    frame #15: 0x00007fff7175b307 libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded, Arg[2] = Exploded> of closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 87
    frame #16: 0x00007fff7152af0c libswiftCore.dylib`function signature specialization <Arg[1] = [Closure Propagated : closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never, Argument Types : [Swift.StaticStringSwift.UnsafeBufferPointer<Swift.UInt8>Swift.UIntSwift.UInt32]> of generic specialization <()> of Swift.String.withUTF8<A>((Swift.UnsafeBufferPointer<Swift.UInt8>) throws -> A) throws -> A + 236
    frame #17: 0x00007fff7172d710 libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded> of Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 496
    frame #18: 0x00007fff7152a4c9 libswiftCore.dylib`Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 25
    frame #19: 0x000000010021f3de Run`EventLoop.preconditionInEventLoop(file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/swift-nio/Sources/NIO/EventLoop.swift", line=158, self=0x0000000103d09eb0) at EventLoop.swift:597:9
    frame #20: 0x000000010029c49e Run`protocol witness for EventLoop.preconditionInEventLoop(file:line:) in conformance SelectableEventLoop at <compiler-generated>:0
    frame #21: 0x000000010021ed65 Run`closure #1 in EventLoop.assertInEventLoop(self=0x0000000103d09eb0, file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/swift-nio/Sources/NIO/EventLoop.swift", line=158) at EventLoop.swift:591:18
    frame #22: 0x000000010021edac Run`partial apply for closure #1 in EventLoop.assertInEventLoop(file:line:) at <compiler-generated>:0
    frame #23: 0x00000001002df50e Run`closure #1 in implicit closure #1 in debugOnly(body=0x000000010021ed70 Run`partial apply forwarder for closure #1 () -> () in (extension in NIO):NIO.EventLoop.assertInEventLoop(file: Swift.StaticString, line: Swift.UInt) -> () at <compiler-generated>) at Utilities.swift:24:14
    frame #24: 0x00000001002df488 Run`debugOnly(body=0x000000010021ed70 Run`partial apply forwarder for closure #1 () -> () in (extension in NIO):NIO.EventLoop.assertInEventLoop(file: Swift.StaticString, line: Swift.UInt) -> () at <compiler-generated>) at Utilities.swift:24:5
    frame #25: 0x000000010021b710 Run`EventLoop.assertInEventLoop(file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/swift-nio/Sources/NIO/EventLoop.swift", line=158, self=0x0000000103d09eb0) at EventLoop.swift:590:9
    frame #26: 0x000000010021c211 Run`RepeatedTask.reschedule0(self=0x0000000103d18150) at EventLoop.swift:158:24
    frame #27: 0x000000010021c194 Run`closure #1 in closure #1 in RepeatedTask.reschedule(_0=<unavailable>, self=0x0000000103d18150) at EventLoop.swift:148:22
    frame #28: 0x00000001001a92d0 Run`thunk for @escaping @callee_guaranteed (@guaranteed Result<(), Error>) -> () at <compiler-generated>:0
    frame #29: 0x0000000100231d70 Run`closure #1 in EventLoopFuture.whenComplete(callback=0x0000000100229090 Run`partial apply forwarder for reabstraction thunk helper from @escaping @callee_guaranteed (@guaranteed Swift.Result<(), Swift.Error>) -> () to @escaping @callee_guaranteed (@in_guaranteed Swift.Result<(), Swift.Error>) -> () at <compiler-generated>, self=0x00000001069080d0) at EventLoopFuture.swift:738:13
    frame #30: 0x0000000100229930 Run`thunk for @escaping @callee_guaranteed () -> (@owned CallbackList) at <compiler-generated>:0
    frame #31: 0x000000010022a591 Run`thunk for @escaping @callee_guaranteed () -> (@owned CallbackList)partial apply at <compiler-generated>:0
    frame #32: 0x000000010022aef3 Run`thunk for @escaping @callee_guaranteed () -> (@out CallbackList) at <compiler-generated>:0
    frame #33: 0x000000010022ae17 Run`CallbackList._run(self=NIO.CallbackList @ 0x0000700002a47910) at EventLoopFuture.swift:107:28
    frame #34: 0x000000010022b608 Run`EventLoopPromise._resolve(value=success, self=NIO.EventLoopPromise<RediStack.RESPValue> @ 0x0000700002a47a10) at EventLoopFuture.swift:226:42
    frame #35: 0x000000010022b4f1 Run`EventLoopPromise.succeed(value=null, self=NIO.EventLoopPromise<RediStack.RESPValue> @ 0x0000700002a47af0) at EventLoopFuture.swift:171:14
    frame #36: 0x00000001012dc9be Run`RedisCommandHandler.channelRead(context=0x00000001068083b0, data=NIO.NIOAny @ 0x0000700002a47f08, self=0x0000000106a07090) at RedisCommandHandler.swift:93:25
    frame #37: 0x00000001012dcb19 Run`protocol witness for _ChannelInboundHandler.channelRead(context:data:) in conformance RedisCommandHandler at <compiler-generated>:0
    frame #38: 0x00000001001e2df4 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x0000700002a47f08, self=0x00000001068083b0) at ChannelPipeline.swift:1339:28
    frame #39: 0x00000001001e6a63 Run`ChannelHandlerContext.fireChannelRead(data=NIO.NIOAny @ 0x0000700002a47f08, self=0x0000000103c152e0) at ChannelPipeline.swift:1152:20
    frame #40: 0x00000001012db396 Run`RedisByteDecoder.decode(context=0x0000000103c152e0, buffer=NIO.ByteBuffer @ 0x0000700002a484d0, self=(parser = RediStack.RESPTranslator @ 0x0000000103e17140)) at RedisByteDecoder.swift:35:17
    frame #41: 0x00000001012db703 Run`protocol witness for ByteToMessageDecoder.decode(context:buffer:) in conformance RedisByteDecoder at <compiler-generated>:0
    frame #42: 0x00000001002026dd Run`closure #1 in ByteToMessageHandler.decodeLoop(decoder=, buffer=NIO.ByteBuffer @ 0x0000700002a484d0, decodeMode=normal, self=0x0000000103e18850, context=0x0000000103c152e0, allowEmptyBuffer=false) at Codec.swift:562:49
    frame #43: 0x000000010020a92d Run`partial apply for closure #1 in ByteToMessageHandler.decodeLoop(context:decodeMode:) at <compiler-generated>:0
    frame #44: 0x0000000100201214 Run`ByteToMessageHandler.withNextBuffer(allowEmptyBuffer=false, body=0x000000010020a910 Run`partial apply forwarder for closure #1 (inout A, inout NIO.ByteBuffer) throws -> NIO.DecodingState in NIO.ByteToMessageHandler.(decodeLoop in _F2A740607FEBA425AF6F8C49A24C0AD7)(context: NIO.ChannelHandlerContext, decodeMode: NIO.ByteToMessageHandler<A>.(DecodeMode in _F2A740607FEBA425AF6F8C49A24C0AD7)) throws -> NIO.(B2MDBuffer in _F2A740607FEBA425AF6F8C49A24C0AD7).BufferProcessingResult at <compiler-generated>, self=0x0000000103e18850) at Codec.swift:524:36
    frame #45: 0x0000000100201f81 Run`ByteToMessageHandler.decodeLoop(context=0x0000000103c152e0, decodeMode=normal, self=0x0000000103e18850) at Codec.swift:558:35
    frame #46: 0x0000000100203e99 Run`ByteToMessageHandler.channelRead(context=0x0000000103c152e0, data=NIO.NIOAny @ 0x0000700002a49218, self=0x0000000103e18850) at Codec.swift:631:29
    frame #47: 0x0000000100204799 Run`protocol witness for _ChannelInboundHandler.channelRead(context:data:) in conformance ByteToMessageHandler<A> at <compiler-generated>:0
    frame #48: 0x00000001001e2df4 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x0000700002a49218, self=0x0000000103c152e0) at ChannelPipeline.swift:1339:28
    frame #49: 0x00000001001e2e85 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x0000700002a49218, self=0x0000000103c150f0) at ChannelPipeline.swift:1341:24
    frame #50: 0x00000001001de90d Run`ChannelPipeline.fireChannelRead0(data=NIO.NIOAny @ 0x0000700002a49218, self=0x0000000103d1a980) at ChannelPipeline.swift:829:29
    frame #51: 0x000000010019fbee Run`BaseStreamSocketChannel.readFromSocket(self=0x0000000106b020f0) at BaseStreamSocketChannel.swift:107:35
    frame #52: 0x0000000100197456 Run`BaseSocketChannel.readable0(self=0x0000000106b020f0) at BaseSocketChannel.swift:1033:35
    frame #53: 0x0000000100198b1d Run`BaseSocketChannel.readable(self=0x0000000106b020f0) at BaseSocketChannel.swift:1017:14
    frame #54: 0x000000010019a009 Run`protocol witness for SelectableChannel.readable() in conformance BaseSocketChannel<A> at <compiler-generated>:0
    frame #55: 0x0000000100298b6b Run`SelectableEventLoop.handleEvent<C>(ev=(rawValue = 4), channel=0x0000000106b020f0, self=0x0000000106a04090) at SelectableEventLoop.swift:284:25
    frame #56: 0x0000000100299c50 Run`closure #1 in closure #1 in SelectableEventLoop.run(ev=NIO.SelectorEvent<NIO.NIORegistration> @ 0x0000700002a49bd8, self=0x0000000106a04090) at SelectableEventLoop.swift:333:30
    frame #57: 0x0000000100299fd9 Run`thunk for @callee_guaranteed (@guaranteed SelectorEvent<NIORegistration>) -> (@error @owned Error) at <compiler-generated>:0
    frame #58: 0x000000010029e334 Run`partial apply for thunk for @callee_guaranteed (@guaranteed SelectorEvent<NIORegistration>) -> (@error @owned Error) at <compiler-generated>:0
    frame #59: 0x00000001002a8e35 Run`Selector.whenReady(strategy=block, body=0x000000010029e320 Run`partial apply forwarder for reabstraction thunk helper from @callee_guaranteed (@guaranteed NIO.SelectorEvent<NIO.NIORegistration>) -> (@error @owned Swift.Error) to @escaping @callee_guaranteed (@in_guaranteed NIO.SelectorEvent<NIO.NIORegistration>) -> (@error @owned Swift.Error) at <compiler-generated>, self=0x0000000106a04290) at Selector.swift:621:17
    frame #60: 0x000000010029994a Run`closure #1 in SelectableEventLoop.run(self=0x0000000106a04090, nextReadyTask=nil) at SelectableEventLoop.swift:328:31
    frame #61: 0x000000010029d294 Run`partial apply for closure #1 in SelectableEventLoop.run() at <compiler-generated>:0
    frame #62: 0x0000000100187cdf Run`thunk for @callee_guaranteed () -> (@error @owned Error) at <compiler-generated>:0
    frame #63: 0x000000010029d2b4 Run`thunk for @callee_guaranteed () -> (@error @owned Error)partial apply at <compiler-generated>:0
    frame #64: 0x0000000100295322 Run`closure #1 in withAutoReleasePool<T>(execute=0x000000010029d2a0 Run`reabstraction thunk helper from @callee_guaranteed () -> (@error @owned Swift.Error) to @escaping @callee_guaranteed () -> (@out (), @error @owned Swift.Error)partial apply forwarder with unmangled suffix ".7" at <compiler-generated>) at SelectableEventLoop.swift:25:13
    frame #65: 0x000000010029537f Run`partial apply for closure #1 in withAutoReleasePool<A>(_:) at <compiler-generated>:0
    frame #66: 0x00007fff71d4af0e libswiftObjectiveC.dylib`ObjectiveC.autoreleasepool<A>(invoking: () throws -> A) throws -> A + 46
    frame #67: 0x00000001002952c9 Run`withAutoReleasePool<T>(execute=0x000000010029d2a0 Run`reabstraction thunk helper from @callee_guaranteed () -> (@error @owned Swift.Error) to @escaping @callee_guaranteed () -> (@out (), @error @owned Swift.Error)partial apply forwarder with unmangled suffix ".7" at <compiler-generated>) at SelectableEventLoop.swift:24:16
    frame #68: 0x0000000100298f16 Run`SelectableEventLoop.run(self=0x0000000106a04090) at SelectableEventLoop.swift:327:17
    frame #69: 0x000000010022158b Run`closure #1 in static MultiThreadedEventLoopGroup.setupThreadAndEventLoop(t=0x0000000106a04060, initializer=0x0000000100228c30 Run`partial apply forwarder for reabstraction thunk helper from @escaping @callee_guaranteed (@in_guaranteed NIO.NIOThread) -> (@out ()) to @escaping @callee_guaranteed (@guaranteed NIO.NIOThread) -> () at <compiler-generated>, self=NIO.MultiThreadedEventLoopGroup, lock=(mutex = 0x0000000103e13fa0), _loop=0x0000000106a04090, loopUpAndRunningGroup=0x0000000103e13fe0) at EventLoop.swift:792:23
    frame #70: 0x0000000100228d0a Run`partial apply for closure #1 in static MultiThreadedEventLoopGroup.setupThreadAndEventLoop(name:initializer:) at <compiler-generated>:0
    frame #71: 0x0000000100221bdf Run`thunk for @escaping @callee_guaranteed (@guaranteed NIOThread) -> () at <compiler-generated>:0
    frame #72: 0x00000001002dc781 Run`partial apply for thunk for @escaping @callee_guaranteed (@guaranteed NIOThread) -> () at <compiler-generated>:0
    frame #73: 0x00000001002dcb67 Run`closure #1 in static NIOThread.spawnAndRun(p=(_rawValue = 0x0000000103e13f30 -> 0x00007fff9ee3ec58 libswiftCore.dylib`InitialAllocationPool + 17760)) at Thread.swift:118:13
    frame #74: 0x00000001002dcbd9 Run`@objc closure #1 in static NIOThread.spawnAndRun(name:detachThread:body:) at <compiler-generated>:0
    frame #75: 0x0000000103b268da libsystem_pthread.dylib`_pthread_start + 125
    frame #76: 0x0000000103b22f07 libsystem_pthread.dylib`thread_start + 15
* thread #4, name = 'NIO-ELT-0-#2', stop reason = Precondition failed
    frame #0: 0x00007fff717ce460 libswiftCore.dylib`_swift_runtime_on_report
    frame #1: 0x00007fff71846223 libswiftCore.dylib`_swift_stdlib_reportFatalErrorInFile + 211
    frame #2: 0x00007fff7175b18e libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded, Arg[2] = Exploded> of closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 238
    frame #3: 0x00007fff7175b307 libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded, Arg[2] = Exploded> of closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 87
    frame #4: 0x00007fff7152af0c libswiftCore.dylib`function signature specialization <Arg[1] = [Closure Propagated : closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never, Argument Types : [Swift.StaticStringSwift.UnsafeBufferPointer<Swift.UInt8>Swift.UIntSwift.UInt32]> of generic specialization <()> of Swift.String.withUTF8<A>((Swift.UnsafeBufferPointer<Swift.UInt8>) throws -> A) throws -> A + 236
    frame #5: 0x00007fff7172d710 libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded> of Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 496
    frame #6: 0x00007fff7152a4c9 libswiftCore.dylib`Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 25
  * frame #7: 0x000000010021f3de Run`EventLoop.preconditionInEventLoop(file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/swift-nio/Sources/NIO/EventLoop.swift", line=158, self=0x0000000103d0a200) at EventLoop.swift:597:9
    frame #8: 0x000000010029c49e Run`protocol witness for EventLoop.preconditionInEventLoop(file:line:) in conformance SelectableEventLoop at <compiler-generated>:0
    frame #9: 0x000000010021ed65 Run`closure #1 in EventLoop.assertInEventLoop(self=0x0000000103d0a200, file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/swift-nio/Sources/NIO/EventLoop.swift", line=158) at EventLoop.swift:591:18
    frame #10: 0x000000010021edac Run`partial apply for closure #1 in EventLoop.assertInEventLoop(file:line:) at <compiler-generated>:0
    frame #11: 0x00000001002df50e Run`closure #1 in implicit closure #1 in debugOnly(body=0x000000010021ed70 Run`partial apply forwarder for closure #1 () -> () in (extension in NIO):NIO.EventLoop.assertInEventLoop(file: Swift.StaticString, line: Swift.UInt) -> () at <compiler-generated>) at Utilities.swift:24:14
    frame #12: 0x00000001002df488 Run`debugOnly(body=0x000000010021ed70 Run`partial apply forwarder for closure #1 () -> () in (extension in NIO):NIO.EventLoop.assertInEventLoop(file: Swift.StaticString, line: Swift.UInt) -> () at <compiler-generated>) at Utilities.swift:24:5
    frame #13: 0x000000010021b710 Run`EventLoop.assertInEventLoop(file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/swift-nio/Sources/NIO/EventLoop.swift", line=158, self=0x0000000103d0a200) at EventLoop.swift:590:9
    frame #14: 0x000000010021c211 Run`RepeatedTask.reschedule0(self=0x0000000103d18450) at EventLoop.swift:158:24
    frame #15: 0x000000010021c194 Run`closure #1 in closure #1 in RepeatedTask.reschedule(_0=<unavailable>, self=0x0000000103d18450) at EventLoop.swift:148:22
    frame #16: 0x00000001001a92d0 Run`thunk for @escaping @callee_guaranteed (@guaranteed Result<(), Error>) -> () at <compiler-generated>:0
    frame #17: 0x0000000100231d70 Run`closure #1 in EventLoopFuture.whenComplete(callback=0x0000000100229090 Run`partial apply forwarder for reabstraction thunk helper from @escaping @callee_guaranteed (@guaranteed Swift.Result<(), Swift.Error>) -> () to @escaping @callee_guaranteed (@in_guaranteed Swift.Result<(), Swift.Error>) -> () at <compiler-generated>, self=0x0000000103c13c10) at EventLoopFuture.swift:738:13
    frame #18: 0x0000000100229930 Run`thunk for @escaping @callee_guaranteed () -> (@owned CallbackList) at <compiler-generated>:0
    frame #19: 0x000000010022a591 Run`thunk for @escaping @callee_guaranteed () -> (@owned CallbackList)partial apply at <compiler-generated>:0
    frame #20: 0x000000010022aef3 Run`thunk for @escaping @callee_guaranteed () -> (@out CallbackList) at <compiler-generated>:0
    frame #21: 0x000000010022ae17 Run`CallbackList._run(self=NIO.CallbackList @ 0x0000700002aca910) at EventLoopFuture.swift:107:28
    frame #22: 0x000000010022b608 Run`EventLoopPromise._resolve(value=success, self=NIO.EventLoopPromise<RediStack.RESPValue> @ 0x0000700002acaa10) at EventLoopFuture.swift:226:42
    frame #23: 0x000000010022b4f1 Run`EventLoopPromise.succeed(value=null, self=NIO.EventLoopPromise<RediStack.RESPValue> @ 0x0000700002acaaf0) at EventLoopFuture.swift:171:14
    frame #24: 0x00000001012dc9be Run`RedisCommandHandler.channelRead(context=0x0000000106a07ac0, data=NIO.NIOAny @ 0x0000700002acaf08, self=0x0000000103e18950) at RedisCommandHandler.swift:93:25
    frame #25: 0x00000001012dcb19 Run`protocol witness for _ChannelInboundHandler.channelRead(context:data:) in conformance RedisCommandHandler at <compiler-generated>:0
    frame #26: 0x00000001001e2df4 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x0000700002acaf08, self=0x0000000106a07ac0) at ChannelPipeline.swift:1339:28
    frame #27: 0x00000001001e6a63 Run`ChannelHandlerContext.fireChannelRead(data=NIO.NIOAny @ 0x0000700002acaf08, self=0x0000000103e18e90) at ChannelPipeline.swift:1152:20
    frame #28: 0x00000001012db396 Run`RedisByteDecoder.decode(context=0x0000000103e18e90, buffer=NIO.ByteBuffer @ 0x0000700002acb4d0, self=(parser = RediStack.RESPTranslator @ 0x00000001068053e0)) at RedisByteDecoder.swift:35:17
    frame #29: 0x00000001012db703 Run`protocol witness for ByteToMessageDecoder.decode(context:buffer:) in conformance RedisByteDecoder at <compiler-generated>:0
    frame #30: 0x00000001002026dd Run`closure #1 in ByteToMessageHandler.decodeLoop(decoder=, buffer=NIO.ByteBuffer @ 0x0000700002acb4d0, decodeMode=normal, self=0x0000000106807de0, context=0x0000000103e18e90, allowEmptyBuffer=false) at Codec.swift:562:49
    frame #31: 0x000000010020a92d Run`partial apply for closure #1 in ByteToMessageHandler.decodeLoop(context:decodeMode:) at <compiler-generated>:0
    frame #32: 0x0000000100201214 Run`ByteToMessageHandler.withNextBuffer(allowEmptyBuffer=false, body=0x000000010020a910 Run`partial apply forwarder for closure #1 (inout A, inout NIO.ByteBuffer) throws -> NIO.DecodingState in NIO.ByteToMessageHandler.(decodeLoop in _F2A740607FEBA425AF6F8C49A24C0AD7)(context: NIO.ChannelHandlerContext, decodeMode: NIO.ByteToMessageHandler<A>.(DecodeMode in _F2A740607FEBA425AF6F8C49A24C0AD7)) throws -> NIO.(B2MDBuffer in _F2A740607FEBA425AF6F8C49A24C0AD7).BufferProcessingResult at <compiler-generated>, self=0x0000000106807de0) at Codec.swift:524:36
    frame #33: 0x0000000100201f81 Run`ByteToMessageHandler.decodeLoop(context=0x0000000103e18e90, decodeMode=normal, self=0x0000000106807de0) at Codec.swift:558:35
    frame #34: 0x0000000100203e99 Run`ByteToMessageHandler.channelRead(context=0x0000000103e18e90, data=NIO.NIOAny @ 0x0000700002acc218, self=0x0000000106807de0) at Codec.swift:631:29
    frame #35: 0x0000000100204799 Run`protocol witness for _ChannelInboundHandler.channelRead(context:data:) in conformance ByteToMessageHandler<A> at <compiler-generated>:0
    frame #36: 0x00000001001e2df4 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x0000700002acc218, self=0x0000000103e18e90) at ChannelPipeline.swift:1339:28
    frame #37: 0x00000001001e2e85 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x0000700002acc218, self=0x0000000103e18c70) at ChannelPipeline.swift:1341:24
    frame #38: 0x00000001001de90d Run`ChannelPipeline.fireChannelRead0(data=NIO.NIOAny @ 0x0000700002acc218, self=0x0000000106b02c20) at ChannelPipeline.swift:829:29
    frame #39: 0x000000010019fbee Run`BaseStreamSocketChannel.readFromSocket(self=0x0000000106a05a70) at BaseStreamSocketChannel.swift:107:35
    frame #40: 0x0000000100197456 Run`BaseSocketChannel.readable0(self=0x0000000106a05a70) at BaseSocketChannel.swift:1033:35
    frame #41: 0x0000000100198b1d Run`BaseSocketChannel.readable(self=0x0000000106a05a70) at BaseSocketChannel.swift:1017:14
    frame #42: 0x000000010019a009 Run`protocol witness for SelectableChannel.readable() in conformance BaseSocketChannel<A> at <compiler-generated>:0
    frame #43: 0x0000000100298b6b Run`SelectableEventLoop.handleEvent<C>(ev=(rawValue = 4), channel=0x0000000106a05a70, self=0x0000000103d0e8c0) at SelectableEventLoop.swift:284:25
    frame #44: 0x0000000100299c50 Run`closure #1 in closure #1 in SelectableEventLoop.run(ev=NIO.SelectorEvent<NIO.NIORegistration> @ 0x0000700002accbd8, self=0x0000000103d0e8c0) at SelectableEventLoop.swift:333:30
    frame #45: 0x0000000100299fd9 Run`thunk for @callee_guaranteed (@guaranteed SelectorEvent<NIORegistration>) -> (@error @owned Error) at <compiler-generated>:0
    frame #46: 0x000000010029e334 Run`partial apply for thunk for @callee_guaranteed (@guaranteed SelectorEvent<NIORegistration>) -> (@error @owned Error) at <compiler-generated>:0
    frame #47: 0x00000001002a8e35 Run`Selector.whenReady(strategy=block, body=0x000000010029e320 Run`partial apply forwarder for reabstraction thunk helper from @callee_guaranteed (@guaranteed NIO.SelectorEvent<NIO.NIORegistration>) -> (@error @owned Swift.Error) to @escaping @callee_guaranteed (@in_guaranteed NIO.SelectorEvent<NIO.NIORegistration>) -> (@error @owned Swift.Error) at <compiler-generated>, self=0x0000000103d0eae0) at Selector.swift:621:17
    frame #48: 0x000000010029994a Run`closure #1 in SelectableEventLoop.run(self=0x0000000103d0e8c0, nextReadyTask=nil) at SelectableEventLoop.swift:328:31
    frame #49: 0x000000010029d294 Run`partial apply for closure #1 in SelectableEventLoop.run() at <compiler-generated>:0
    frame #50: 0x0000000100187cdf Run`thunk for @callee_guaranteed () -> (@error @owned Error) at <compiler-generated>:0
    frame #51: 0x000000010029d2b4 Run`thunk for @callee_guaranteed () -> (@error @owned Error)partial apply at <compiler-generated>:0
    frame #52: 0x0000000100295322 Run`closure #1 in withAutoReleasePool<T>(execute=0x000000010029d2a0 Run`reabstraction thunk helper from @callee_guaranteed () -> (@error @owned Swift.Error) to @escaping @callee_guaranteed () -> (@out (), @error @owned Swift.Error)partial apply forwarder with unmangled suffix ".7" at <compiler-generated>) at SelectableEventLoop.swift:25:13
    frame #53: 0x000000010029537f Run`partial apply for closure #1 in withAutoReleasePool<A>(_:) at <compiler-generated>:0
    frame #54: 0x00007fff71d4af0e libswiftObjectiveC.dylib`ObjectiveC.autoreleasepool<A>(invoking: () throws -> A) throws -> A + 46
    frame #55: 0x00000001002952c9 Run`withAutoReleasePool<T>(execute=0x000000010029d2a0 Run`reabstraction thunk helper from @callee_guaranteed () -> (@error @owned Swift.Error) to @escaping @callee_guaranteed () -> (@out (), @error @owned Swift.Error)partial apply forwarder with unmangled suffix ".7" at <compiler-generated>) at SelectableEventLoop.swift:24:16
    frame #56: 0x0000000100298f16 Run`SelectableEventLoop.run(self=0x0000000103d0e8c0) at SelectableEventLoop.swift:327:17
    frame #57: 0x000000010022158b Run`closure #1 in static MultiThreadedEventLoopGroup.setupThreadAndEventLoop(t=0x0000000103d0e890, initializer=0x0000000100228c30 Run`partial apply forwarder for reabstraction thunk helper from @escaping @callee_guaranteed (@in_guaranteed NIO.NIOThread) -> (@out ()) to @escaping @callee_guaranteed (@guaranteed NIO.NIOThread) -> () at <compiler-generated>, self=NIO.MultiThreadedEventLoopGroup, lock=(mutex = 0x0000000103e14120), _loop=0x0000000103d0e8c0, loopUpAndRunningGroup=0x0000000103e14160) at EventLoop.swift:792:23
    frame #58: 0x0000000100228d0a Run`partial apply for closure #1 in static MultiThreadedEventLoopGroup.setupThreadAndEventLoop(name:initializer:) at <compiler-generated>:0
    frame #59: 0x0000000100221bdf Run`thunk for @escaping @callee_guaranteed (@guaranteed NIOThread) -> () at <compiler-generated>:0
    frame #60: 0x00000001002dc781 Run`partial apply for thunk for @escaping @callee_guaranteed (@guaranteed NIOThread) -> () at <compiler-generated>:0
    frame #61: 0x00000001002dcb67 Run`closure #1 in static NIOThread.spawnAndRun(p=(_rawValue = 0x0000000103e140b0 -> 0x00007fff9ee3ec58 libswiftCore.dylib`InitialAllocationPool + 17760)) at Thread.swift:118:13
    frame #62: 0x00000001002dcbd9 Run`@objc closure #1 in static NIOThread.spawnAndRun(name:detachThread:body:) at <compiler-generated>:0
    frame #63: 0x0000000103b268da libsystem_pthread.dylib`_pthread_start + 125
    frame #64: 0x0000000103b22f07 libsystem_pthread.dylib`thread_start + 15
  thread #5, name = 'NIO-ELT-0-#3'
    frame #0: 0x00007fff715473d0 libswiftCore.dylib`protocol witness for Swift.Decodable.init(from: Swift.Decoder) throws -> A in conformance <A where A: Swift.Decodable> Swift.Array<A> : Swift.Decodable in Swift
    frame #1: 0x00007fff7179b217 libswiftCore.dylib`dispatch thunk of Swift.Decodable.init(from: Swift.Decoder) throws -> A + 7
    frame #2: 0x00007fff71b88fdf libswiftFoundation.dylib`Foundation.(__JSONDecoder in _12768CA107A31EF2DCE034FD75B541C9).unbox_(_: Any, as: Swift.Decodable.Type) throws -> Swift.Optional<Any> + 4239
    frame #3: 0x00007fff71b7b52e libswiftFoundation.dylib`Foundation.(_JSONKeyedDecodingContainer in _12768CA107A31EF2DCE034FD75B541C9).decode<A where A1: Swift.Decodable>(_: A1.Type, forKey: A) throws -> A1 + 398
    frame #4: 0x00007fff71bd3b32 libswiftFoundation.dylib`merged protocol witness for Swift.KeyedDecodingContainerProtocol.decode<A where A1: Swift.Decodable>(_: A1.Type, forKey: A.Key) throws -> A1 in conformance Foundation.(_JSONKeyedDecodingContainer in _12768CA107A31EF2DCE034FD75B541C9)<A> : Swift.KeyedDecodingContainerProtocol in Foundation + 34
    frame #5: 0x00007fff71b7dce8 libswiftFoundation.dylib`protocol witness for Swift.KeyedDecodingContainerProtocol.decode<A where A1: Swift.Decodable>(_: A1.Type, forKey: A.Key) throws -> A1 in conformance Foundation.(_JSONKeyedDecodingContainer in _12768CA107A31EF2DCE034FD75B541C9)<A> : Swift.KeyedDecodingContainerProtocol in Foundation + 24
    frame #6: 0x00007fff715404b3 libswiftCore.dylib`Swift._KeyedDecodingContainerBox.decode<A where A1: Swift.Decodable>(_: A1.Type, forKey: A.Key) throws -> A1 + 131
    frame #7: 0x00007fff7153947f libswiftCore.dylib`Swift.KeyedDecodingContainer.decode<A where A1: Swift.Decodable>(_: A1.Type, forKey: A) throws -> A1 + 31
    frame #8: 0x00000001012ba0d6 Run`JobData.init(decoder=Swift.Decoder @ 0x0000700002b4ca40) at <compiler-generated>:0
    frame #9: 0x00000001012bafdf Run`protocol witness for Decodable.init(from:) in conformance JobData at <compiler-generated>:0
    frame #10: 0x00007fff7179b217 libswiftCore.dylib`dispatch thunk of Swift.Decodable.init(from: Swift.Decoder) throws -> A + 7
    frame #11: 0x00007fff71b88fdf libswiftFoundation.dylib`Foundation.(__JSONDecoder in _12768CA107A31EF2DCE034FD75B541C9).unbox_(_: Any, as: Swift.Decodable.Type) throws -> Swift.Optional<Any> + 4239
    frame #12: 0x00007fff71b6d742 libswiftFoundation.dylib`Foundation.JSONDecoder.decode<A where A: Swift.Decodable>(_: A.Type, from: Foundation.Data) throws -> A + 1042
    frame #13: 0x00007fff71c671df libswiftFoundation.dylib`dispatch thunk of Foundation.JSONDecoder.decode<A where A: Swift.Decodable>(_: A.Type, from: Foundation.Data) throws -> A + 15
    frame #14: 0x00000001012d2ddc Run`closure #1 in closure #1 in RedisClient.get<Self>(data=203 bytes) at RedisClient+Codable.swift:12:42
    frame #15: 0x00000001012d3462 Run`partial apply for closure #1 in closure #1 in RedisClient.get<A>(_:asJSON:) at <compiler-generated>:0
    frame #16: 0x00000001012d2eac Run`thunk for @callee_guaranteed (@guaranteed Data) -> (@out A1?, @error @owned Error) at <compiler-generated>:0
    frame #17: 0x00000001012d34b3 Run`partial apply for thunk for @callee_guaranteed (@guaranteed Data) -> (@out A1?, @error @owned Error) at <compiler-generated>:0
    frame #18: 0x00007fff71534596 libswiftCore.dylib`Swift.Optional.flatMap<A>((A) throws -> Swift.Optional<A1>) throws -> Swift.Optional<A1> + 198
    frame #19: 0x00000001012d2c92 Run`closure #1 in RedisClient.get<Self>(data=203 bytes) at RedisClient+Codable.swift:11:29
    frame #20: 0x00000001012d2d42 Run`partial apply for closure #1 in RedisClient.get<A>(_:asJSON:) at <compiler-generated>:0
    frame #21: 0x00000001012d2f2c Run`thunk for @escaping @callee_guaranteed (@guaranteed Data?) -> (@out A1?, @error @owned Error) at <compiler-generated>:0
    frame #22: 0x00000001012d3003 Run`partial apply for thunk for @escaping @callee_guaranteed (@guaranteed Data?) -> (@out A1?, @error @owned Error) at <compiler-generated>:0
    frame #23: 0x000000010022efac Run`closure #1 in EventLoopFuture.flatMapThrowing<Value>(value=203 bytes, self=0x00000001069078d0, callback=0x00000001012d2fc0 Run`partial apply forwarder for reabstraction thunk helper <A><A1 where A: RediStack.RedisClient, A1: Swift.Decodable> from @escaping @callee_guaranteed (@guaranteed Swift.Optional<Foundation.Data>) -> (@out Swift.Optional<A1>, @error @owned Swift.Error) to @escaping @callee_guaranteed (@in_guaranteed Swift.Optional<Foundation.Data>) -> (@out Swift.Optional<A1>, @error @owned Swift.Error) at <compiler-generated>, file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/redis-kit/Sources/RedisKit/RedisClient+Codable.swift", line=10) at EventLoopFuture.swift:506:88
    frame #24: 0x0000000100234442 Run`partial apply for closure #1 in EventLoopFuture.flatMapThrowing<A>(file:line:_:) at <compiler-generated>:0
    frame #25: 0x000000010022e1a6 Run`closure #1 in EventLoopFuture.flatMap<Value>(self=0x00000001069078d0, callback=0x0000000100234400 Run`partial apply forwarder for closure #1 (A) -> NIO.EventLoopFuture<A1> in NIO.EventLoopFuture.flatMapThrowing<A>(file: Swift.StaticString, line: Swift.UInt, _: (A) throws -> A1) -> NIO.EventLoopFuture<A1> at <compiler-generated>, next=NIO.EventLoopPromise<Swift.Optional<Jobs.JobData>> @ 0x0000700002b4d538) at EventLoopFuture.swift:470:31
    frame #26: 0x0000000100229930 Run`thunk for @escaping @callee_guaranteed () -> (@owned CallbackList) at <compiler-generated>:0
    frame #27: 0x000000010022a591 Run`thunk for @escaping @callee_guaranteed () -> (@owned CallbackList)partial apply at <compiler-generated>:0
    frame #28: 0x000000010022aef3 Run`thunk for @escaping @callee_guaranteed () -> (@out CallbackList) at <compiler-generated>:0
    frame #29: 0x000000010022ae17 Run`CallbackList._run(self=NIO.CallbackList @ 0x0000700002b4d910) at EventLoopFuture.swift:107:28
    frame #30: 0x000000010022b608 Run`EventLoopPromise._resolve(value=success, self=NIO.EventLoopPromise<RediStack.RESPValue> @ 0x0000700002b4da10) at EventLoopFuture.swift:226:42
    frame #31: 0x000000010022b4f1 Run`EventLoopPromise.succeed(value=bulkString, self=NIO.EventLoopPromise<RediStack.RESPValue> @ 0x0000700002b4daf0) at EventLoopFuture.swift:171:14
    frame #32: 0x00000001012dc9be Run`RedisCommandHandler.channelRead(context=0x0000000106b03ea0, data=NIO.NIOAny @ 0x0000700002b4df08, self=0x0000000103c14780) at RedisCommandHandler.swift:93:25
    frame #33: 0x00000001012dcb19 Run`protocol witness for _ChannelInboundHandler.channelRead(context:data:) in conformance RedisCommandHandler at <compiler-generated>:0
    frame #34: 0x00000001001e2df4 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x0000700002b4df08, self=0x0000000106b03ea0) at ChannelPipeline.swift:1339:28
    frame #35: 0x00000001001e6a63 Run`ChannelHandlerContext.fireChannelRead(data=NIO.NIOAny @ 0x0000700002b4df08, self=0x0000000103d1ba90) at ChannelPipeline.swift:1152:20
    frame #36: 0x00000001012db396 Run`RedisByteDecoder.decode(context=0x0000000103d1ba90, buffer=NIO.ByteBuffer @ 0x0000700002b4e4d0, self=(parser = RediStack.RESPTranslator @ 0x0000000106806830)) at RedisByteDecoder.swift:35:17
    frame #37: 0x00000001012db703 Run`protocol witness for ByteToMessageDecoder.decode(context:buffer:) in conformance RedisByteDecoder at <compiler-generated>:0
    frame #38: 0x00000001002026dd Run`closure #1 in ByteToMessageHandler.decodeLoop(decoder=, buffer=NIO.ByteBuffer @ 0x0000700002b4e4d0, decodeMode=normal, self=0x0000000106807d30, context=0x0000000103d1ba90, allowEmptyBuffer=false) at Codec.swift:562:49
    frame #39: 0x000000010020a92d Run`partial apply for closure #1 in ByteToMessageHandler.decodeLoop(context:decodeMode:) at <compiler-generated>:0
    frame #40: 0x0000000100201214 Run`ByteToMessageHandler.withNextBuffer(allowEmptyBuffer=false, body=0x000000010020a910 Run`partial apply forwarder for closure #1 (inout A, inout NIO.ByteBuffer) throws -> NIO.DecodingState in NIO.ByteToMessageHandler.(decodeLoop in _F2A740607FEBA425AF6F8C49A24C0AD7)(context: NIO.ChannelHandlerContext, decodeMode: NIO.ByteToMessageHandler<A>.(DecodeMode in _F2A740607FEBA425AF6F8C49A24C0AD7)) throws -> NIO.(B2MDBuffer in _F2A740607FEBA425AF6F8C49A24C0AD7).BufferProcessingResult at <compiler-generated>, self=0x0000000106807d30) at Codec.swift:524:36
    frame #41: 0x0000000100201f81 Run`ByteToMessageHandler.decodeLoop(context=0x0000000103d1ba90, decodeMode=normal, self=0x0000000106807d30) at Codec.swift:558:35
    frame #42: 0x0000000100203e99 Run`ByteToMessageHandler.channelRead(context=0x0000000103d1ba90, data=NIO.NIOAny @ 0x0000700002b4f218, self=0x0000000106807d30) at Codec.swift:631:29
    frame #43: 0x0000000100204799 Run`protocol witness for _ChannelInboundHandler.channelRead(context:data:) in conformance ByteToMessageHandler<A> at <compiler-generated>:0
    frame #44: 0x00000001001e2df4 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x0000700002b4f218, self=0x0000000103d1ba90) at ChannelPipeline.swift:1339:28
    frame #45: 0x00000001001e2e85 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x0000700002b4f218, self=0x0000000103d1b8a0) at ChannelPipeline.swift:1341:24
    frame #46: 0x00000001001de90d Run`ChannelPipeline.fireChannelRead0(data=NIO.NIOAny @ 0x0000700002b4f218, self=0x0000000106807320) at ChannelPipeline.swift:829:29
    frame #47: 0x000000010019fbee Run`BaseStreamSocketChannel.readFromSocket(self=0x0000000106a05750) at BaseStreamSocketChannel.swift:107:35
    frame #48: 0x0000000100197456 Run`BaseSocketChannel.readable0(self=0x0000000106a05750) at BaseSocketChannel.swift:1033:35
    frame #49: 0x0000000100198b1d Run`BaseSocketChannel.readable(self=0x0000000106a05750) at BaseSocketChannel.swift:1017:14
    frame #50: 0x000000010019a009 Run`protocol witness for SelectableChannel.readable() in conformance BaseSocketChannel<A> at <compiler-generated>:0
    frame #51: 0x0000000100298b6b Run`SelectableEventLoop.handleEvent<C>(ev=(rawValue = 4), channel=0x0000000106a05750, self=0x0000000103d0ec10) at SelectableEventLoop.swift:284:25
    frame #52: 0x0000000100299c50 Run`closure #1 in closure #1 in SelectableEventLoop.run(ev=NIO.SelectorEvent<NIO.NIORegistration> @ 0x0000700002b4fbd8, self=0x0000000103d0ec10) at SelectableEventLoop.swift:333:30
    frame #53: 0x0000000100299fd9 Run`thunk for @callee_guaranteed (@guaranteed SelectorEvent<NIORegistration>) -> (@error @owned Error) at <compiler-generated>:0
    frame #54: 0x000000010029e334 Run`partial apply for thunk for @callee_guaranteed (@guaranteed SelectorEvent<NIORegistration>) -> (@error @owned Error) at <compiler-generated>:0
    frame #55: 0x00000001002a8e35 Run`Selector.whenReady(strategy=block, body=0x000000010029e320 Run`partial apply forwarder for reabstraction thunk helper from @callee_guaranteed (@guaranteed NIO.SelectorEvent<NIO.NIORegistration>) -> (@error @owned Swift.Error) to @escaping @callee_guaranteed (@in_guaranteed NIO.SelectorEvent<NIO.NIORegistration>) -> (@error @owned Swift.Error) at <compiler-generated>, self=0x0000000103d09a30) at Selector.swift:621:17
    frame #56: 0x000000010029994a Run`closure #1 in SelectableEventLoop.run(self=0x0000000103d0ec10, nextReadyTask=nil) at SelectableEventLoop.swift:328:31
    frame #57: 0x000000010029d294 Run`partial apply for closure #1 in SelectableEventLoop.run() at <compiler-generated>:0
    frame #58: 0x0000000100187cdf Run`thunk for @callee_guaranteed () -> (@error @owned Error) at <compiler-generated>:0
    frame #59: 0x000000010029d2b4 Run`thunk for @callee_guaranteed () -> (@error @owned Error)partial apply at <compiler-generated>:0
    frame #60: 0x0000000100295322 Run`closure #1 in withAutoReleasePool<T>(execute=0x000000010029d2a0 Run`reabstraction thunk helper from @callee_guaranteed () -> (@error @owned Swift.Error) to @escaping @callee_guaranteed () -> (@out (), @error @owned Swift.Error)partial apply forwarder with unmangled suffix ".7" at <compiler-generated>) at SelectableEventLoop.swift:25:13
    frame #61: 0x000000010029537f Run`partial apply for closure #1 in withAutoReleasePool<A>(_:) at <compiler-generated>:0
    frame #62: 0x00007fff71d4af0e libswiftObjectiveC.dylib`ObjectiveC.autoreleasepool<A>(invoking: () throws -> A) throws -> A + 46
    frame #63: 0x00000001002952c9 Run`withAutoReleasePool<T>(execute=0x000000010029d2a0 Run`reabstraction thunk helper from @callee_guaranteed () -> (@error @owned Swift.Error) to @escaping @callee_guaranteed () -> (@out (), @error @owned Swift.Error)partial apply forwarder with unmangled suffix ".7" at <compiler-generated>) at SelectableEventLoop.swift:24:16
    frame #64: 0x0000000100298f16 Run`SelectableEventLoop.run(self=0x0000000103d0ec10) at SelectableEventLoop.swift:327:17
    frame #65: 0x000000010022158b Run`closure #1 in static MultiThreadedEventLoopGroup.setupThreadAndEventLoop(t=0x0000000103d0ebe0, initializer=0x0000000100228c30 Run`partial apply forwarder for reabstraction thunk helper from @escaping @callee_guaranteed (@in_guaranteed NIO.NIOThread) -> (@out ()) to @escaping @callee_guaranteed (@guaranteed NIO.NIOThread) -> () at <compiler-generated>, self=NIO.MultiThreadedEventLoopGroup, lock=(mutex = 0x0000000103e142a0), _loop=0x0000000103d0ec10, loopUpAndRunningGroup=0x0000000103e142e0) at EventLoop.swift:792:23
    frame #66: 0x0000000100228d0a Run`partial apply for closure #1 in static MultiThreadedEventLoopGroup.setupThreadAndEventLoop(name:initializer:) at <compiler-generated>:0
    frame #67: 0x0000000100221bdf Run`thunk for @escaping @callee_guaranteed (@guaranteed NIOThread) -> () at <compiler-generated>:0
    frame #68: 0x00000001002dc781 Run`partial apply for thunk for @escaping @callee_guaranteed (@guaranteed NIOThread) -> () at <compiler-generated>:0
    frame #69: 0x00000001002dcb67 Run`closure #1 in static NIOThread.spawnAndRun(p=(_rawValue = 0x0000000103e14230 -> 0x00007fff9ee3ec58 libswiftCore.dylib`InitialAllocationPool + 17760)) at Thread.swift:118:13
    frame #70: 0x00000001002dcbd9 Run`@objc closure #1 in static NIOThread.spawnAndRun(name:detachThread:body:) at <compiler-generated>:0
    frame #71: 0x0000000103b268da libsystem_pthread.dylib`_pthread_start + 125
    frame #72: 0x0000000103b22f07 libsystem_pthread.dylib`thread_start + 15
  thread #6, name = 'NIO-ELT-0-#4'
    frame #0: 0x00007fff7225b1a5 libsystem_malloc.dylib`small_malloc_from_free_list + 580
    frame #1: 0x00007fff7225a8e9 libsystem_malloc.dylib`small_malloc_should_clear + 283
    frame #2: 0x00007fff72257af4 libsystem_malloc.dylib`szone_malloc_should_clear + 120
    frame #3: 0x00007fff7225cd89 libsystem_malloc.dylib`szone_realloc + 806
    frame #4: 0x00007fff7225c9be libsystem_malloc.dylib`malloc_zone_realloc + 111
    frame #5: 0x00007fff7225c8f5 libsystem_malloc.dylib`realloc + 253
    frame #6: 0x00007fff7214ea3f libsystem_c.dylib`reallocf + 21
    frame #7: 0x00007fff7212b7ba libsystem_c.dylib`__sfvwrite + 242
    frame #8: 0x00007fff7213504f libsystem_c.dylib`__vfprintf + 15037
    frame #9: 0x00007fff72158e43 libsystem_c.dylib`__v2printf + 475
    frame #10: 0x00007fff721311c2 libsystem_c.dylib`_vasprintf + 370
    frame #11: 0x00007fff72128cee libsystem_c.dylib`asprintf + 160
    frame #12: 0x00007fff717ce500 libswiftCore.dylib`swift_reportError + 112
    frame #13: 0x00007fff718461c4 libswiftCore.dylib`_swift_stdlib_reportFatalErrorInFile + 116
    frame #14: 0x00007fff7175b18e libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded, Arg[2] = Exploded> of closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 238
    frame #15: 0x00007fff7175b307 libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded, Arg[2] = Exploded> of closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 87
    frame #16: 0x00007fff7152af0c libswiftCore.dylib`function signature specialization <Arg[1] = [Closure Propagated : closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never, Argument Types : [Swift.StaticStringSwift.UnsafeBufferPointer<Swift.UInt8>Swift.UIntSwift.UInt32]> of generic specialization <()> of Swift.String.withUTF8<A>((Swift.UnsafeBufferPointer<Swift.UInt8>) throws -> A) throws -> A + 236
    frame #17: 0x00007fff7172d710 libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded> of Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 496
    frame #18: 0x00007fff7152a4c9 libswiftCore.dylib`Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 25
    frame #19: 0x000000010021f3de Run`EventLoop.preconditionInEventLoop(file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/swift-nio/Sources/NIO/EventLoop.swift", line=158, self=0x0000000106a04090) at EventLoop.swift:597:9
    frame #20: 0x000000010029c49e Run`protocol witness for EventLoop.preconditionInEventLoop(file:line:) in conformance SelectableEventLoop at <compiler-generated>:0
    frame #21: 0x000000010021ed65 Run`closure #1 in EventLoop.assertInEventLoop(self=0x0000000106a04090, file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/swift-nio/Sources/NIO/EventLoop.swift", line=158) at EventLoop.swift:591:18
    frame #22: 0x000000010021edac Run`partial apply for closure #1 in EventLoop.assertInEventLoop(file:line:) at <compiler-generated>:0
    frame #23: 0x00000001002df50e Run`closure #1 in implicit closure #1 in debugOnly(body=0x000000010021ed70 Run`partial apply forwarder for closure #1 () -> () in (extension in NIO):NIO.EventLoop.assertInEventLoop(file: Swift.StaticString, line: Swift.UInt) -> () at <compiler-generated>) at Utilities.swift:24:14
    frame #24: 0x00000001002df488 Run`debugOnly(body=0x000000010021ed70 Run`partial apply forwarder for closure #1 () -> () in (extension in NIO):NIO.EventLoop.assertInEventLoop(file: Swift.StaticString, line: Swift.UInt) -> () at <compiler-generated>) at Utilities.swift:24:5
    frame #25: 0x000000010021b710 Run`EventLoop.assertInEventLoop(file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/swift-nio/Sources/NIO/EventLoop.swift", line=158, self=0x0000000106a04090) at EventLoop.swift:590:9
    frame #26: 0x000000010021c211 Run`RepeatedTask.reschedule0(self=0x0000000103d17780) at EventLoop.swift:158:24
    frame #27: 0x000000010021c194 Run`closure #1 in closure #1 in RepeatedTask.reschedule(_0=<unavailable>, self=0x0000000103d17780) at EventLoop.swift:148:22
    frame #28: 0x00000001001a92d0 Run`thunk for @escaping @callee_guaranteed (@guaranteed Result<(), Error>) -> () at <compiler-generated>:0
    frame #29: 0x0000000100231d70 Run`closure #1 in EventLoopFuture.whenComplete(callback=0x0000000100229090 Run`partial apply forwarder for reabstraction thunk helper from @escaping @callee_guaranteed (@guaranteed Swift.Result<(), Swift.Error>) -> () to @escaping @callee_guaranteed (@in_guaranteed Swift.Result<(), Swift.Error>) -> () at <compiler-generated>, self=0x00000001068063a0) at EventLoopFuture.swift:738:13
    frame #30: 0x0000000100229930 Run`thunk for @escaping @callee_guaranteed () -> (@owned CallbackList) at <compiler-generated>:0
    frame #31: 0x000000010022a591 Run`thunk for @escaping @callee_guaranteed () -> (@owned CallbackList)partial apply at <compiler-generated>:0
    frame #32: 0x000000010022aef3 Run`thunk for @escaping @callee_guaranteed () -> (@out CallbackList) at <compiler-generated>:0
    frame #33: 0x000000010022ae17 Run`CallbackList._run(self=NIO.CallbackList @ 0x0000700002bd0910) at EventLoopFuture.swift:107:28
    frame #34: 0x000000010022b608 Run`EventLoopPromise._resolve(value=success, self=NIO.EventLoopPromise<RediStack.RESPValue> @ 0x0000700002bd0a10) at EventLoopFuture.swift:226:42
    frame #35: 0x000000010022b4f1 Run`EventLoopPromise.succeed(value=null, self=NIO.EventLoopPromise<RediStack.RESPValue> @ 0x0000700002bd0af0) at EventLoopFuture.swift:171:14
    frame #36: 0x00000001012dc9be Run`RedisCommandHandler.channelRead(context=0x0000000103e18fc0, data=NIO.NIOAny @ 0x0000700002bd0f08, self=0x0000000103d1b6e0) at RedisCommandHandler.swift:93:25
    frame #37: 0x00000001012dcb19 Run`protocol witness for _ChannelInboundHandler.channelRead(context:data:) in conformance RedisCommandHandler at <compiler-generated>:0
    frame #38: 0x00000001001e2df4 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x0000700002bd0f08, self=0x0000000103e18fc0) at ChannelPipeline.swift:1339:28
    frame #39: 0x00000001001e6a63 Run`ChannelHandlerContext.fireChannelRead(data=NIO.NIOAny @ 0x0000700002bd0f08, self=0x0000000106a076f0) at ChannelPipeline.swift:1152:20
    frame #40: 0x00000001012db396 Run`RedisByteDecoder.decode(context=0x0000000106a076f0, buffer=NIO.ByteBuffer @ 0x0000700002bd14d0, self=(parser = RediStack.RESPTranslator @ 0x0000000103d1aad0)) at RedisByteDecoder.swift:35:17
    frame #41: 0x00000001012db703 Run`protocol witness for ByteToMessageDecoder.decode(context:buffer:) in conformance RedisByteDecoder at <compiler-generated>:0
    frame #42: 0x00000001002026dd Run`closure #1 in ByteToMessageHandler.decodeLoop(decoder=, buffer=NIO.ByteBuffer @ 0x0000700002bd14d0, decodeMode=normal, self=0x0000000103d1b520, context=0x0000000106a076f0, allowEmptyBuffer=false) at Codec.swift:562:49
    frame #43: 0x000000010020a92d Run`partial apply for closure #1 in ByteToMessageHandler.decodeLoop(context:decodeMode:) at <compiler-generated>:0
    frame #44: 0x0000000100201214 Run`ByteToMessageHandler.withNextBuffer(allowEmptyBuffer=false, body=0x000000010020a910 Run`partial apply forwarder for closure #1 (inout A, inout NIO.ByteBuffer) throws -> NIO.DecodingState in NIO.ByteToMessageHandler.(decodeLoop in _F2A740607FEBA425AF6F8C49A24C0AD7)(context: NIO.ChannelHandlerContext, decodeMode: NIO.ByteToMessageHandler<A>.(DecodeMode in _F2A740607FEBA425AF6F8C49A24C0AD7)) throws -> NIO.(B2MDBuffer in _F2A740607FEBA425AF6F8C49A24C0AD7).BufferProcessingResult at <compiler-generated>, self=0x0000000103d1b520) at Codec.swift:524:36
    frame #45: 0x0000000100201f81 Run`ByteToMessageHandler.decodeLoop(context=0x0000000106a076f0, decodeMode=normal, self=0x0000000103d1b520) at Codec.swift:558:35
    frame #46: 0x0000000100203e99 Run`ByteToMessageHandler.channelRead(context=0x0000000106a076f0, data=NIO.NIOAny @ 0x0000700002bd2218, self=0x0000000103d1b520) at Codec.swift:631:29
    frame #47: 0x0000000100204799 Run`protocol witness for _ChannelInboundHandler.channelRead(context:data:) in conformance ByteToMessageHandler<A> at <compiler-generated>:0
    frame #48: 0x00000001001e2df4 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x0000700002bd2218, self=0x0000000106a076f0) at ChannelPipeline.swift:1339:28
    frame #49: 0x00000001001e2e85 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x0000700002bd2218, self=0x0000000106a07500) at ChannelPipeline.swift:1341:24
    frame #50: 0x00000001001de90d Run`ChannelPipeline.fireChannelRead0(data=NIO.NIOAny @ 0x0000700002bd2218, self=0x0000000103e17de0) at ChannelPipeline.swift:829:29
    frame #51: 0x000000010019fbee Run`BaseStreamSocketChannel.readFromSocket(self=0x0000000106806950) at BaseStreamSocketChannel.swift:107:35
    frame #52: 0x0000000100197456 Run`BaseSocketChannel.readable0(self=0x0000000106806950) at BaseSocketChannel.swift:1033:35
    frame #53: 0x0000000100198b1d Run`BaseSocketChannel.readable(self=0x0000000106806950) at BaseSocketChannel.swift:1017:14
    frame #54: 0x000000010019a009 Run`protocol witness for SelectableChannel.readable() in conformance BaseSocketChannel<A> at <compiler-generated>:0
    frame #55: 0x0000000100298b6b Run`SelectableEventLoop.handleEvent<C>(ev=(rawValue = 4), channel=0x0000000106806950, self=0x0000000103e14400) at SelectableEventLoop.swift:284:25
    frame #56: 0x0000000100299c50 Run`closure #1 in closure #1 in SelectableEventLoop.run(ev=NIO.SelectorEvent<NIO.NIORegistration> @ 0x0000700002bd2bd8, self=0x0000000103e14400) at SelectableEventLoop.swift:333:30
    frame #57: 0x0000000100299fd9 Run`thunk for @callee_guaranteed (@guaranteed SelectorEvent<NIORegistration>) -> (@error @owned Error) at <compiler-generated>:0
    frame #58: 0x000000010029e334 Run`partial apply for thunk for @callee_guaranteed (@guaranteed SelectorEvent<NIORegistration>) -> (@error @owned Error) at <compiler-generated>:0
    frame #59: 0x00000001002a8e35 Run`Selector.whenReady(strategy=block, body=0x000000010029e320 Run`partial apply forwarder for reabstraction thunk helper from @callee_guaranteed (@guaranteed NIO.SelectorEvent<NIO.NIORegistration>) -> (@error @owned Swift.Error) to @escaping @callee_guaranteed (@in_guaranteed NIO.SelectorEvent<NIO.NIORegistration>) -> (@error @owned Swift.Error) at <compiler-generated>, self=0x0000000103e14600) at Selector.swift:621:17
    frame #60: 0x000000010029994a Run`closure #1 in SelectableEventLoop.run(self=0x0000000103e14400, nextReadyTask=nil) at SelectableEventLoop.swift:328:31
    frame #61: 0x000000010029d294 Run`partial apply for closure #1 in SelectableEventLoop.run() at <compiler-generated>:0
    frame #62: 0x0000000100187cdf Run`thunk for @callee_guaranteed () -> (@error @owned Error) at <compiler-generated>:0
    frame #63: 0x000000010029d2b4 Run`thunk for @callee_guaranteed () -> (@error @owned Error)partial apply at <compiler-generated>:0
    frame #64: 0x0000000100295322 Run`closure #1 in withAutoReleasePool<T>(execute=0x000000010029d2a0 Run`reabstraction thunk helper from @callee_guaranteed () -> (@error @owned Swift.Error) to @escaping @callee_guaranteed () -> (@out (), @error @owned Swift.Error)partial apply forwarder with unmangled suffix ".7" at <compiler-generated>) at SelectableEventLoop.swift:25:13
    frame #65: 0x000000010029537f Run`partial apply for closure #1 in withAutoReleasePool<A>(_:) at <compiler-generated>:0
    frame #66: 0x00007fff71d4af0e libswiftObjectiveC.dylib`ObjectiveC.autoreleasepool<A>(invoking: () throws -> A) throws -> A + 46
    frame #67: 0x00000001002952c9 Run`withAutoReleasePool<T>(execute=0x000000010029d2a0 Run`reabstraction thunk helper from @callee_guaranteed () -> (@error @owned Swift.Error) to @escaping @callee_guaranteed () -> (@out (), @error @owned Swift.Error)partial apply forwarder with unmangled suffix ".7" at <compiler-generated>) at SelectableEventLoop.swift:24:16
    frame #68: 0x0000000100298f16 Run`SelectableEventLoop.run(self=0x0000000103e14400) at SelectableEventLoop.swift:327:17
    frame #69: 0x000000010022158b Run`closure #1 in static MultiThreadedEventLoopGroup.setupThreadAndEventLoop(t=0x0000000103e143d0, initializer=0x0000000100228c30 Run`partial apply forwarder for reabstraction thunk helper from @escaping @callee_guaranteed (@in_guaranteed NIO.NIOThread) -> (@out ()) to @escaping @callee_guaranteed (@guaranteed NIO.NIOThread) -> () at <compiler-generated>, self=NIO.MultiThreadedEventLoopGroup, lock=(mutex = 0x0000000103c12190), _loop=0x0000000103e14400, loopUpAndRunningGroup=0x0000000103c121d0) at EventLoop.swift:792:23
    frame #70: 0x0000000100228d0a Run`partial apply for closure #1 in static MultiThreadedEventLoopGroup.setupThreadAndEventLoop(name:initializer:) at <compiler-generated>:0
    frame #71: 0x0000000100221bdf Run`thunk for @escaping @callee_guaranteed (@guaranteed NIOThread) -> () at <compiler-generated>:0
    frame #72: 0x00000001002dc781 Run`partial apply for thunk for @escaping @callee_guaranteed (@guaranteed NIOThread) -> () at <compiler-generated>:0
    frame #73: 0x00000001002dcb67 Run`closure #1 in static NIOThread.spawnAndRun(p=(_rawValue = 0x0000000103c12160 -> 0x00007fff9ee3ec58 libswiftCore.dylib`InitialAllocationPool + 17760)) at Thread.swift:118:13
    frame #74: 0x00000001002dcbd9 Run`@objc closure #1 in static NIOThread.spawnAndRun(name:detachThread:body:) at <compiler-generated>:0
    frame #75: 0x0000000103b268da libsystem_pthread.dylib`_pthread_start + 125
    frame #76: 0x0000000103b22f07 libsystem_pthread.dylib`thread_start + 15
  thread #7, name = 'NIO-ELT-0-#5'
    frame #0: 0x00007fff717ce460 libswiftCore.dylib`_swift_runtime_on_report
    frame #1: 0x00007fff71846223 libswiftCore.dylib`_swift_stdlib_reportFatalErrorInFile + 211
    frame #2: 0x00007fff7175b18e libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded, Arg[2] = Exploded> of closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 238
    frame #3: 0x00007fff7175b307 libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded, Arg[2] = Exploded> of closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 87
    frame #4: 0x00007fff7152af0c libswiftCore.dylib`function signature specialization <Arg[1] = [Closure Propagated : closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never, Argument Types : [Swift.StaticStringSwift.UnsafeBufferPointer<Swift.UInt8>Swift.UIntSwift.UInt32]> of generic specialization <()> of Swift.String.withUTF8<A>((Swift.UnsafeBufferPointer<Swift.UInt8>) throws -> A) throws -> A + 236
    frame #5: 0x00007fff7172d710 libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded> of Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 496
    frame #6: 0x00007fff7152a4c9 libswiftCore.dylib`Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 25
    frame #7: 0x000000010021f3de Run`EventLoop.preconditionInEventLoop(file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/swift-nio/Sources/NIO/EventLoop.swift", line=158, self=0x0000000103d0e8c0) at EventLoop.swift:597:9
    frame #8: 0x000000010029c49e Run`protocol witness for EventLoop.preconditionInEventLoop(file:line:) in conformance SelectableEventLoop at <compiler-generated>:0
    frame #9: 0x000000010021ed65 Run`closure #1 in EventLoop.assertInEventLoop(self=0x0000000103d0e8c0, file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/swift-nio/Sources/NIO/EventLoop.swift", line=158) at EventLoop.swift:591:18
    frame #10: 0x000000010021edac Run`partial apply for closure #1 in EventLoop.assertInEventLoop(file:line:) at <compiler-generated>:0
    frame #11: 0x00000001002df50e Run`closure #1 in implicit closure #1 in debugOnly(body=0x000000010021ed70 Run`partial apply forwarder for closure #1 () -> () in (extension in NIO):NIO.EventLoop.assertInEventLoop(file: Swift.StaticString, line: Swift.UInt) -> () at <compiler-generated>) at Utilities.swift:24:14
    frame #12: 0x00000001002df488 Run`debugOnly(body=0x000000010021ed70 Run`partial apply forwarder for closure #1 () -> () in (extension in NIO):NIO.EventLoop.assertInEventLoop(file: Swift.StaticString, line: Swift.UInt) -> () at <compiler-generated>) at Utilities.swift:24:5
    frame #13: 0x000000010021b710 Run`EventLoop.assertInEventLoop(file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/swift-nio/Sources/NIO/EventLoop.swift", line=158, self=0x0000000103d0e8c0) at EventLoop.swift:590:9
    frame #14: 0x000000010021c211 Run`RepeatedTask.reschedule0(self=0x0000000103d17ae0) at EventLoop.swift:158:24
    frame #15: 0x000000010021c194 Run`closure #1 in closure #1 in RepeatedTask.reschedule(_0=<unavailable>, self=0x0000000103d17ae0) at EventLoop.swift:148:22
    frame #16: 0x00000001001a92d0 Run`thunk for @escaping @callee_guaranteed (@guaranteed Result<(), Error>) -> () at <compiler-generated>:0
    frame #17: 0x0000000100231d70 Run`closure #1 in EventLoopFuture.whenComplete(callback=0x0000000100229090 Run`partial apply forwarder for reabstraction thunk helper from @escaping @callee_guaranteed (@guaranteed Swift.Result<(), Swift.Error>) -> () to @escaping @callee_guaranteed (@in_guaranteed Swift.Result<(), Swift.Error>) -> () at <compiler-generated>, self=0x0000000103e17640) at EventLoopFuture.swift:738:13
    frame #18: 0x0000000100229930 Run`thunk for @escaping @callee_guaranteed () -> (@owned CallbackList) at <compiler-generated>:0
    frame #19: 0x000000010022a591 Run`thunk for @escaping @callee_guaranteed () -> (@owned CallbackList)partial apply at <compiler-generated>:0
    frame #20: 0x000000010022aef3 Run`thunk for @escaping @callee_guaranteed () -> (@out CallbackList) at <compiler-generated>:0
    frame #21: 0x000000010022ae17 Run`CallbackList._run(self=NIO.CallbackList @ 0x0000700002c53910) at EventLoopFuture.swift:107:28
    frame #22: 0x000000010022b608 Run`EventLoopPromise._resolve(value=success, self=NIO.EventLoopPromise<RediStack.RESPValue> @ 0x0000700002c53a10) at EventLoopFuture.swift:226:42
    frame #23: 0x000000010022b4f1 Run`EventLoopPromise.succeed(value=null, self=NIO.EventLoopPromise<RediStack.RESPValue> @ 0x0000700002c53af0) at EventLoopFuture.swift:171:14
    frame #24: 0x00000001012dc9be Run`RedisCommandHandler.channelRead(context=0x0000000106a07820, data=NIO.NIOAny @ 0x0000700002c53f08, self=0x0000000103d1b710) at RedisCommandHandler.swift:93:25
    frame #25: 0x00000001012dcb19 Run`protocol witness for _ChannelInboundHandler.channelRead(context:data:) in conformance RedisCommandHandler at <compiler-generated>:0
    frame #26: 0x00000001001e2df4 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x0000700002c53f08, self=0x0000000106a07820) at ChannelPipeline.swift:1339:28
    frame #27: 0x00000001001e6a63 Run`ChannelHandlerContext.fireChannelRead(data=NIO.NIOAny @ 0x0000700002c53f08, self=0x0000000106b03850) at ChannelPipeline.swift:1152:20
    frame #28: 0x00000001012db396 Run`RedisByteDecoder.decode(context=0x0000000106b03850, buffer=NIO.ByteBuffer @ 0x0000700002c544d0, self=(parser = RediStack.RESPTranslator @ 0x0000000106b02a60)) at RedisByteDecoder.swift:35:17
    frame #29: 0x00000001012db703 Run`protocol witness for ByteToMessageDecoder.decode(context:buffer:) in conformance RedisByteDecoder at <compiler-generated>:0
    frame #30: 0x00000001002026dd Run`closure #1 in ByteToMessageHandler.decodeLoop(decoder=, buffer=NIO.ByteBuffer @ 0x0000700002c544d0, decodeMode=normal, self=0x0000000106b033a0, context=0x0000000106b03850, allowEmptyBuffer=false) at Codec.swift:562:49
    frame #31: 0x000000010020a92d Run`partial apply for closure #1 in ByteToMessageHandler.decodeLoop(context:decodeMode:) at <compiler-generated>:0
    frame #32: 0x0000000100201214 Run`ByteToMessageHandler.withNextBuffer(allowEmptyBuffer=false, body=0x000000010020a910 Run`partial apply forwarder for closure #1 (inout A, inout NIO.ByteBuffer) throws -> NIO.DecodingState in NIO.ByteToMessageHandler.(decodeLoop in _F2A740607FEBA425AF6F8C49A24C0AD7)(context: NIO.ChannelHandlerContext, decodeMode: NIO.ByteToMessageHandler<A>.(DecodeMode in _F2A740607FEBA425AF6F8C49A24C0AD7)) throws -> NIO.(B2MDBuffer in _F2A740607FEBA425AF6F8C49A24C0AD7).BufferProcessingResult at <compiler-generated>, self=0x0000000106b033a0) at Codec.swift:524:36
    frame #33: 0x0000000100201f81 Run`ByteToMessageHandler.decodeLoop(context=0x0000000106b03850, decodeMode=normal, self=0x0000000106b033a0) at Codec.swift:558:35
    frame #34: 0x0000000100203e99 Run`ByteToMessageHandler.channelRead(context=0x0000000106b03850, data=NIO.NIOAny @ 0x0000700002c55218, self=0x0000000106b033a0) at Codec.swift:631:29
    frame #35: 0x0000000100204799 Run`protocol witness for _ChannelInboundHandler.channelRead(context:data:) in conformance ByteToMessageHandler<A> at <compiler-generated>:0
    frame #36: 0x00000001001e2df4 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x0000700002c55218, self=0x0000000106b03850) at ChannelPipeline.swift:1339:28
    frame #37: 0x00000001001e2e85 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x0000700002c55218, self=0x0000000106b03660) at ChannelPipeline.swift:1341:24
    frame #38: 0x00000001001de90d Run`ChannelPipeline.fireChannelRead0(data=NIO.NIOAny @ 0x0000700002c55218, self=0x0000000103e17d10) at ChannelPipeline.swift:829:29
    frame #39: 0x000000010019fbee Run`BaseStreamSocketChannel.readFromSocket(self=0x0000000106a05c80) at BaseStreamSocketChannel.swift:107:35
    frame #40: 0x0000000100197456 Run`BaseSocketChannel.readable0(self=0x0000000106a05c80) at BaseSocketChannel.swift:1033:35
    frame #41: 0x0000000100198b1d Run`BaseSocketChannel.readable(self=0x0000000106a05c80) at BaseSocketChannel.swift:1017:14
    frame #42: 0x000000010019a009 Run`protocol witness for SelectableChannel.readable() in conformance BaseSocketChannel<A> at <compiler-generated>:0
    frame #43: 0x0000000100298b6b Run`SelectableEventLoop.handleEvent<C>(ev=(rawValue = 4), channel=0x0000000106a05c80, self=0x0000000103d09b60) at SelectableEventLoop.swift:284:25
    frame #44: 0x0000000100299c50 Run`closure #1 in closure #1 in SelectableEventLoop.run(ev=NIO.SelectorEvent<NIO.NIORegistration> @ 0x0000700002c55bd8, self=0x0000000103d09b60) at SelectableEventLoop.swift:333:30
    frame #45: 0x0000000100299fd9 Run`thunk for @callee_guaranteed (@guaranteed SelectorEvent<NIORegistration>) -> (@error @owned Error) at <compiler-generated>:0
    frame #46: 0x000000010029e334 Run`partial apply for thunk for @callee_guaranteed (@guaranteed SelectorEvent<NIORegistration>) -> (@error @owned Error) at <compiler-generated>:0
    frame #47: 0x00000001002a8e35 Run`Selector.whenReady(strategy=block, body=0x000000010029e320 Run`partial apply forwarder for reabstraction thunk helper from @callee_guaranteed (@guaranteed NIO.SelectorEvent<NIO.NIORegistration>) -> (@error @owned Swift.Error) to @escaping @callee_guaranteed (@in_guaranteed NIO.SelectorEvent<NIO.NIORegistration>) -> (@error @owned Swift.Error) at <compiler-generated>, self=0x0000000103d09d80) at Selector.swift:621:17
    frame #48: 0x000000010029994a Run`closure #1 in SelectableEventLoop.run(self=0x0000000103d09b60, nextReadyTask=nil) at SelectableEventLoop.swift:328:31
    frame #49: 0x000000010029d294 Run`partial apply for closure #1 in SelectableEventLoop.run() at <compiler-generated>:0
    frame #50: 0x0000000100187cdf Run`thunk for @callee_guaranteed () -> (@error @owned Error) at <compiler-generated>:0
    frame #51: 0x000000010029d2b4 Run`thunk for @callee_guaranteed () -> (@error @owned Error)partial apply at <compiler-generated>:0
    frame #52: 0x0000000100295322 Run`closure #1 in withAutoReleasePool<T>(execute=0x000000010029d2a0 Run`reabstraction thunk helper from @callee_guaranteed () -> (@error @owned Swift.Error) to @escaping @callee_guaranteed () -> (@out (), @error @owned Swift.Error)partial apply forwarder with unmangled suffix ".7" at <compiler-generated>) at SelectableEventLoop.swift:25:13
    frame #53: 0x000000010029537f Run`partial apply for closure #1 in withAutoReleasePool<A>(_:) at <compiler-generated>:0
    frame #54: 0x00007fff71d4af0e libswiftObjectiveC.dylib`ObjectiveC.autoreleasepool<A>(invoking: () throws -> A) throws -> A + 46
    frame #55: 0x00000001002952c9 Run`withAutoReleasePool<T>(execute=0x000000010029d2a0 Run`reabstraction thunk helper from @callee_guaranteed () -> (@error @owned Swift.Error) to @escaping @callee_guaranteed () -> (@out (), @error @owned Swift.Error)partial apply forwarder with unmangled suffix ".7" at <compiler-generated>) at SelectableEventLoop.swift:24:16
    frame #56: 0x0000000100298f16 Run`SelectableEventLoop.run(self=0x0000000103d09b60) at SelectableEventLoop.swift:327:17
    frame #57: 0x000000010022158b Run`closure #1 in static MultiThreadedEventLoopGroup.setupThreadAndEventLoop(t=0x0000000103d09b30, initializer=0x0000000100228c30 Run`partial apply forwarder for reabstraction thunk helper from @escaping @callee_guaranteed (@in_guaranteed NIO.NIOThread) -> (@out ()) to @escaping @callee_guaranteed (@guaranteed NIO.NIOThread) -> () at <compiler-generated>, self=NIO.MultiThreadedEventLoopGroup, lock=(mutex = 0x0000000103c12560), _loop=0x0000000103d09b60, loopUpAndRunningGroup=0x0000000103c125a0) at EventLoop.swift:792:23
    frame #58: 0x0000000100228d0a Run`partial apply for closure #1 in static MultiThreadedEventLoopGroup.setupThreadAndEventLoop(name:initializer:) at <compiler-generated>:0
    frame #59: 0x0000000100221bdf Run`thunk for @escaping @callee_guaranteed (@guaranteed NIOThread) -> () at <compiler-generated>:0
    frame #60: 0x00000001002dc781 Run`partial apply for thunk for @escaping @callee_guaranteed (@guaranteed NIOThread) -> () at <compiler-generated>:0
    frame #61: 0x00000001002dcb67 Run`closure #1 in static NIOThread.spawnAndRun(p=(_rawValue = 0x0000000103c124f0 -> 0x00007fff9ee3ec58 libswiftCore.dylib`InitialAllocationPool + 17760)) at Thread.swift:118:13
    frame #62: 0x00000001002dcbd9 Run`@objc closure #1 in static NIOThread.spawnAndRun(name:detachThread:body:) at <compiler-generated>:0
    frame #63: 0x0000000103b268da libsystem_pthread.dylib`_pthread_start + 125
    frame #64: 0x0000000103b22f07 libsystem_pthread.dylib`thread_start + 15
  thread #8, name = 'NIO-ELT-0-#6'
    frame #0: 0x00007fff717ce460 libswiftCore.dylib`_swift_runtime_on_report
    frame #1: 0x00007fff71846223 libswiftCore.dylib`_swift_stdlib_reportFatalErrorInFile + 211
    frame #2: 0x00007fff7175b18e libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded, Arg[2] = Exploded> of closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 238
    frame #3: 0x00007fff7175b307 libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded, Arg[2] = Exploded> of closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 87
    frame #4: 0x00007fff7152af0c libswiftCore.dylib`function signature specialization <Arg[1] = [Closure Propagated : closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never, Argument Types : [Swift.StaticStringSwift.UnsafeBufferPointer<Swift.UInt8>Swift.UIntSwift.UInt32]> of generic specialization <()> of Swift.String.withUTF8<A>((Swift.UnsafeBufferPointer<Swift.UInt8>) throws -> A) throws -> A + 236
    frame #5: 0x00007fff7172d710 libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded> of Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 496
    frame #6: 0x00007fff7152a4c9 libswiftCore.dylib`Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 25
    frame #7: 0x000000010021f3de Run`EventLoop.preconditionInEventLoop(file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/swift-nio/Sources/NIO/EventLoop.swift", line=158, self=0x0000000103d0ec10) at EventLoop.swift:597:9
    frame #8: 0x000000010029c49e Run`protocol witness for EventLoop.preconditionInEventLoop(file:line:) in conformance SelectableEventLoop at <compiler-generated>:0
    frame #9: 0x000000010021ed65 Run`closure #1 in EventLoop.assertInEventLoop(self=0x0000000103d0ec10, file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/swift-nio/Sources/NIO/EventLoop.swift", line=158) at EventLoop.swift:591:18
    frame #10: 0x000000010021edac Run`partial apply for closure #1 in EventLoop.assertInEventLoop(file:line:) at <compiler-generated>:0
    frame #11: 0x00000001002df50e Run`closure #1 in implicit closure #1 in debugOnly(body=0x000000010021ed70 Run`partial apply forwarder for closure #1 () -> () in (extension in NIO):NIO.EventLoop.assertInEventLoop(file: Swift.StaticString, line: Swift.UInt) -> () at <compiler-generated>) at Utilities.swift:24:14
    frame #12: 0x00000001002df488 Run`debugOnly(body=0x000000010021ed70 Run`partial apply forwarder for closure #1 () -> () in (extension in NIO):NIO.EventLoop.assertInEventLoop(file: Swift.StaticString, line: Swift.UInt) -> () at <compiler-generated>) at Utilities.swift:24:5
    frame #13: 0x000000010021b710 Run`EventLoop.assertInEventLoop(file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/swift-nio/Sources/NIO/EventLoop.swift", line=158, self=0x0000000103d0ec10) at EventLoop.swift:590:9
    frame #14: 0x000000010021c211 Run`RepeatedTask.reschedule0(self=0x0000000103d17d20) at EventLoop.swift:158:24
    frame #15: 0x000000010021c194 Run`closure #1 in closure #1 in RepeatedTask.reschedule(_0=<unavailable>, self=0x0000000103d17d20) at EventLoop.swift:148:22
    frame #16: 0x00000001001a92d0 Run`thunk for @escaping @callee_guaranteed (@guaranteed Result<(), Error>) -> () at <compiler-generated>:0
    frame #17: 0x0000000100231d70 Run`closure #1 in EventLoopFuture.whenComplete(callback=0x0000000100229090 Run`partial apply forwarder for reabstraction thunk helper from @escaping @callee_guaranteed (@guaranteed Swift.Result<(), Swift.Error>) -> () to @escaping @callee_guaranteed (@in_guaranteed Swift.Result<(), Swift.Error>) -> () at <compiler-generated>, self=0x0000000103d195f0) at EventLoopFuture.swift:738:13
    frame #18: 0x0000000100229930 Run`thunk for @escaping @callee_guaranteed () -> (@owned CallbackList) at <compiler-generated>:0
    frame #19: 0x000000010022a591 Run`thunk for @escaping @callee_guaranteed () -> (@owned CallbackList)partial apply at <compiler-generated>:0
    frame #20: 0x000000010022aef3 Run`thunk for @escaping @callee_guaranteed () -> (@out CallbackList) at <compiler-generated>:0
    frame #21: 0x000000010022ae17 Run`CallbackList._run(self=NIO.CallbackList @ 0x0000700002cd6910) at EventLoopFuture.swift:107:28
    frame #22: 0x000000010022b608 Run`EventLoopPromise._resolve(value=success, self=NIO.EventLoopPromise<RediStack.RESPValue> @ 0x0000700002cd6a10) at EventLoopFuture.swift:226:42
    frame #23: 0x000000010022b4f1 Run`EventLoopPromise.succeed(value=null, self=NIO.EventLoopPromise<RediStack.RESPValue> @ 0x0000700002cd6af0) at EventLoopFuture.swift:171:14
    frame #24: 0x00000001012dc9be Run`RedisCommandHandler.channelRead(context=0x0000000103c15400, data=NIO.NIOAny @ 0x0000700002cd6f08, self=0x0000000106b034d0) at RedisCommandHandler.swift:93:25
    frame #25: 0x00000001012dcb19 Run`protocol witness for _ChannelInboundHandler.channelRead(context:data:) in conformance RedisCommandHandler at <compiler-generated>:0
    frame #26: 0x00000001001e2df4 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x0000700002cd6f08, self=0x0000000103c15400) at ChannelPipeline.swift:1339:28
    frame #27: 0x00000001001e6a63 Run`ChannelHandlerContext.fireChannelRead(data=NIO.NIOAny @ 0x0000700002cd6f08, self=0x0000000106a073d0) at ChannelPipeline.swift:1152:20
    frame #28: 0x00000001012db396 Run`RedisByteDecoder.decode(context=0x0000000106a073d0, buffer=NIO.ByteBuffer @ 0x0000700002cd74d0, self=(parser = RediStack.RESPTranslator @ 0x0000000106a05510)) at RedisByteDecoder.swift:35:17
    frame #29: 0x00000001012db703 Run`protocol witness for ByteToMessageDecoder.decode(context:buffer:) in conformance RedisByteDecoder at <compiler-generated>:0
    frame #30: 0x00000001002026dd Run`closure #1 in ByteToMessageHandler.decodeLoop(decoder=, buffer=NIO.ByteBuffer @ 0x0000700002cd74d0, decodeMode=normal, self=0x0000000106a06f90, context=0x0000000106a073d0, allowEmptyBuffer=false) at Codec.swift:562:49
    frame #31: 0x000000010020a92d Run`partial apply for closure #1 in ByteToMessageHandler.decodeLoop(context:decodeMode:) at <compiler-generated>:0
    frame #32: 0x0000000100201214 Run`ByteToMessageHandler.withNextBuffer(allowEmptyBuffer=false, body=0x000000010020a910 Run`partial apply forwarder for closure #1 (inout A, inout NIO.ByteBuffer) throws -> NIO.DecodingState in NIO.ByteToMessageHandler.(decodeLoop in _F2A740607FEBA425AF6F8C49A24C0AD7)(context: NIO.ChannelHandlerContext, decodeMode: NIO.ByteToMessageHandler<A>.(DecodeMode in _F2A740607FEBA425AF6F8C49A24C0AD7)) throws -> NIO.(B2MDBuffer in _F2A740607FEBA425AF6F8C49A24C0AD7).BufferProcessingResult at <compiler-generated>, self=0x0000000106a06f90) at Codec.swift:524:36
    frame #33: 0x0000000100201f81 Run`ByteToMessageHandler.decodeLoop(context=0x0000000106a073d0, decodeMode=normal, self=0x0000000106a06f90) at Codec.swift:558:35
    frame #34: 0x0000000100203e99 Run`ByteToMessageHandler.channelRead(context=0x0000000106a073d0, data=NIO.NIOAny @ 0x0000700002cd8218, self=0x0000000106a06f90) at Codec.swift:631:29
    frame #35: 0x0000000100204799 Run`protocol witness for _ChannelInboundHandler.channelRead(context:data:) in conformance ByteToMessageHandler<A> at <compiler-generated>:0
    frame #36: 0x00000001001e2df4 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x0000700002cd8218, self=0x0000000106a073d0) at ChannelPipeline.swift:1339:28
    frame #37: 0x00000001001e2e85 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x0000700002cd8218, self=0x0000000106a071e0) at ChannelPipeline.swift:1341:24
    frame #38: 0x00000001001de90d Run`ChannelPipeline.fireChannelRead0(data=NIO.NIOAny @ 0x0000700002cd8218, self=0x0000000103d1aae0) at ChannelPipeline.swift:829:29
    frame #39: 0x000000010019fbee Run`BaseStreamSocketChannel.readFromSocket(self=0x0000000103d1a100) at BaseStreamSocketChannel.swift:107:35
    frame #40: 0x0000000100197456 Run`BaseSocketChannel.readable0(self=0x0000000103d1a100) at BaseSocketChannel.swift:1033:35
    frame #41: 0x0000000100198b1d Run`BaseSocketChannel.readable(self=0x0000000103d1a100) at BaseSocketChannel.swift:1017:14
    frame #42: 0x000000010019a009 Run`protocol witness for SelectableChannel.readable() in conformance BaseSocketChannel<A> at <compiler-generated>:0
    frame #43: 0x0000000100298b6b Run`SelectableEventLoop.handleEvent<C>(ev=(rawValue = 4), channel=0x0000000103d1a100, self=0x0000000103d09eb0) at SelectableEventLoop.swift:284:25
    frame #44: 0x0000000100299c50 Run`closure #1 in closure #1 in SelectableEventLoop.run(ev=NIO.SelectorEvent<NIO.NIORegistration> @ 0x0000700002cd8bd8, self=0x0000000103d09eb0) at SelectableEventLoop.swift:333:30
    frame #45: 0x0000000100299fd9 Run`thunk for @callee_guaranteed (@guaranteed SelectorEvent<NIORegistration>) -> (@error @owned Error) at <compiler-generated>:0
    frame #46: 0x000000010029e334 Run`partial apply for thunk for @callee_guaranteed (@guaranteed SelectorEvent<NIORegistration>) -> (@error @owned Error) at <compiler-generated>:0
    frame #47: 0x00000001002a8e35 Run`Selector.whenReady(strategy=block, body=0x000000010029e320 Run`partial apply forwarder for reabstraction thunk helper from @callee_guaranteed (@guaranteed NIO.SelectorEvent<NIO.NIORegistration>) -> (@error @owned Swift.Error) to @escaping @callee_guaranteed (@in_guaranteed NIO.SelectorEvent<NIO.NIORegistration>) -> (@error @owned Swift.Error) at <compiler-generated>, self=0x0000000103d0a0d0) at Selector.swift:621:17
    frame #48: 0x000000010029994a Run`closure #1 in SelectableEventLoop.run(self=0x0000000103d09eb0, nextReadyTask=nil) at SelectableEventLoop.swift:328:31
    frame #49: 0x000000010029d294 Run`partial apply for closure #1 in SelectableEventLoop.run() at <compiler-generated>:0
    frame #50: 0x0000000100187cdf Run`thunk for @callee_guaranteed () -> (@error @owned Error) at <compiler-generated>:0
    frame #51: 0x000000010029d2b4 Run`thunk for @callee_guaranteed () -> (@error @owned Error)partial apply at <compiler-generated>:0
    frame #52: 0x0000000100295322 Run`closure #1 in withAutoReleasePool<T>(execute=0x000000010029d2a0 Run`reabstraction thunk helper from @callee_guaranteed () -> (@error @owned Swift.Error) to @escaping @callee_guaranteed () -> (@out (), @error @owned Swift.Error)partial apply forwarder with unmangled suffix ".7" at <compiler-generated>) at SelectableEventLoop.swift:25:13
    frame #53: 0x000000010029537f Run`partial apply for closure #1 in withAutoReleasePool<A>(_:) at <compiler-generated>:0
    frame #54: 0x00007fff71d4af0e libswiftObjectiveC.dylib`ObjectiveC.autoreleasepool<A>(invoking: () throws -> A) throws -> A + 46
    frame #55: 0x00000001002952c9 Run`withAutoReleasePool<T>(execute=0x000000010029d2a0 Run`reabstraction thunk helper from @callee_guaranteed () -> (@error @owned Swift.Error) to @escaping @callee_guaranteed () -> (@out (), @error @owned Swift.Error)partial apply forwarder with unmangled suffix ".7" at <compiler-generated>) at SelectableEventLoop.swift:24:16
    frame #56: 0x0000000100298f16 Run`SelectableEventLoop.run(self=0x0000000103d09eb0) at SelectableEventLoop.swift:327:17
    frame #57: 0x000000010022158b Run`closure #1 in static MultiThreadedEventLoopGroup.setupThreadAndEventLoop(t=0x0000000103d09e80, initializer=0x0000000100228c30 Run`partial apply forwarder for reabstraction thunk helper from @escaping @callee_guaranteed (@in_guaranteed NIO.NIOThread) -> (@out ()) to @escaping @callee_guaranteed (@guaranteed NIO.NIOThread) -> () at <compiler-generated>, self=NIO.MultiThreadedEventLoopGroup, lock=(mutex = 0x0000000103e14770), _loop=0x0000000103d09eb0, loopUpAndRunningGroup=0x0000000103e147b0) at EventLoop.swift:792:23
    frame #58: 0x0000000100228d0a Run`partial apply for closure #1 in static MultiThreadedEventLoopGroup.setupThreadAndEventLoop(name:initializer:) at <compiler-generated>:0
    frame #59: 0x0000000100221bdf Run`thunk for @escaping @callee_guaranteed (@guaranteed NIOThread) -> () at <compiler-generated>:0
    frame #60: 0x00000001002dc781 Run`partial apply for thunk for @escaping @callee_guaranteed (@guaranteed NIOThread) -> () at <compiler-generated>:0
    frame #61: 0x00000001002dcb67 Run`closure #1 in static NIOThread.spawnAndRun(p=(_rawValue = 0x0000000103e14700 -> 0x00007fff9ee3ec58 libswiftCore.dylib`InitialAllocationPool + 17760)) at Thread.swift:118:13
    frame #62: 0x00000001002dcbd9 Run`@objc closure #1 in static NIOThread.spawnAndRun(name:detachThread:body:) at <compiler-generated>:0
    frame #63: 0x0000000103b268da libsystem_pthread.dylib`_pthread_start + 125
    frame #64: 0x0000000103b22f07 libsystem_pthread.dylib`thread_start + 15
  thread #9, name = 'NIO-ELT-0-#7'
    frame #0: 0x00007fff717ce460 libswiftCore.dylib`_swift_runtime_on_report
    frame #1: 0x00007fff71846223 libswiftCore.dylib`_swift_stdlib_reportFatalErrorInFile + 211
    frame #2: 0x00007fff7175b18e libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded, Arg[2] = Exploded> of closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 238
    frame #3: 0x00007fff7175b307 libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded, Arg[2] = Exploded> of closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 87
    frame #4: 0x00007fff7152af0c libswiftCore.dylib`function signature specialization <Arg[1] = [Closure Propagated : closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in closure #1 (Swift.UnsafeBufferPointer<Swift.UInt8>) -> () in Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never, Argument Types : [Swift.StaticStringSwift.UnsafeBufferPointer<Swift.UInt8>Swift.UIntSwift.UInt32]> of generic specialization <()> of Swift.String.withUTF8<A>((Swift.UnsafeBufferPointer<Swift.UInt8>) throws -> A) throws -> A + 236
    frame #5: 0x00007fff7172d710 libswiftCore.dylib`function signature specialization <Arg[0] = Exploded, Arg[1] = Exploded> of Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 496
    frame #6: 0x00007fff7152a4c9 libswiftCore.dylib`Swift._assertionFailure(_: Swift.StaticString, _: Swift.String, file: Swift.StaticString, line: Swift.UInt, flags: Swift.UInt32) -> Swift.Never + 25
    frame #7: 0x000000010021f3de Run`EventLoop.preconditionInEventLoop(file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/swift-nio/Sources/NIO/EventLoop.swift", line=158, self=0x0000000103e14400) at EventLoop.swift:597:9
    frame #8: 0x000000010029c49e Run`protocol witness for EventLoop.preconditionInEventLoop(file:line:) in conformance SelectableEventLoop at <compiler-generated>:0
    frame #9: 0x000000010021ed65 Run`closure #1 in EventLoop.assertInEventLoop(self=0x0000000103e14400, file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/swift-nio/Sources/NIO/EventLoop.swift", line=158) at EventLoop.swift:591:18
    frame #10: 0x000000010021edac Run`partial apply for closure #1 in EventLoop.assertInEventLoop(file:line:) at <compiler-generated>:0
    frame #11: 0x00000001002df50e Run`closure #1 in implicit closure #1 in debugOnly(body=0x000000010021ed70 Run`partial apply forwarder for closure #1 () -> () in (extension in NIO):NIO.EventLoop.assertInEventLoop(file: Swift.StaticString, line: Swift.UInt) -> () at <compiler-generated>) at Utilities.swift:24:14
    frame #12: 0x00000001002df488 Run`debugOnly(body=0x000000010021ed70 Run`partial apply forwarder for closure #1 () -> () in (extension in NIO):NIO.EventLoop.assertInEventLoop(file: Swift.StaticString, line: Swift.UInt) -> () at <compiler-generated>) at Utilities.swift:24:5
    frame #13: 0x000000010021b710 Run`EventLoop.assertInEventLoop(file="/Users/andrew/Library/Developer/Xcode/DerivedData/HelixBusinessServer-gqgfwqcmjwowlgcsicqioisuujvb/SourcePackages/checkouts/swift-nio/Sources/NIO/EventLoop.swift", line=158, self=0x0000000103e14400) at EventLoop.swift:590:9
    frame #14: 0x000000010021c211 Run`RepeatedTask.reschedule0(self=0x0000000103d17f10) at EventLoop.swift:158:24
    frame #15: 0x000000010021c194 Run`closure #1 in closure #1 in RepeatedTask.reschedule(_0=<unavailable>, self=0x0000000103d17f10) at EventLoop.swift:148:22
    frame #16: 0x00000001001a92d0 Run`thunk for @escaping @callee_guaranteed (@guaranteed Result<(), Error>) -> () at <compiler-generated>:0
    frame #17: 0x0000000100231d70 Run`closure #1 in EventLoopFuture.whenComplete(callback=0x0000000100229090 Run`partial apply forwarder for reabstraction thunk helper from @escaping @callee_guaranteed (@guaranteed Swift.Result<(), Swift.Error>) -> () to @escaping @callee_guaranteed (@in_guaranteed Swift.Result<(), Swift.Error>) -> () at <compiler-generated>, self=0x0000000106907b40) at EventLoopFuture.swift:738:13
    frame #18: 0x0000000100229930 Run`thunk for @escaping @callee_guaranteed () -> (@owned CallbackList) at <compiler-generated>:0
    frame #19: 0x000000010022a591 Run`thunk for @escaping @callee_guaranteed () -> (@owned CallbackList)partial apply at <compiler-generated>:0
    frame #20: 0x000000010022aef3 Run`thunk for @escaping @callee_guaranteed () -> (@out CallbackList) at <compiler-generated>:0
    frame #21: 0x000000010022ae17 Run`CallbackList._run(self=NIO.CallbackList @ 0x0000700002d59910) at EventLoopFuture.swift:107:28
    frame #22: 0x000000010022b608 Run`EventLoopPromise._resolve(value=success, self=NIO.EventLoopPromise<RediStack.RESPValue> @ 0x0000700002d59a10) at EventLoopFuture.swift:226:42
    frame #23: 0x000000010022b4f1 Run`EventLoopPromise.succeed(value=null, self=NIO.EventLoopPromise<RediStack.RESPValue> @ 0x0000700002d59af0) at EventLoopFuture.swift:171:14
    frame #24: 0x00000001012dc9be Run`RedisCommandHandler.channelRead(context=0x0000000106b03b60, data=NIO.NIOAny @ 0x0000700002d59f08, self=0x0000000106b034a0) at RedisCommandHandler.swift:93:25
    frame #25: 0x00000001012dcb19 Run`protocol witness for _ChannelInboundHandler.channelRead(context:data:) in conformance RedisCommandHandler at <compiler-generated>:0
    frame #26: 0x00000001001e2df4 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x0000700002d59f08, self=0x0000000106b03b60) at ChannelPipeline.swift:1339:28
    frame #27: 0x00000001001e6a63 Run`ChannelHandlerContext.fireChannelRead(data=NIO.NIOAny @ 0x0000700002d59f08, self=0x00000001068081c0) at ChannelPipeline.swift:1152:20
    frame #28: 0x00000001012db396 Run`RedisByteDecoder.decode(context=0x00000001068081c0, buffer=NIO.ByteBuffer @ 0x0000700002d5a4d0, self=(parser = RediStack.RESPTranslator @ 0x0000000106a05680)) at RedisByteDecoder.swift:35:17
    frame #29: 0x00000001012db703 Run`protocol witness for ByteToMessageDecoder.decode(context:buffer:) in conformance RedisByteDecoder at <compiler-generated>:0
    frame #30: 0x00000001002026dd Run`closure #1 in ByteToMessageHandler.decodeLoop(decoder=, buffer=NIO.ByteBuffer @ 0x0000700002d5a4d0, decodeMode=normal, self=0x0000000106a06ee0, context=0x00000001068081c0, allowEmptyBuffer=false) at Codec.swift:562:49
    frame #31: 0x000000010020a92d Run`partial apply for closure #1 in ByteToMessageHandler.decodeLoop(context:decodeMode:) at <compiler-generated>:0
    frame #32: 0x0000000100201214 Run`ByteToMessageHandler.withNextBuffer(allowEmptyBuffer=false, body=0x000000010020a910 Run`partial apply forwarder for closure #1 (inout A, inout NIO.ByteBuffer) throws -> NIO.DecodingState in NIO.ByteToMessageHandler.(decodeLoop in _F2A740607FEBA425AF6F8C49A24C0AD7)(context: NIO.ChannelHandlerContext, decodeMode: NIO.ByteToMessageHandler<A>.(DecodeMode in _F2A740607FEBA425AF6F8C49A24C0AD7)) throws -> NIO.(B2MDBuffer in _F2A740607FEBA425AF6F8C49A24C0AD7).BufferProcessingResult at <compiler-generated>, self=0x0000000106a06ee0) at Codec.swift:524:36
    frame #33: 0x0000000100201f81 Run`ByteToMessageHandler.decodeLoop(context=0x00000001068081c0, decodeMode=normal, self=0x0000000106a06ee0) at Codec.swift:558:35
    frame #34: 0x0000000100203e99 Run`ByteToMessageHandler.channelRead(context=0x00000001068081c0, data=NIO.NIOAny @ 0x0000700002d5b218, self=0x0000000106a06ee0) at Codec.swift:631:29
    frame #35: 0x0000000100204799 Run`protocol witness for _ChannelInboundHandler.channelRead(context:data:) in conformance ByteToMessageHandler<A> at <compiler-generated>:0
    frame #36: 0x00000001001e2df4 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x0000700002d5b218, self=0x00000001068081c0) at ChannelPipeline.swift:1339:28
    frame #37: 0x00000001001e2e85 Run`ChannelHandlerContext.invokeChannelRead(data=NIO.NIOAny @ 0x0000700002d5b218, self=0x0000000106807fb0) at ChannelPipeline.swift:1341:24
    frame #38: 0x00000001001de90d Run`ChannelPipeline.fireChannelRead0(data=NIO.NIOAny @ 0x0000700002d5b218, self=0x0000000106a066d0) at ChannelPipeline.swift:829:29
    frame #39: 0x000000010019fbee Run`BaseStreamSocketChannel.readFromSocket(self=0x0000000106806ba0) at BaseStreamSocketChannel.swift:107:35
    frame #40: 0x0000000100197456 Run`BaseSocketChannel.readable0(self=0x0000000106806ba0) at BaseSocketChannel.swift:1033:35
    frame #41: 0x0000000100198b1d Run`BaseSocketChannel.readable(self=0x0000000106806ba0) at BaseSocketChannel.swift:1017:14
    frame #42: 0x000000010019a009 Run`protocol witness for SelectableChannel.readable() in conformance BaseSocketChannel<A> at <compiler-generated>:0
    frame #43: 0x0000000100298b6b Run`SelectableEventLoop.handleEvent<C>(ev=(rawValue = 4), channel=0x0000000106806ba0, self=0x0000000103d0a200) at SelectableEventLoop.swift:284:25
    frame #44: 0x0000000100299c50 Run`closure #1 in closure #1 in SelectableEventLoop.run(ev=NIO.SelectorEvent<NIO.NIORegistration> @ 0x0000700002d5bbd8, self=0x0000000103d0a200) at SelectableEventLoop.swift:333:30
    frame #45: 0x0000000100299fd9 Run`thunk for @callee_guaranteed (@guaranteed SelectorEvent<NIORegistration>) -> (@error @owned Error) at <compiler-generated>:0
    frame #46: 0x000000010029e334 Run`partial apply for thunk for @callee_guaranteed (@guaranteed SelectorEvent<NIORegistration>) -> (@error @owned Error) at <compiler-generated>:0
    frame #47: 0x00000001002a8e35 Run`Selector.whenReady(strategy=block, body=0x000000010029e320 Run`partial apply forwarder for reabstraction thunk helper from @callee_guaranteed (@guaranteed NIO.SelectorEvent<NIO.NIORegistration>) -> (@error @owned Swift.Error) to @escaping @callee_guaranteed (@in_guaranteed NIO.SelectorEvent<NIO.NIORegistration>) -> (@error @owned Swift.Error) at <compiler-generated>, self=0x0000000103d0a420) at Selector.swift:621:17
    frame #48: 0x000000010029994a Run`closure #1 in SelectableEventLoop.run(self=0x0000000103d0a200, nextReadyTask=nil) at SelectableEventLoop.swift:328:31
    frame #49: 0x000000010029d294 Run`partial apply for closure #1 in SelectableEventLoop.run() at <compiler-generated>:0
    frame #50: 0x0000000100187cdf Run`thunk for @callee_guaranteed () -> (@error @owned Error) at <compiler-generated>:0
    frame #51: 0x000000010029d2b4 Run`thunk for @callee_guaranteed () -> (@error @owned Error)partial apply at <compiler-generated>:0
    frame #52: 0x0000000100295322 Run`closure #1 in withAutoReleasePool<T>(execute=0x000000010029d2a0 Run`reabstraction thunk helper from @callee_guaranteed () -> (@error @owned Swift.Error) to @escaping @callee_guaranteed () -> (@out (), @error @owned Swift.Error)partial apply forwarder with unmangled suffix ".7" at <compiler-generated>) at SelectableEventLoop.swift:25:13
    frame #53: 0x000000010029537f Run`partial apply for closure #1 in withAutoReleasePool<A>(_:) at <compiler-generated>:0
    frame #54: 0x00007fff71d4af0e libswiftObjectiveC.dylib`ObjectiveC.autoreleasepool<A>(invoking: () throws -> A) throws -> A + 46
    frame #55: 0x00000001002952c9 Run`withAutoReleasePool<T>(execute=0x000000010029d2a0 Run`reabstraction thunk helper from @callee_guaranteed () -> (@error @owned Swift.Error) to @escaping @callee_guaranteed () -> (@out (), @error @owned Swift.Error)partial apply forwarder with unmangled suffix ".7" at <compiler-generated>) at SelectableEventLoop.swift:24:16
    frame #56: 0x0000000100298f16 Run`SelectableEventLoop.run(self=0x0000000103d0a200) at SelectableEventLoop.swift:327:17
    frame #57: 0x000000010022158b Run`closure #1 in static MultiThreadedEventLoopGroup.setupThreadAndEventLoop(t=0x0000000103d0a1d0, initializer=0x0000000100228c30 Run`partial apply forwarder for reabstraction thunk helper from @escaping @callee_guaranteed (@in_guaranteed NIO.NIOThread) -> (@out ()) to @escaping @callee_guaranteed (@guaranteed NIO.NIOThread) -> () at <compiler-generated>, self=NIO.MultiThreadedEventLoopGroup, lock=(mutex = 0x0000000103e148f0), _loop=0x0000000103d0a200, loopUpAndRunningGroup=0x0000000103e14930) at EventLoop.swift:792:23
    frame #58: 0x0000000100228d0a Run`partial apply for closure #1 in static MultiThreadedEventLoopGroup.setupThreadAndEventLoop(name:initializer:) at <compiler-generated>:0
    frame #59: 0x0000000100221bdf Run`thunk for @escaping @callee_guaranteed (@guaranteed NIOThread) -> () at <compiler-generated>:0
    frame #60: 0x00000001002dc781 Run`partial apply for thunk for @escaping @callee_guaranteed (@guaranteed NIOThread) -> () at <compiler-generated>:0
    frame #61: 0x00000001002dcb67 Run`closure #1 in static NIOThread.spawnAndRun(p=(_rawValue = 0x0000000103e14880 -> 0x00007fff9ee3ec58 libswiftCore.dylib`InitialAllocationPool + 17760)) at Thread.swift:118:13
    frame #62: 0x00000001002dcbd9 Run`@objc closure #1 in static NIOThread.spawnAndRun(name:detachThread:body:) at <compiler-generated>:0
    frame #63: 0x0000000103b268da libsystem_pthread.dylib`_pthread_start + 125
    frame #64: 0x0000000103b22f07 libsystem_pthread.dylib`thread_start + 15
  thread #10, name = 'NIOThreadPool thread #0'
    frame #0: 0x00007fff721e1182 libsystem_kernel.dylib`semaphore_wait_trap + 10
    frame #1: 0x0000000103a97d67 libdispatch.dylib`_dispatch_sema4_wait + 16
    frame #2: 0x0000000103a98234 libdispatch.dylib`_dispatch_semaphore_wait_slow + 98
    frame #3: 0x0000000100267f89 Run`NIOThreadPool.process(identifier=0, self=0x0000000103e15610) at NIOThreadPool.swift:132:28
    frame #4: 0x00000001002697ef Run`closure #3 in NIOThreadPool.start(thread=0x0000000103d0a520, self=0x0000000103e15610, group=0x0000000103e15970, id=0) at NIOThreadPool.swift:183:22
    frame #5: 0x0000000100221bdf Run`thunk for @escaping @callee_guaranteed (@guaranteed NIOThread) -> () at <compiler-generated>:0
    frame #6: 0x00000001002dc781 Run`partial apply for thunk for @escaping @callee_guaranteed (@guaranteed NIOThread) -> () at <compiler-generated>:0
    frame #7: 0x00000001002dcb67 Run`closure #1 in static NIOThread.spawnAndRun(p=(_rawValue = 0x0000000103e136a0 -> 0x00007fff9ee3ec58 libswiftCore.dylib`InitialAllocationPool + 17760)) at Thread.swift:118:13
    frame #8: 0x00000001002dcbd9 Run`@objc closure #1 in static NIOThread.spawnAndRun(name:detachThread:body:) at <compiler-generated>:0
    frame #9: 0x0000000103b268da libsystem_pthread.dylib`_pthread_start + 125
    frame #10: 0x0000000103b22f07 libsystem_pthread.dylib`thread_start + 15

Custom logger for Redis pool

Is your feature request related to a problem? Please describe.
Currently, if I set LOG_LEVEL to debug for running vapor apps, all redis commands to check the job queue produce 2 log entries and if you consider that it is doing once each second per worker it produces a lot of logs. As a result, it is very hard to find anything usable in the log without grep.

Describe the solution you'd like
It should be possible to set log level/custom logger for redis pool - something like:

app.queues.use(try .redis(url: redisUrl, logger: myCustomLogger))

Heroku Redis version 7.0.10

Describe the bug

I upgraded to Heroku Redis version 7.0.10 and am now getting the following error:

Swift/ErrorType.swift:200: Fatal error: Error raised at top level:
QueuesRedisDriver.InvalidRedisURL(url: "my-heroku-redis-instance")

Any help would be greatly appreciated ๐Ÿ™

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.