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 split a continuous event processing, CEP, query into a plurality of separate operators; instructions that cause the processor to determine a separate constraint for each particular operator within the plurality of separate operators; instructions that cause the processor to determine a constraint for the CEP query based at least in part on the constraints that the processor determined for the plurality of separate operators; instructions that cause the processor to determine, based on the constraint for the CEP query, whether at least a part of the CEP query can be executed in a concurrent manner; instructions that cause the processor to spawn multiple threads of execution that concurrently process events from an event stream in response to determining that at least part of the CEP query can be executed in a concurrent manner; instructions that cause the processor to detect multiple faults which are raised by a plurality of the separate operators in response to the same event in the event stream; and wherein upon detection of the multiple faults, the plurality of instructions further cause the processor to: group together the multiple faults by creating a parent fault; determine whether one or more user fault handlers are registered by one or more users to handle the parent fault; and upon determining that one or more user fault handlers are registered to handle the parent fault, invoke the registered user fault handlers to handle the parent fault while the other faults within the group are not handled separately. instructions that cause the processor to split a continuous event processing, CEP, query into a plurality of separate operators; instructions that cause the processor to determine a separate constraint for each particular operator within the plurality of separate operators; instructions that cause the processor to determine a constraint for the CEP query based at least in part on the constraints that the processor determined for the plurality of separate operators; instructions that cause the processor to determine, based on the constraint for the CEP query, whether at least a part of the CEP query can be executed in a concurrent manner; instructions that cause the processor to spawn multiple threads of execution that concurrently process events from an event stream in response to determining that at least part of the CEP query can be executed in a concurrent manner; instructions that cause the processor to detect multiple faults which are raised by a plurality of the separate operators in response to the same event in the event stream; and wherein upon detection of the multiple faults, the plurality of instructions further cause the processor to: group together the multiple faults by creating a parent fault; determine whether one or more user fault handlers are registered by one or more users to handle the parent fault; and upon determining that one or more user fault handlers are registered to handle the parent fault, invoke the registered user fault handlers to handle the parent fault while the other faults within the group are not handled separately. group together the multiple faults by creating a parent fault; determine whether one or more user fault handlers are registered by one or more users to handle the parent fault; and upon determining that one or more user fault handlers are registered to handle the parent fault, invoke the registered user fault handlers to handle the parent fault while the other faults within the group are not handled separately.