In-memory buffer service

US9767022B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9767022-B2
Application numberUS-201615236195-A
CountryUS
Kind codeB2
Filing dateAug 12, 2016
Priority dateSep 16, 2014
Publication dateSep 19, 2017
Grant dateSep 19, 2017

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A capture service running on an application server receives events from a client application running on an application server to be stored in a data store and stores the events in an in-memory bounded buffer on the application server, the in-memory bounded buffer comprising a plurality of single-threaded segments, the capture service to write events to each segment in parallel. The in-memory bounded buffer provides a notification to a buffer flush regulator when a number of events stored in the in-memory bounded buffer reaches a predefined limit. The in-memory bounded buffer receive a request to flush the events in the in-memory bounded buffer from a consumer executor service. The consumer executor service consumes the events in the in-memory bounded buffer using a dynamically sized thread pool of consumer threads to read the segments of the bounded buffer in parallel, wherein consuming the events comprises writing the events directly to the data store.

First claim

Opening claim text (preview).

What is claimed is: 1. A method comprising: receiving events from a client application running on an application server to be stored in a data store; storing the events in an in-memory bounded buffer on the application server, the in-memory bounded buffer comprising a plurality of single-threaded segments; providing a notification to a buffer flush regulator when a number of events stored in the in-memory bounded buffer reaches a predefined limit; receiving a request to flush the events from the in-memory bounded buffer; and consuming the events in the in-memory bounded buffer using a dynamically sized thread pool of consumer threads to read segments of the in-memory bounded buffer in parallel. 2. The method of claim 1 , wherein the predefined limit comprises a percentage of the in-memory bounded buffer that is filled with events. 3. The method of claim 1 , further comprising: providing the notification to the buffer flush regulator after a predefined amount of time has passed since a contents of the in-memory bounded buffer was written to the data store. 4. The method of claim 1 , further comprising: if the in-memory bounded buffer is full and an additional event from the client application is received, overwriting an oldest event in the in-memory bounded buffer with the additional event received. 5. The method of claim 1 , further comprising: if the in-memory bounded buffer is full and an additional event from the client application is received, preventing the additional event received from being stored in the in-memory bounded buffer. 6. The method of claim 1 , further comprising: if the data store is unavailable, enqueuing the events from the in-memory bounded buffer in a message queue for subsequent writing to the data store after the data store becomes available. 7. The method of claim 1 , further comprising: when the events in the in-memory bounded buffer are being consumed, storing additional events in a second in-memory bounded buffer to prevent service interruption. 8. An application server comprising: a processing device; a memory coupled to the processing device, the memory storing a capture service and a consumer executor service, executable by the processing device from the memory, and an in-memory bounded buffer, the capture service to: receive events from a client application running on the application server to be stored in a data store; and store the events in the in-memory bounded buffer on the application server, the in-memory bounded buffer comprising a plurality of single-threaded segments; the in-memory bounded buffer to: provide a notification to a buffer flush regulator when a number of events stored in the in-memory bounded buffer reaches a predefined limit; receive a request to flush the events from the in-memory bounded buffer; and the consumer executor service to: consume the events in the in-memory bounded buffer using a dynamically sized thread pool of consumer threads to read segments of the in-memory bounded buffer in parallel. 9. The application server of claim 8 , wherein the predefined limit comprises a percentage of the in-memory bounded buffer that is filled with events. 10. The application server of claim 8 , wherein the in-memory bounded buffer is further to: provide the notification to the buffer flush regulator after a predefined amount of time has passed since a contents of the in-memory bounded buffer was written to the data store. 11. The application server of claim 8 , wherein the capture service is further to: if the in-memory bounded buffer is full and an additional event from the client application is received, overwrite an oldest event in the in-memory bounded buffer with the additional event received. 12. The application server of claim 8 , wherein the capture service is further to: if the in-memory bounded buffer is full and an additional event from the client application is received, prevent the additional event received from being stored in the in-memory bounded buffer. 13. The application server of claim 8 , wherein the consumer executor service is further to: if the data store is unavailable, enqueue the events from the in-memory bounded buffer in a message queue for subsequent writing to the data store after the data store becomes available. 14. The application server of claim 8 , wherein the consumer executor service is further to: when the events in the in-memory bounded buffer are being consumed, store additional events in a second in-memory bounded buffer to prevent service interruption. 15. A non-transitory computer-readable storage medium storing instructions which, when executed by a processing device, are capable of causing the processing device to perform operations comprising: receiving events from a client application running on an application server to be stored in a data store; storing the events in an in-memory bounded buffer on the application server, the in-memory bounded buffer comprising a plurality of single-threaded segments; providing a notification to a buffer flush regulator when a number of events stored in the in-memory bounded buffer reaches a predefined limit; receiving a request to flush the events from the in-memory bounded buffer; and consuming the events in the in-memory bounded buffer using a dynamically sized thread pool of consumer threads to read segments of the in-memory bounded buffer in parallel. 16. The non-transitory computer-readable storage medium of claim 15 , wherein the predefined limit comprises a percentage of the in-memory bounded buffer that is filled with events. 17. The non-transitory computer-readable storage medium of claim 15 , wherein the operations further comprise: providing the notification to the buffer flush regulator after a predefined amount of time has passed since a contents of the in-memory bounded buffer was written to the data store. 18. The non-transitory computer-readable storage medium of claim 15 , wherein the operations further comprise: if the in-memory bounded buffer is full and an additional event from the client application is received, at least one of overwriting an oldest event in the in-memory bounded buffer with the additional event received or preventing the additional event received from being stored in the in-memory bounded buffer. 19. The non-transitory computer-readable storage medium of claim 15 , wherein the operations further comprise: if the data store is unavailable, enqueuing the events from the in-memory bounded buffer in a message queue for subsequent writing to the data store after the data store becomes available. 20. The non-transitory computer-readable storage medium of claim 15 , wherein the operations further comprise: when the events in the in-memory bounded buffer are being consumed, storing additional events in a second in-memory bounded buffer to prevent service interruption.

Assignees

Inventors

Classifications

  • G06F9/544Primary

    Buffers; Shared memory; Pipes · CPC title

  • In host system · CPC title

  • Monitoring of intermediate fill level, i.e. with additional means for monitoring the fill level, e.g. half full flag, almost empty flag · CPC title

  • Electricity · mapped topic

  • Single cache · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9767022B2 cover?
A capture service running on an application server receives events from a client application running on an application server to be stored in a data store and stores the events in an in-memory bounded buffer on the application server, the in-memory bounded buffer comprising a plurality of single-threaded segments, the capture service to write events to each segment in parallel. The in-memory bo…
Who is the assignee on this patent?
Salesforce Com Inc
What technology area does this patent fall under?
Primary CPC classification G06F9/544. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Sep 19 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 1 related publication on this page (citations in our corpus or others sharing the same primary CPC).