IP Library › Granted Patent US 9,047,249
Granted Patent B2
US 9,047,249 · App. 13/770,969 · Granted Jun 2, 2015

Handling faults in a continuous event processing (CEP) system

Inventors: Alexandre de Castro Alves (Doral, FL); Anand Srinivasan (Bangalore, IN); Manju James (Lexington, MA)
Assignee: Oracle International Corporation
G06F11/202
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 9,047,249
App. No.
13/770,969
Granted
Jun 2, 2015
Kind
B2
Abstract

The concept of faults and fault handling are added to the execution of continuous event processing (CEP) queries. By introducing fault handling techniques to the processing of CEP queries, users are enabled to instruct a CEP query processor to respond to faults in a customized manner that does not necessarily involve the halting of the CEP query relative to which the faults occurred. For example, a fault might be due to a temporary problem. Under such circumstances, the CEP query processor can be instructed to ignore the fault and allow the execution of the CEP query to continue relative to the remainder of the event stream. Alternatively, if the fault is due to a problem with the CEP query itself, then the CEP query processor can be instructed to propagate the fault through the query processing system until the fault ultimately causes the problematic CEP query to be halted.

Claims (112)

1. A computer-readable memory storing a plurality of instructions for causing a processor to perform operations, the plurality of instructions comprising:

instructions that cause the processor to detect a first fault raised by the operator of a first continuous execution processing (CEP) query relative to a first event from an event stream;

instructions that cause the processor to invoke, in response to detecting the first fault, a first user-registered fault handler that has been registered with a CEP query processor;

instructions that cause the processor to determine that the first user-registered fault handler caught and handled the first fault; and

instructions that cause the processor to cause the CEP query processor, in response to determining that the first user-registered fault handler caught and handled the first fault, to continue to execute the first CEP query without halting execution of the first CEP query;

wherein the first user-registered fault handler is configured to determine whether to handle the first fault or to re-throw the first fault so that a fault handler other than the first user-registered fault handler can handle the first fault.

2. The computer-readable memory of claim 1 , the plurality of instructions further comprising:

instructions that cause the processor to detect a second fault raised by the operator of the first CEP query relative to a second event from the event stream;

instructions that cause the processor to invoke the first user-registered fault handler in response to detecting the second fault;

instructions that cause the processor to determine that the first user-registered fault handler re-threw the second fault; and

instructions that cause the processor to invoke, in response to determining that the first user-registered fault handler re-threw the second fault, a second user-registered fault handler that has been registered with the CEP query processor;

wherein the second user-registered fault handler differs from the first user-registered fault handler.

3. The computer-readable memory of claim 1 , the plurality of instructions further comprising:

instructions that cause the processor to detect a second fault raised by the operator of the first CEP query relative to a second event from the event stream;

instructions that cause the processor to invoke the first user-registered fault handler in response to detecting the second fault;

instructions that cause the processor to determine that the first user-registered fault handler re-threw the second fault;

instructions that cause the processor to determine, in response to determining that the first user-registered fault handler re-threw the second fault, whether any user-registered fault handlers other than the first user-registered fault handler are registered with the CEP query processor; and

instructions that cause the processor to invoke, in response to determining that no user-registered fault handlers other than the first user-registered fault handler are registered with the CEP query processor, a default fault handler of the CEP query processor;

wherein the default fault handler is not a user-registered fault handler.

4. The computer-readable memory of claim 1 , the plurality of instructions further comprising:

instructions that cause the processor to detect a second fault raised by the operator of the first CEP query relative to a second event from the event stream;

instructions that cause the processor to invoke a default fault handler of the CEP query processor; and

instructions that cause the processor to cause the default fault handler to raise a JAVA exception that is catchable by a JAVA exception handler of a source of the event stream.

5. The computer-readable memory of claim 1 , the plurality of instructions further comprising:

instructions that cause the processor to detect a second fault raised by an operator of a second CEP query relative to a second event from the event stream;

instructions that cause the processor to invoke the first user-registered fault handler in response to detecting the second fault;

instructions that cause the processor to determine that the first user-registered fault handler caught and handled the second fault; and

instructions that cause the processor to cause the CEP query processor, in response to determining that the first user-registered fault handler caught and handled the second fault, to continue to execute the second CEP query without halting execution of the second CEP query;

wherein the second CEP query differs from the first CEP query.

6. The computer-readable memory of claim 1 , wherein said operator is a filtering operator, and wherein the plurality of instructions further comprise:

instructions that cause the processor to detect a second fault raised by a join operator of the first CEP query relative to the first event;

instructions that cause the processor to invoke the first user-registered fault handler in response to detecting the second fault; and

instructions that cause the processor to cause the first user-registered fault handler to re-throw the second fault.

7. The computer-readable memory of claim 1 , wherein the plurality of instructions further comprise:

instructions that cause the processor to detect a second fault raised by an operator that is shared by both the first CEP query and a second CEP query that differs from the first CEP query;

instructions that cause the processor to invoke a default fault handler of the CEP query processor; and

instructions that cause the processor to cause the default fault handler to halt execution of both the first CEP query and the second CEP query in response to the second fault.

8. A system for processing a data stream of events, the system comprising:

a memory storing a plurality of instructions; and

a processor coupled to the memory, the processor configured to execute the plurality of instructions to:

detect a first fault raised by an operator of a first continuous execution processing (CEP) query relative to a first event from an event stream;

invoke, in response to detecting the first fault, a first user-registered fault handler that has been registered with a CEP query processor;

determine that the first user-registered fault handler caught and handled the first fault; and

cause the CEP query processor, in response to determining that the first user-registered fault handler caught and handled the first fault, to continue to execute the first CEP query without halting execution of the first CEP query;

wherein the first user-registered fault handler is configured to determine whether to handle the first fault or to re-throw the first fault so that a fault handler other than the first user-registered fault handler can handle the first fault.

9. The system of claim 8 , wherein the processor is configured to:

detect a second fault raised by the operator of the first CEP query relative to a second event from the event stream;

invoke the first user-registered fault handler in response to detecting the second fault;

determine that the first user-registered fault handler re-threw the second fault; and

invoke, in response to determining that the first user-registered fault handler re-threw the second fault, a second user-registered fault handler that has been registered with the CEP query processor;

wherein the second user-registered fault handler differs from the first user-registered fault handler.

10. The system of claim 8 , wherein the processor is configured to:

detect a second fault raised by the operator of the first CEP query relative to a second event from the event stream;

invoke the first user-registered fault handler in response to detecting the second fault;

determine that the first user-registered fault handler re-threw the second fault;

determine, in response to determining that the first user-registered fault handler re-threw the second fault, whether any user-registered fault handlers other than the first user-registered fault handler are registered with the CEP query processor; and

invoke, in response to determining that no user-registered fault handlers other than the first user-registered fault handler are registered with the CEP query processor, a default fault handler of the CEP query processor;

wherein the default fault handler is not a user-registered fault handler.

11. The system of claim 8 , wherein the processor is configured to:

detect a second fault raised by the operator of the first CEP query relative to a second event from the event stream;

invoke a default fault handler of the CEP query processor; and

cause the default fault handler to raise a JAVA exception that is catchable by a JAVA exception handler of a source of the event stream.

12. The system of claim 8 , wherein the processor is configured to:

detect a second fault raised by an operator of a second CEP query relative to a second event from the event stream;

invoke the first user-registered fault handler in response to detecting the second fault;

determine that the first user-registered fault handler caught and handled the second fault; and

cause the CEP query processor, in response to determining that the first user-registered fault handler caught and handled the second fault, to continue to execute the second CEP query without halting execution of the second CEP query;

wherein the second CEP query differs from the first CEP query.

13. The system of claim 8 , wherein said operator is a filtering operator, and wherein the processor is configured to:

detect a second fault raised by a join operator of the first CEP query relative to the first event;

invoke the first user-registered fault handler in response to detecting the second fault; and

cause the first user-registered fault handler to re-throw the second fault.

14. The system of claim 8 , wherein the processor is configured to:

detect a second fault raised by an operator that is shared by both the first CEP query and a second CEP query that differs from the first CEP query;

invoke a default fault handler of the CEP query processor; and

cause the default fault handler to halt execution of both the first CEP query and the second CEP query in response to the second fault.

15. A method for processing a data stream of events, the method comprising:

detecting a first fault raised by an operator of a first continuous execution processing (CEP) query relative to a first event from an event stream;

invoking, in response to detecting the first fault, a first user-registered fault handler that has been registered with a CEP query processor;

determining that the first user-registered fault handler caught and handled the first fault; and

causing the CEP query processor, in response to determining that the first user-registered fault handler caught and handled the first fault, to continue to execute the first CEP query without halting execution of the first CEP query;

wherein the first user-registered fault handler is configured to determine whether to handle the first fault or to re-throw the first fault so that a fault handler other than the first user-registered fault handler can handle the first fault.

16. The method of claim 15 , further comprising:

detecting a second fault raised by the operator of the first CEP query relative to a second event from the event stream;

invoking the first user-registered fault handler in response to detecting the second fault;

determining that the first user-registered fault handler re-threw the second fault; and

invoking, in response to determining that the first user-registered fault handler re-threw the second fault, a second user-registered fault handler that has been registered with the CEP query processor;

wherein the second user-registered fault handler differs from the first user-registered fault handler.

17. The method of claim 15 , further comprising:

detecting a second fault raised by the operator of the first CEP query relative to a second event from the event stream;

invoking the first user-registered fault handler in response to detecting the second fault;

determining that the first user-registered fault handler re-threw the second fault;

determining, in response to determining that the first user-registered fault handler re-threw the second fault, whether any user-registered fault handlers other than the first user-registered fault handler are registered with the CEP query processor; and

invoking, in response to determining that no user-registered fault handlers other than the first user-registered fault handler are registered with the CEP query processor, a default fault handler of the CEP query processor;

wherein the default fault handler is not a user-registered fault handler.

18. The method of claim 15 , further comprising:

detecting a second fault raised by an operator of a second CEP query relative to a second event from the event stream;

invoking the first user-registered fault handler in response to detecting the second fault;

determining that the first user-registered fault handler caught and handled the second fault; and

causing the CEP query processor, in response to determining that the first user-registered fault handler caught and handled the second fault, to continue to execute the second CEP query without halting execution of the second CEP query;

wherein the second CEP query differs from the first CEP query.

19. The method of claim 15 , wherein said operator is a filtering operator, and further comprising:

detecting a second fault raised by a join operator of the first CEP query relative to the first event;

invoking the first user-registered fault handler in response to detecting the second fault; and

causing the first user-registered fault handler to re-throw the second fault.

20. The method of claim 15 , further comprising:

detecting a second fault raised by an operator that is shared by both the first CEP query and a second CEP query that differs from the first CEP query;

invoking a default fault handler of the CEP query processor; and

causing the default fault handler to halt execution of both the first CEP query and the second CEP query in response to the second fault.

21. The computer-readable memory of claim 1 , wherein: the first user-registered fault handler is configured to determine, based on whether the first fault is a type of fault that the first user-registered fault handler is configured to handle, whether to handle the first fault or to re-throw the first fault; wherein the first user-registered fault handler is configured to handle some types of faults; and wherein the first user-registered fault handler is configured to re-throw other types of faults.

22. The computer-readable memory of claim 1 , wherein: the first user-registered fault handler is configured to determine, based on whether the first fault was raised by a type of operator whose faults the first user-registered fault handler is configured to handle, whether to handle the first fault or to re-throw the first fault; wherein the first user-registered fault handler is configured to handle faults raised by some types of operators; and wherein the first user-registered fault handler is configured to re-throw faults raised by other types of operators.

23. The computer-readable memory of claim 1 , wherein: the first user-registered fault handler is configured to determine, based on whether the first fault occurred within a type of data for which the first user-registered fault handler is configured to handle faults, whether to handle the first fault or to re-throw the first fault; wherein the first user-registered fault handler is configured to handle faults occurring within some types of data; and wherein the first user-registered fault handler is configured to re-throw faults occurring within other types of data.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2013
From: DE CASTRO ALVES, ALEXANDRE; SRINIVASAN, ANAND; JAMES, MANJU
To: ORACLE INTERNATIONAL CORPORATION
Reel/Frame 029838/0563 →
Continuity (1)
Related Publication 20140237289A1 · Aug 21, 2014