APNs batch delivery measurement Commit: dde53b11f3141e8cf9995d23234d00b04421f655 Environment: Linux x86_64; Node v26.13.1; PostgreSQL 16-alpine; real relay queue callback and service layers; local HTTP APNs fixture; synthetic registered iOS devices; unchanged 10-second stage deadlines One warmup excluded; 7 measured batches per scenario. Same machine and driver on both commits. Times start at actual queue-consumer callback invocation. B response is fixture 200 response end; persistence is checked after batch settlement. Scenario: fast run | B request ms | B 200 response ms | batch ms | request order | consumer exit 1 | 13.820 | 13.879 | 15.253 | A1,A2,B1 | Success 2 | 9.708 | 9.766 | 11.602 | A1,A2,B1 | Success 3 | 10.002 | 10.057 | 11.362 | A1,A2,B1 | Success 4 | 8.407 | 8.454 | 9.846 | A1,A2,B1 | Success 5 | 6.852 | 6.883 | 7.748 | A1,A2,B1 | Success 6 | 6.814 | 6.847 | 7.716 | A1,A2,B1 | Success 7 | 7.157 | 7.189 | 8.128 | A1,A2,B1 | Success bRequestMs: {"median": 8.406891000000087, "min": 6.814141000000291, "max": 13.8196539999999, "spread": 7.00551299999961} bResponseMs: {"median": 8.454240000000027, "min": 6.84703300000001, "max": 13.87897699999985, "spread": 7.031943999999839} batchMs: {"median": 9.846492000000126, "min": 7.716059000000314, "max": 15.252752999999757, "spread": 7.536693999999443} Observed in every run: A1 before A2; all 3 jobs persisted; B1 and A2 status 200. A1 status 200. First measured run persisted attempt records: [ { "source_job_id": "9ef8bfdd-feea-4707-bada-dfc779018114", "device_id": "A", "apns_status": 200, "transport_error": null, "apns_id": "A1" }, { "source_job_id": "6df8bb78-bb78-461a-988b-7b3cd6e26822", "device_id": "A", "apns_status": 200, "transport_error": null, "apns_id": "A2" }, { "source_job_id": "d05d83ef-a9b4-423e-ac47-993032828da5", "device_id": "B", "apns_status": 200, "transport_error": null, "apns_id": "B1" } ] Scenario: held run | B request ms | B 200 response ms | batch ms | request order | consumer exit 1 | 10012.949 | 10013.000 | 10014.380 | A1,A2,B1 | Success 2 | 10013.271 | 10013.343 | 10014.603 | A1,A2,B1 | Success 3 | 10012.794 | 10012.852 | 10014.192 | A1,A2,B1 | Success 4 | 10011.614 | 10011.665 | 10012.669 | A1,A2,B1 | Success 5 | 10010.527 | 10010.565 | 10011.469 | A1,A2,B1 | Success 6 | 10011.308 | 10011.348 | 10012.260 | A1,A2,B1 | Success 7 | 10010.366 | 10010.401 | 10011.727 | A1,A2,B1 | Success bRequestMs: {"median": 10011.614051999997, "min": 10010.365583999992, "max": 10013.270641, "spread": 2.9050570000072184} bResponseMs: {"median": 10011.664788000002, "min": 10010.400910999997, "max": 10013.343258, "spread": 2.9423470000037923} batchMs: {"median": 10012.669029999997, "min": 10011.469098999994, "max": 10014.603161, "spread": 3.134062000004633} Observed in every run: A1 before A2; all 3 jobs persisted; B1 and A2 status 200. A1 saved as transport failure at its unchanged stage deadline. First measured run persisted attempt records: [ { "source_job_id": "07333c7b-ae72-419b-a884-14c2dbb62f00", "device_id": "A", "apns_status": null, "transport_error": "APNs push-notification request failed during send in sandbox.", "apns_id": null }, { "source_job_id": "71f045e6-066f-4aaa-ab27-bfb0483d19cc", "device_id": "A", "apns_status": 200, "transport_error": null, "apns_id": "A2" }, { "source_job_id": "0ffa6273-b433-43b2-986b-172f94307d1d", "device_id": "B", "apns_status": 200, "transport_error": null, "apns_id": "B1" } ] Scenario: held-body run | B request ms | B 200 response ms | batch ms | request order | consumer exit 1 | 10011.640 | 10011.676 | 10012.530 | A1,A2,B1 | Success 2 | 10010.983 | 10011.035 | 10012.143 | A1,A2,B1 | Success 3 | 10025.255 | 10025.338 | 10028.361 | A1,A2,B1 | Success 4 | 10014.664 | 10014.718 | 10015.707 | A1,A2,B1 | Success 5 | 10011.338 | 10011.375 | 10012.311 | A1,A2,B1 | Success 6 | 10010.299 | 10010.347 | 10011.285 | A1,A2,B1 | Success 7 | 10011.267 | 10011.307 | 10012.219 | A1,A2,B1 | Success bRequestMs: {"median": 10011.338435000012, "min": 10010.299066000007, "max": 10025.255479, "spread": 14.956412999992608} bResponseMs: {"median": 10011.374744, "min": 10010.34689700001, "max": 10025.338415999999, "spread": 14.99151899998833} batchMs: {"median": 10012.311428, "min": 10011.284872999997, "max": 10028.360829000012, "spread": 17.07595600001514} Observed in every run: A1 before A2; all 3 jobs persisted; B1 and A2 status 200. A1 saved as transport failure at its unchanged stage deadline. First measured run persisted attempt records: [ { "source_job_id": "593051df-9776-48b2-a27d-eb0968ae572f", "device_id": "A", "apns_status": null, "transport_error": "APNs push-notification request failed during read-response in sandbox.", "apns_id": null }, { "source_job_id": "9420be99-b77a-4c97-8d04-c3409de58608", "device_id": "A", "apns_status": 200, "transport_error": null, "apns_id": "A2" }, { "source_job_id": "7f4e13e2-acea-4beb-ad9f-560ffb33abc8", "device_id": "B", "apns_status": 200, "transport_error": null, "apns_id": "B1" } ] Scenario: in-flight run | B request ms | B 200 response ms | batch ms | request order | consumer exit 1 | not sent | not sent | 1.593 | | Failure 2 | not sent | not sent | 0.754 | | Failure 3 | not sent | not sent | 0.892 | | Failure 4 | not sent | not sent | 1.042 | | Failure 5 | not sent | not sent | 1.176 | | Failure 6 | not sent | not sent | 0.619 | | Failure 7 | not sent | not sent | 0.954 | | Failure batchMs: {"median": 0.9538370000082068, "min": 0.6194869999890216, "max": 1.5930309999966994, "spread": 0.9735440000076778} A1 already claimed/in flight before invocation; A2 skipped. B1 never sent; sequential consumer returned failure in every run. First measured run persisted attempt records: [ { "source_job_id": "122a483e-5c8d-4a05-a7be-40ce39386047", "device_id": "A", "apns_status": null, "transport_error": null, "apns_id": null } ] Exact consumer callback extracted from this commit: (stream) => stream.pipe( Stream.withSpan("relay.apn_delivery_queue.process_batch"), Stream.runForEach((message) => ApnsDeliveries.ApnsDeliveries.pipe( Effect.flatMap((deliveries) => deliveries.processSignedJob(message.body)), Effect.withSpan("relay.apn_delivery_queue.process_message"), ), ), Effect.provide(layerRuntime), )