IP Library Granted Patent US 11,899,672
Granted Patent B2
US 11,899,672 · App. 18/297,087 · Granted Feb 13, 2024

Pluggable join framework for stream processing

Inventors: David Willcox (Urbana, IL); Maulik Shah (Dublin, CA); Allie K. Watfa (Urbana, IL); George Aleksandrovich (Hoffman Estates, IL)
Assignee: YAHOO ASSETS LLC
G06F16/24573G06F9/4418G06F16/1734G06F16/248G06F16/24552G06F16/24568
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,899,672
App. No.
18/297,087
Granted
Feb 13, 2024
Kind
B2
Abstract

Disclosed are embodiments for providing batch performance using a stream processor. In one embodiment, a method is disclosed comprising receiving an event, such as a streaming event, from a client. The method determines that the event comprises a primary event and, if so, writes the primary event to a cache and returning the primary event to the client. The method later receives a second event from the client, the second event associated with the first event, annotates the second event based on the primary event, and returns the annotated second event to the client.

Claims (64)

1. A method comprising:

receiving a primary event, the primary event including a join key;

identifying a secondary event associated with the primary event using the join key;

annotating the secondary event with fields from the primary event;

marking the secondary event as late-joined;

storing the primary event in a backing store;

marking the primary event and the secondary event as out-of-order; and

returning the primary event and the secondary event to a client.

2. The method of claim 1 , wherein identifying the secondary event comprises querying a backing store using the join key to identify the secondary event.

3. The method of claim 2 wherein querying the backing store comprises:

issuing a fetch command to a random-access memory (RAM) cache using the join key;

issuing, by the RAM cache, a fetch command to the backing store when the RAM cache does not include the secondary event; and

returning, by the RAM cache, the secondary event when the RAM cache includes the secondary event.

4. The method of claim 1 , further comprising marking the primary event as late-joined.

5. The method of claim 1 , wherein storing the primary event in the backing store comprises:

storing the primary event in a local cache; and

storing the primary event in the backing store upon confirmation that the primary event was stored in the local cache.

6. The method of claim 5 , wherein storing the primary event in the local cache comprises storing the primary event in a dirty cache.

7. The method of claim 1 , wherein annotating the secondary event comprises:

deserializing the secondary event to obtain a deserialized secondary event;

deserializing the primary event to obtain a deserialized primary event; and

joining the deserialized primary event and deserialized secondary event.

8. A non-transitory computer-readable storage medium for tangibly storing computer program instructions capable of being executed by a computer processor, the computer program instructions defining steps of:

receiving a primary event, the primary event including a join key;

identifying a secondary event associated with the primary event using the join key;

annotating the secondary event with fields from the primary event;

marking the secondary event as late-joined;

storing the primary event in a backing store;

marking the primary event and the secondary event as out-of-order; and

returning the primary event and the secondary event to a client.

9. The non-transitory computer-readable storage medium of claim 8 , wherein identifying the secondary event comprises querying a backing store using the join key to identify the secondary event.

10. The non-transitory computer-readable storage medium of claim 9 , wherein querying the backing store comprises:

issuing a fetch command to a random-access memory (RAM) cache using the join key;

issuing, by the RAM cache, a fetch command to the backing store when the RAM cache does not include the secondary event; and

returning, by the RAM cache, the secondary event when the RAM cache includes the secondary event.

11. The non-transitory computer-readable storage medium of claim 8 , the steps further comprising marking the primary event as late-joined.

12. The non-transitory computer-readable storage medium of claim 8 , wherein storing the primary event in the backing store comprises:

storing the primary event in a local cache; and

storing the primary event in the backing store upon confirmation that the primary event was stored in the local cache.

13. The non-transitory computer-readable storage medium of claim 12 , wherein storing the primary event in the local cache comprises storing the primary event in a dirty cache.

14. The non-transitory computer-readable storage medium of claim 8 , wherein annotating the secondary event comprises:

deserializing the secondary event to obtain a deserialized secondary event;

deserializing the primary event to obtain a deserialized primary event; and

joining the deserialized primary event and deserialized secondary event.

15. A device comprising:

a processor; and

a storage medium for tangibly storing thereon logic for execution by the processor, the logic comprising instructions for:

receiving a primary event, the primary event including a join key;

identifying a secondary event associated with the primary event using the join key;

annotating the secondary event with fields from the primary event;

marking the secondary event as late-joined;

storing the primary event in a backing store;

marking the primary event and the secondary event as out-of-order; and

returning the primary event and the secondary event to a client.

16. The device of claim 15 , wherein identifying the secondary event comprises querying a backing store using the join key to identify the secondary event.

17. The device of claim 15 , wherein querying the backing store comprises:

issuing a fetch command to a random-access memory (RAM) cache using the join key;

issuing, by the RAM cache, a fetch command to the backing store when the RAM cache does not include the secondary event; and

returning, by the RAM cache, the secondary event when the RAM cache includes the secondary event.

18. The device of claim 15 , the instructions further comprising marking the primary event as late-joined.

19. The device of claim 15 , wherein storing the primary event in the backing store comprises:

storing the primary event in a local cache; and

storing the primary event in the backing store upon confirmation that the primary event was stored in the local cache.

20. The device of claim 19 , wherein storing the primary event in the local cache comprises storing the primary event in a dirty cache.

Assignments (4)
SUPPLEMENTAL PATENT SECURITY AGREEMENT Recorded Sep 17, 2025
From: YAHOO ASSETS LLC
To: ROYAL BANK OF CANADA, AS COLLATERAL AGENT
Reel/Frame 072915/0540 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 30, 2023
From: WILLCOX, DAVID; SHAH, MAULIK; WATFA, ALLIE K.; ALEKSANDROVICH, GEORGE
To: OATH INC.
Reel/Frame 064755/0762 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 30, 2023
From: OATH INC.
To: VERIZON MEDIA INC.
Reel/Frame 064784/0019 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 30, 2023
From: YAHOO AD TECH LLC (FORMERLY VERIZON MEDIA INC.)
To: YAHOO ASSETS LLC
Reel/Frame 064784/0428 →
Continuity (3)
Continuation 17826419 · May 27, 2022
Continuation 16881883 · May 22, 2020
Related Publication 20230252030A1 · Aug 10, 2023