Commit Graph

113 Commits

Author SHA1 Message Date
Jon Chambers
d96c360016 Introduce MessageStream and RedisDynamoDbMessagePublisher 2025-08-08 09:27:05 -04:00
Jon Chambers
30774bbc40 Remove special-case handling for an extremely narrow message delivery edge case 2025-07-29 16:52:19 -04:00
Jon Chambers
038c68c594 Rename WebSocketConnectionEventManager/Listener to MessageAvailabilityManager/Listener 2025-07-29 11:29:17 -04:00
Jon Chambers
cf222e1105 Scope disconnection request listeners to a single connection 2025-07-29 11:17:48 -04:00
Jon Chambers
4ccd39fd55 Validate intra-account messages before applying number changes 2025-07-17 11:34:50 -04:00
Ravi Khadiwala
295cedc075 remove experiment configuration for low urgency pushes 2025-06-17 09:43:35 -05:00
Jon Chambers
9ec66dac7f Make getRegistrationId identity-type-aware 2025-05-14 14:39:11 -04:00
Jon Chambers
13fc0ffbca Assume that PNI registration IDs are always present on Device records 2025-05-14 14:39:11 -04:00
Ravi Khadiwala
894ca6d290 remove ANDROID_SKIP_LOW_URGENCY_PUSH_EXPERIMENT 2025-05-13 13:59:28 -05:00
Ravi Khadiwala
847b25f695 Add experiment to coalesce android notifications 2025-05-13 13:59:28 -05:00
Ravi Khadiwala
703a05cb15 Support scheduling background FCMs 2025-05-13 13:59:28 -05:00
Ravi Khadiwala
ab4fc4f459 Add skip low urgency push experiment 2025-04-24 10:32:46 -05:00
Jon Chambers
aa5fd52302 Explicitly pass sync message sender device ID as an argument to sendMessage 2025-04-10 11:40:32 -04:00
Jon Chambers
01258de560 Throw a MismatchedDevicesException for empty message lists to support iOS clients 2025-04-09 21:53:58 -04:00
Jon Chambers
ffa98e5b34 Reduce and centralize message-sending metrics 2025-04-07 11:08:53 -04:00
Jon Chambers
c03d63acb8 Centralize message size validation in actual message-sending methods 2025-04-07 11:01:01 -04:00
Jon Chambers
c6689ca07a Internalize destination device list/registration ID checks in MessageSender 2025-04-07 09:15:39 -04:00
Jon Chambers
50f681ffe8 Centralize message length validation 2025-03-24 10:58:38 -04:00
Ravi Khadiwala
26c348520f Revert "Add a 2-notification ttl=0 push notification experiment"
This reverts commit 4908a0aa9e.
2025-02-21 14:07:07 -06:00
ravi-signal
4908a0aa9e Add a 2-notification ttl=0 push notification experiment 2025-02-13 10:25:25 -06:00
Jon Chambers
48ada8e8ca Clarify roles/responsibilities of components in the message-handling pathway 2025-01-31 10:24:50 -05:00
Ravi Khadiwala
e30beb9c9f Remove ZeroTtlDevicePushNotificationExperiment 2025-01-27 16:24:50 -06:00
Ravi Khadiwala
5a2e297991 Add ZeroTtlDevicePushNotificationExperiment 2025-01-27 12:58:28 -06:00
Jon Chambers
a96c0ec7a3 Enqueue async operations from a dedicated thread 2024-12-17 12:54:41 -05:00
Chris Eager
ecbb2f1399 Updates for org.apache.commons.lang3.RandomStringUtils deprecations 2024-11-15 14:11:41 -06:00
Jon Chambers
2f890f7bb3 Send push notifications if we receive a "new message" notification, but no listener is present 2024-11-12 09:34:59 -05:00
Jon Chambers
09fd5e8819 Shift authority for disconnection requests to DisconnectionRequestManager 2024-11-11 16:27:38 -05:00
Jon Chambers
a843f1af6c Rename PubSubClientEventManager to WebSocketConnectionEventManager 2024-11-11 15:30:26 -05:00
Jon Chambers
f2f5815316 Resolve additional merge-related naming conflicts 2024-11-11 11:58:06 -05:00
Jon Chambers
767f6a90e0 Remove subscriptions if we get pub/sub events without a registered listener 2024-11-11 11:42:01 -05:00
Jon Chambers
562b495a18 Publish "messages persisted" events when unlocking queues after a persistence run 2024-11-11 11:41:29 -05:00
Jon Chambers
084607f359 Retire the explicit "handle new message available" system in favor of implicit presence-on-insert values 2024-11-11 11:41:29 -05:00
Jon Chambers
eeeb565313 Return destination client presence when inserting messages 2024-11-11 11:41:29 -05:00
Jon Chambers
6a1f4906c5 Retire the legacy message availability system 2024-11-07 12:09:21 -05:00
Jon Chambers
e536a40740 Publish "messages persisted" events 2024-11-07 11:25:48 -05:00
Jon Chambers
1c167ec150 Retire the legacy client presence system 2024-11-06 14:57:27 -05:00
Jon Chambers
96a4d4c8ac Prepare to receive client events about persisted messages 2024-11-06 14:42:55 -05:00
Jon Chambers
9d19fc9ecc Shift authority to the new pub/sub client presence system 2024-11-06 12:10:44 -05:00
Jon Chambers
3e36a49142 Reframe "connection ID" as "server ID" to avoid double-removing clients 2024-11-05 18:43:31 -05:00
Jon Chambers
8c984cbf42 Introduce and evaluate a client presence manager based on sharded pub/sub 2024-11-05 15:51:29 -05:00
Chris Eager
830a07012b Subscribe to remote presence changes before setting the key 2024-10-15 16:54:52 -05:00
Chris Eager
46227295ff Add test for concurrent connections in ClientPresenceManager 2024-10-15 16:54:52 -05:00
Jon Chambers
a9117010f9 Introduce FaultTolerantRedisClient 2024-10-09 09:22:10 -04:00
Jon Chambers
92698efd39 Remove machinery for setting/storing APNs VOIP tokens 2024-10-01 14:17:39 -04:00
Jon Chambers
b693cb98d0 Remove recurring background VOIP notification machinery 2024-10-01 14:17:39 -04:00
Jon Chambers
b2211de8d8 Retire ProvisioningAddress and WebsocketAddress 2024-10-01 12:59:58 -04:00
Chris Eager
374fe087bc Use destination service ID from the envelope when removing views from shared MRM data 2024-09-16 13:19:11 -05:00
Chris Eager
b95a766888 For ephemeral messages, remove recipient view from shared MRM data if recipient is offline 2024-09-05 18:02:33 -05:00
Chris Eager
11601fd091 Multi-recipient message views
This adds support for storing multi-recipient message payloads and recipient views in Redis, and only fanning out on delivery or persistence. Phase 1: confirm storage and retrieval correctness.
2024-09-04 13:58:20 -05:00
Jon Chambers
659ac2c107 Generalize push notification scheduler and add support for delayed "new messages" notifications 2024-08-16 16:16:55 -04:00