US20100254389A1 - Method and system for implementing a best efforts resequencer - Google Patents

Method and system for implementing a best efforts resequencer Download PDF

Info

Publication number
US20100254389A1
US20100254389A1 US12/418,585 US41858509A US2010254389A1 US 20100254389 A1 US20100254389 A1 US 20100254389A1 US 41858509 A US41858509 A US 41858509A US 2010254389 A1 US2010254389 A1 US 2010254389A1
Authority
US
United States
Prior art keywords
messages
message
waiting period
resequencer
sequence
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US12/418,585
Other versions
US9124448B2 (en
Inventor
Atul Singh
Maneesh Joshi
Ashwin Patel
Annaji Rao Garimella
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oracle International Corp
Original Assignee
Oracle International Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oracle International Corp filed Critical Oracle International Corp
Priority to US12/418,585 priority Critical patent/US9124448B2/en
Assigned to ORACLE INTERNATIONAL CORPORATION reassignment ORACLE INTERNATIONAL CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GARIMELLA, ANNAJI RAO, PATEL, ASHWIN, JOSHI, MANEESH, SINGH, ATUL
Publication of US20100254389A1 publication Critical patent/US20100254389A1/en
Application granted granted Critical
Publication of US9124448B2 publication Critical patent/US9124448B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/234Monitoring or handling of messages for tracking messages

Definitions

  • the present application is related to (i) co-pending application Ser. No. ______, attorney docket number OID-2008-219-01, entitled “METHOD AND SYSTEM FOR APPLYING EXPRESSIONS ON MESSAGE PAYLOADS FOR A RESEQUENCER”, (ii) application Ser. No. ______, attorney docket number OID-2008-219-02, entitled “METHOD AND SYSTEM FOR IMPLEMENTING SEQUENCE START AND INCREMENT VALUES FOR A RESEQUENCER”, (iii) application Ser. No.
  • the invention is directed to an approach for implementing an improved resequencer, along with related mechanisms and processes.
  • a message contains information which is sent from a source location or entity to a receiver location or entity.
  • Message passing refers to a type of communications used by computing systems to send and exchange messages from sources to destinations.
  • the message delivery patterns or the message paths are selected by the message originator or sender to guarantee that that the messages will always be delivered in a particular order.
  • a resequencer is an apparatus that may be used to deliver incoming messages in a user-specified order to the consumer.
  • the user specifies the new order (or the correct sequence) of the incoming messages and the part of the incoming message that is the sequence identifier of the message.
  • the sequence identifier is the value of a well-know property in the message header.
  • the sequence identifier and the correct sequence is used to decide on the position of the incoming message in the outgoing message stream.
  • the correct sequence could be something as simple as a sequence of consecutive numbers, such as “1, 2, 3 . . .
  • sequence identifier is a non-contiguous space, such as time-based values, then deciding on the position of the incoming message in the outgoing stream is a challenge.
  • This invention presents a solution for resequencing messages when the sequence identifier belongs to a non-contiguous space.
  • An example scenario in which there may be a need to reorder messages is in the implementation of an Enterprise Service Bus (ESB).
  • the enterprise service bus is a relatively recent development in the computing industry, in which the ESB provides a message-based infrastructure for routing and passing messages between applications.
  • the ESB can be used in conjunction with service-oriented architectures (SOA), which are architectures that define applications which provide functionality based upon re-usable services or applications.
  • SOA therefore allows very complex business functions to be performed based upon the interaction and interplay between multiple applications.
  • SOA service-oriented architectures
  • the ESB supports SOA by including sufficient messaging and interconnectivity functionality to allow resources and applications to work together across wide networks.
  • the ESB architecture creates a situation in which there may exist multiple senders and multiple consumers of messages. Particularly relevant for the present application is the fact that the ESB architecture creates a situation in which the message consumer may not have control over the order in which the messages are sent from the message sender to the message consumer. This situation may exist with other types of middleware architectures as well.
  • Embodiments of the present invention provide an improved approach for implementing and configuring a resequencer that can efficiently and effectively order messages to be delivered to a message consumer.
  • a best efforts resequencing approach is described for determining a set of message sot process in a computing system.
  • the present embodiments are particularly useful to provide message ordering for ESB architectures and systems.
  • FIG. 1 illustrates a flow of un-ordered incoming messages to a resequencer, and the generation of an outbound ordered stream of messages from the resequencer according to some embodiments of the invention.
  • FIG. 2 illustrates resequencing of messages according to some embodiments of the invention.
  • FIG. 3 illustrates a flow of message and the process of grouping messages into substreams of messages according to some embodiments of the invention.
  • FIG. 4 illustrates grouping of messages into substreams according to some embodiments of the invention.
  • FIG. 5 illustrates internal structures for a resequencer according to some embodiments of the invention.
  • FIG. 6 shows a flow of a process for processing a message according to some embodiments of the invention.
  • FIG. 7 shows a process for handling messages for sequencing according to some embodiments of the invention.
  • FIG. 8 shows a flow of a process for performing FIFO sequencing according to some embodiments of the invention.
  • FIG. 9 shows a flow of a process for performing standard sequencing according to some embodiments of the invention.
  • FIG. 10 shows a flow of a process for performing best efforts sequencing according to some embodiments of the invention.
  • FIGS. 11A and 11B show flowcharts of processes for using smart filters according to some embodiments of the invention.
  • FIG. 12 shows an architecture of an example computing system with which the invention may be implemented.
  • FIG. 1 shows an architecture 100 of an example system that uses a resequencer according to some embodiments of the invention.
  • the system may be, for example, an ESB architecture comprising one or more middleware applications that interconnect applications to users of the applications, where messages are passed from upstream components to downstream components of the architecture 100 .
  • a message producer 102 generates one or more messages 104 that may be sent from the message producer 102 in an unknown order in the direction of a message consumer 110 .
  • a resequencer 106 intercepts the unordered messages 104 for the message producer 102 .
  • the resequencer 106 is an apparatus that can be used to deliver incoming messages in a user specified order.
  • the resequencer 106 analyzes the unordered messages 104 to determine whether or not the messages 104 need to be resequenced. If so, then the resequencer 106 will re-order the messages 104 before sending the messages in order 108 to the message consumer 110 .
  • FIG. 2 provides an illustration of this process for re-ordering messages.
  • a set of messages are sent out-of-order from a message producer 204 to a message consumer 206 .
  • the messages are intended to be in an ordered sequence where message 1 is first, then message 2 , and then message 3 as the final message.
  • the set of messages may actually be sent out-of-order where message 3 is sent first, then message 1 , and finally message 2 .
  • the resequencer 204 receives the messages 3 , 1 , 2 in the out-of-order sequence, and re-orders the messages to be in the correct sequence.
  • the messages in the correct sequence will then be sent to the message consumer 206 .
  • the messages will be sent in order of message 1 first, them message 2 , and finally message 3 to the message consumer 206 .
  • the payloads of the messages themselves will include information that may be used to decide the correct order of those message.
  • the resequencer will use that information from the message payloads to determine the new position of the incoming message in the outgoing ordered messages stream that is delivered to the message consumer. More details regarding an example approach for performing this type of sequence analysis is described below.
  • a resequencer may also provide the functionality of dividing the stream of incoming messages into sub-streams based on one or more groups that are associated with a message. This can provide faster performance as compared to single threaded resequencing operations that handle only a single stream of messages.
  • Each of the substreams may comprise an independent set of messages that are to be ordered separately from other substreams of messages. Routing may be performed to deliver the substreams to the correct message consumer based upon the specific groups that is associated with each substream.
  • FIG. 3 shows an architecture 300 of an example system for providing routing and grouping functionality with a resequencer according to some embodiments of the invention.
  • a message producer 302 generates one or more messages 303 that may include multiple sets or groups of messages.
  • the messages 303 may include multiple sets of messages intended for multiple message consumers 306 a and 306 b.
  • the resequencer 304 intercepts the message stream 303 before delivery to the message consumers 306 a and 306 b .
  • the resequencer 304 will divide the message stream 303 into a set of multiple message substreams 310 a and 310 b .
  • Each substream 310 a and 310 b will be independently ordered based upon sequencing criteria that may be different for different sub streams.
  • routing can be performed to deliver the substreams 310 a and 310 b to appropriate message consumers.
  • message substream 310 a is delivered to message consumer 306 a and message substream 310 b is delivered to message consumer 306 b.
  • FIG. 4 provides an illustration of this process for subdividing a message stream.
  • a message stream 401 containing multiple sets of messages is sent out-of-order from a message producer 402 to multiple message consumers 406 a and 406 b .
  • the message stream 401 is intended to be in two separate ordered sequences, where first message sequence includes a message 1 that is intended to be first, followed by a message 2 that is intended to be second, and then followed by a message 3 as the final intended message in the message sequence.
  • the message stream 401 also includes a second message sequence that includes a message A that is intended to be first, followed by a message B that is intended to be second, followed by a message C that is intended to be last.
  • the message stream 401 may be sent where the messages for the two different substreams are mixed together in the message stream 401 .
  • the messages in the message stream 401 may be out-of-order. For example, as shown in the figure, message C may be sent first, followed by message 3 , then message A, then message 1 , followed by message B, and finally message 2 .
  • the resequencer 404 receives the message stream 401 with the multiple mixed sequences, and sub-divides the message stream 401 into multiple substreams 405 a and 405 b based upon the specific group to which each message is associated. Assume that message consumer 405 a is the intended recipient of the message group containing messages 1 , 2 , and 3 and message consumer 405 b is the intended recipient of the message group containing messages A, B, and C. Here, resequencer generates the substream 405 a that includes messages 1 , 2 , and 3 and generates substream 405 b that includes messages A, B, and C. The resequencer 404 routes substream 405 a containing messages 1 , 2 , and 3 to message consumer 405 a and routes substream 405 b containing messages A, B, and C to message consumer 405 b.
  • Each of the substreams 405 a and 405 b are also correctly ordered before delivery to the message consumers 405 a and 405 b .
  • message substream 305 a includes messages that arrived at the resequencer 404 in the order of message 3 first, then message 1 next, and finally message 2 last. These messages are reordered such that the message substream 305 a delivered to message consumer 406 a includes the messages in order of message 1 first, then message 2 , and finally message 3 last.
  • message substream 305 b includes messages that arrived at the resequencer 404 in the order of message C first, then message A next, and finally message B last. These messages are reordered such that the message substream 305 a delivered to message consumer 406 a includes the messages in order of message A first, then message B, and then finally message C last.
  • FIG. 5 shows the internal architecture of a resequencer 1302 according to some embodiments of the invention.
  • the resequencer 1302 performs work using any suitable processing entity (e.g., threads, processes, or tasks) which is hereinafter referred to as “threads”.
  • the threads perform the work of processing incoming messages 1314 received from upstream components to create one or more ordered sets of messages 1316 for deliver to downstream components.
  • Multiple types or categories of threads maybe employed in conjunction with the resequencer 1302 .
  • worker threads 1304 may be employed to perform the actual work of analyzing and sequencing messages.
  • Lock threads 1302 may be used to handle locking of resources to avoid inconsistent access or changes to data.
  • threads may also be employed in conjunction with the invention.
  • “heartbeat” threads may be employed to check the status of other threads, and to perform error handling upon the failure of other threads.
  • the message store 1308 may comprise any type of hardware/software structure that is capable of storing a set of messages.
  • the message store 1308 is a relational database product that stores data onto a hardware-based computer storage medium.
  • An exemplary database product that may be used to implement the message store 1308 is the Oracle 11 G database product, available from Oracle Corporation of Redwood Shores, Calif.
  • the message store 1308 may be an internal component of the resequencer 1302 , or it may be implemented as a mechanism that is external to the resequencer 1302 .
  • the resequencer comprises a group status structure 1312 that stores status information for the different groups of messages corresponding to the different substreams undergoing processing by the resequencer 1302 .
  • status information includes, for example, information about the last message that was sent for the group such as sequence identifier information and timestamp information. The information can be used to decide the next message that should be delivered.
  • the message map can be used to find a message given a group identifier and a sequence identifier.
  • a message map 1310 contains information about the messages received by the resequencer 1302 , e.g., the messages received and stored in the message store 1308 .
  • Information that could be stored in the message map 1310 includes, for example, the group identifier and sequence identifier for the messages.
  • FIG. 6 shows a flow of a process for handling incoming messages received by the resequencer using the architecture of FIG. 5 , which is also referred to as the “enqueue” process for new messages.
  • an incoming message from a message producer is received by the resequencer.
  • that message is placed for storage into the message store ( 1334 ).
  • sequence and group identification information are extracted for the message.
  • XPath expressions are applied to extract this information from the message payload of eXtensible Markup Language (XML) based messages, where the sequence and group information are stored within nodes or fields of the XML-based messages.
  • the message map is modified to include an entry for the new message.
  • the extracted group and sequence information is stored within the entry for the new message in the message map ( 1338 ).
  • FIG. 7 shows a flow of a process for processing messages by the resequencer after the messages have been enqueued by the process of FIG. 6 (also referred to as the “dequeue” process).
  • the process is performed on a group-by-group basis to avoid creating inconsistencies in the message data. Therefore, at 1502 , a lock thread locks the metadata associated with the particular group being handled. Any suitable locking approach may be employed within the scope of the invention.
  • a lock column is implemented within the group status table, where the lock thread uses the lock column to exclusively lock the group metadata such that only one worker thread at a time can hold the lock and be permitted to operate upon the group.
  • the group identifier can be placed into a shared queue, where a worker thread can then obtain that group identifier to begin processing.
  • the worker thread accesses the group status table to obtain the latest status information for the group being operated upon.
  • status information includes, for example, information about the last message that was delivered to a downstream component for that group, such as the sequence identifier or timestamp for that last delivered message.
  • the worker thread accesses the information places it into the shared queue.
  • the worker thread uses the group status information to iterate through the messages in the message store to identify the next one or more messages from the message store that should be sequentially processed for delivery to downstream components.
  • the messages are processed based upon any number of different sequence methodologies ( 1510 ). Examples of different sequencing methodologies that may be employed in conjunction with embodiments of the invention include first-in-first-out (FIFO) sequencing 1512 , standard ordered sequencing 1514 , and best efforts sequencing 1516 .
  • FIFO first-in-first-out
  • FIFO sequencing generally refers to a sequencing approach in which messages are processed in the order in which they arrive.
  • FIG. 8 shows an example process that may be used to implement FIFO sequencing.
  • the process begins by obtaining the unprocessed messages for the particular group under examination ( 1602 ). This can be accomplished by searching through the message store for any messages corresponding to the group identifier for the group being processed.
  • the message map can be used to identify the messages, since it includes group identifier information that allows searching and mapping of the messages that correspond to a specific group identifier.
  • the unprocessed messages for the group are sorted in the order of their arrival times ( 1604 ).
  • On approach for performing this sorting task is to sort the messages based upon their incoming timestamps.
  • a set of one or more messages are selected to be delivered. Any number of messages may be selected for delivery to the downstream components. However, given the expense of perform database and message processing operations, it is often more efficient to process multiple messages at the same time for delivery. Therefore, at 1606 , the top N messages will normally be selected for delivery, where N corresponds to a suitably efficient number of messages to be processed, depending upon the specific system, network, and environmental parameters for the system with which the resequencer is implemented. By appropriately configuring N the resequencer provides load balancing, The selected messages are then delivered in the FIFO order at 1608 .
  • Standard sequencing is performed sequencer a set of messages in a standard numerical or user-specified order.
  • FIG. 9 shows an example process that may be used to implement standard sequencing. The process begins by identifying the last message for the group that was delivered to the downstream components ( 1702 ). The group status table can be accessed to obtain this information, including the sequence identifier for that last message which was delivered.
  • any number of messages may be selected for delivery to the downstream component, since given the expense of perform database and message processing operations, it is often more efficient to process multiple messages at the same time for delivery. Therefore, at 1706 , the sequence identifier for the Nth message in the sequence of messages is identified, where N corresponds to a suitably efficient number of messages to be processed, depending upon the specific system, network, and environmental parameters for the system with which the resequencer is implemented.
  • a selection is made of the unprocessed messages corresponding to sequence identifiers that are in the range from the next expected message (identified at 1704 ) to the Nth message (identified at 1706 ).
  • the message map can be searched to identify the messages for a given group having sequence identifiers in this range.
  • the selected messages are retrieved from the messages store, and are delivered at 1710 to the downstream components.
  • Best efforts sequencing is another sequencing approach that can be used to group messages together for delivery. It is often desirable to wait until the entire set of messages is collected together before undergoing processing. This avoids the situation in which an important message is left out from the group processing because it arrives later than the other messages.
  • the problem is that it is often difficult or impossible to know if there are any messages that are missing from the set of messages to be processed. This is because there may be a non-contiguous sequence of identifiers for the messages in the message stream. For example, consider a set of messages in which the messages are created with a timestamp as the sequence identifier. A first message arrives that has 1:00 PM as its sequence identifier and a second message arrives that has 1:02 PM as the second message's sequence identifier. Because these are non-contiguous identifiers, it is completely unknown whether or not there are any other messages that may be arriving which correspond to a timestamp between 1:00 PM and 1:02 PM.
  • One possible approach to address this problem is to implement a skip on time out facility to handle non-contiguous identifier sequences.
  • the non-contiguous sequence is approximated by a contiguous sequence.
  • the resequencer waits for every identifier in the contiguous sequence for a configurable time-out period. If the resequencer does not receive a message with the specific sequence identifier in the time-out period then it presumes that message will never arrive and moves over to handle message with the next identifier in the sequence.
  • Another approach is to wait for N time units to create a batch of messages.
  • the resequencer sorts the messages in the batch on the sequence identifier and processes the messages in the increasing order of the sequence identifier.
  • the problem with these approaches is that they ignore a key characteristic often seen in messages, where the messages are delivered in a somewhat “bursty” in nature, in which multiple individual messages that are linked together are sent over the network over a very short duration of time. Therefore, a static time-out or N unit waiting facility may fail to catch all the late messages if the burst of messages begin arriving towards the tail end of the time-out or waiting periods.
  • the problem is addressed by keeping a time window open for new messages if a new message is received during the duration of that time window. If no new messages are received in the time window, then the window is closed and the messages already received are processed. If, however, any new messages are received while the window is open, then the time window restarts and waits for additional new messages.
  • This approach is based upon the resequencer creating a batch of messages that are ready to be processed.
  • the batch of messages is processed if no new messages are received in N time units after the last message in the batch.
  • the resequencer sorts the messages in this batch on the sequence identifier, picking up the messages with the smallest sequence identifier and processes it for delivery.
  • the resequencer will wait for every identifier in the contiguous sequence for a configurable time-out period. If the resequencer does not receive a message with the specific sequence identifier in the time-out period then it presumes that message will never arrive and moves over to handle the message with the next identifier in the sequence.
  • FIG. 10 shows a flow of a process for implementing best efforts sequencing according to some embodiments of the invention.
  • a waiting period of N time units is selected for the best efforts sequencing. Any suitable number of time units can be selected for the waiting period.
  • a check is performed to determine if any new messages have been received for the group under examination. This check can be accomplished by analyzing the message store to see if new messages have been received and deposited into the message store. Alternatively, the message map can be reviewed to identify if any messages having a recent timestamp has been received and entered as a new entry in the message map. If any new messages have been identified at 1806 , then the waiting period is restarted at 1808 to allow further waiting for new messages.
  • a check of the time period is made at 1810 . If the time period is not yet over, then the process returns back to 1804 to continue to check for new messages. A suitable waiting period may occur before returning back to 1804 to check for new messages. If the time period has completed without any new messages, then at 1812 , the unprocessed messages that have already arrived are selected for processing and delivery.
  • the present best efforts approach provides a sequencing approach that much more closely approximates real-life usage pattern of messages, where sets of messages are generated in a short period of time and send to the resequencer for ordered delivery.
  • the solution provides better performance compared to the approach of approximating the non-contiguous sequence with a contiguous sequence.
  • FIG. 1 IA shows a flowchart of a process for using smart filters according to some embodiments of the invention.
  • the messages are received, as described above.
  • the process of FIG. 1 IA checks for the presence of any missing messages in the local message store, which may be caused, for example, by having messages arrive out-of-sequence. For example, a sequence of messages may require a first message in the sequence to be a “Create” operation, followed in sequence by an “Update” operation message, and followed by a “Delete” operation message. If the local message store only includes the “Update” and “Delete” messages and has not yet received the “Create” message, then it is clear that the messages have arrived out of order, but that it is likely the “Create” message will be arriving in the near future.
  • the best efforts time period can be extended until the missing message has been received. If there is no detection of a missing message at 1104 , then the resequecner proceeds with processing of the messages at 1108 .
  • FIG. 11B shows an alternate approach to using a smart filter.
  • messages are received at 1102 and the process at 1104 checks for the presence of any missing messages in the local message store.
  • a threshold time limit is implemented, such that the best efforts time period is extended only tip to the time limit even if the missing message has not been received. Therefore, at 1105 , a determination is made whether an extension of the best efforts time limit would exceed a threshold. If not, then at 1106 , the best efforts time period can be extended. If, however, the extension of the best efforts time limit would exceed a threshold, then the process proceeds to 1108 to proceed with processing of the messages.
  • the present invention(s) may be employed in any suitable computing architecture.
  • the inventions may be applied to facilitate message delivery for systems that employ middleware or ones that implement an enterprise service bus. While examples of the inventions were described relative to resequencers, it is noted that that inventions should not be limited to resequencers unless claimed as such.
  • FIG. 12 is a block diagram of an illustrative computing system 2400 suitable for implementing an embodiment of the present invention.
  • Computer system 2400 includes a bus 2406 or other communication mechanism for communicating information, which interconnects subsystems and devices, such as processor 2407 , system memory 2408 (e.g., RAM), static storage device 2409 (e.g., ROM), disk drive 2410 (e.g., magnetic or optical), communication interface 2414 (e.g., modem or Ethernet card), display 2411 (e.g., CRT or LCD), input device 2412 (e.g., keyboard), and cursor control.
  • processor 2407 e.g., system memory 2408 (e.g., RAM), static storage device 2409 (e.g., ROM), disk drive 2410 (e.g., magnetic or optical), communication interface 2414 (e.g., modem or Ethernet card), display 2411 (e.g., CRT or LCD), input device 2412 (e.g., keyboard), and cursor control.
  • computer system 2400 performs specific operations by processor 2407 executing one or more sequences of one or more instructions contained in system memory 2408 .
  • Such instructions may be read into system memory 2408 from another computer readable/usable medium, such as static storage device 2409 or disk drive 2410 .
  • static storage device 2409 or disk drive 2410 may be used in place of or in combination with software instructions to implement the invention.
  • hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention
  • embodiments of the invention are not limited to any specific combination of hardware circuitry and/or software.
  • the term “logic” shall mean any combination of software or hardware that is used to implement all or part of the invention.
  • Non-volatile media includes, for example, optical or magnetic disks, such as disk drive 2410 .
  • Volatile media includes dynamic memory, such as system memory 2408 .
  • Computer readable media includes, for example, floppy disk, flexible disk, hard disk, magnetic tape, any other magnetic medium, CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, RAM, PROM, EPROM, FLASH-EPROM, any other memory chip or cartridge, or any other medium from which a computer can read.
  • execution of the sequences of instructions to practice the invention is performed by a single computer system 2400 .
  • two or more computer systems 2400 coupled by communication link 2415 may perform the sequence of instructions required to practice the invention in coordination with one another.
  • Computer system 2400 may transmit and receive messages, data, and instructions, including program, i.e., application code, through communication link 2415 and communication interface 2414 .
  • Received program code may be executed by processor 2407 as it is received, and/or stored in disk drive 2410 , or other non-volatile storage for later execution.

Abstract

Described is an improved method, system, and computer program product for implementing an improved resequencer, along with related mechanisms and processes. A best efforts resequencing approach is described for determining a set of message sot process in a computing system.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • The present application is related to (i) co-pending application Ser. No. ______, attorney docket number OID-2008-219-01, entitled “METHOD AND SYSTEM FOR APPLYING EXPRESSIONS ON MESSAGE PAYLOADS FOR A RESEQUENCER”, (ii) application Ser. No. ______, attorney docket number OID-2008-219-02, entitled “METHOD AND SYSTEM FOR IMPLEMENTING SEQUENCE START AND INCREMENT VALUES FOR A RESEQUENCER”, (iii) application Ser. No. ______, attorney docket number OID-2008-219-03, entitled “METHOD AND SYSTEM FOR PERFORMING BLOCKING OF MESSAGES ON ERRORS IN MESSAGE STREAM”, and (iv) application Ser. No. ______, attorney docket number OID-2008-220-01, entitled “METHOD AND SYSTEM FOR IMPLEMENTING HIGH-PERFORMANCE AND FAULT-TOLERANT LOCKING MECHANISM”, all filed on even date herewith, which are all hereby incorporated by reference in their entirety.
  • BACKGROUND AND SUMMARY
  • The invention is directed to an approach for implementing an improved resequencer, along with related mechanisms and processes.
  • Almost all types of computing systems use and implement the concept of messages. A message contains information which is sent from a source location or entity to a receiver location or entity. “Message passing” refers to a type of communications used by computing systems to send and exchange messages from sources to destinations.
  • When messages are sent from a source to a destination, it is possible that the messages may be delivered out of order. This may occur for many different reasons. For example, consider a set of messages to be delivered across the internet. Dynamic routing is often used to select the particular routes and intermediate nodes through which the messages are delivered from the source to the destination. Because of the dynamic nature of the routing, it is quite possible, and even likely, that the different messages within the set of messages are routed through different pathways, which cause the messages to be delivered at different times. As such, an earlier message in a set sequence may be delivered later in time than a later message within the sequence of messages. Multi-threaded processing may also correspond to messages in a stochastic order that are delivered or received.
  • If the messages are required to be delivered in a particular sequence to a downstream consumer, the easiest solution would be to make sure that they never get out of order in the first place. In effect, the message delivery patterns or the message paths are selected by the message originator or sender to guarantee that that the messages will always be delivered in a particular order.
  • However, there are many circumstances in which it is not possible to provide this guarantee of ordering for the messages at delivery. For example, a developer of a downstream component may be just a consumer of messages created by upstream components controlled by other parties, and therefore may not be able to affect or have a choice of how the upstream components implement controls for the order of messages. Thus, the need to implement a component that will reorder messages may arise. In the database application space, this is particularly a problem where application semantics require the messages to be delivered in a particular order.
  • A resequencer is an apparatus that may be used to deliver incoming messages in a user-specified order to the consumer. The user specifies the new order (or the correct sequence) of the incoming messages and the part of the incoming message that is the sequence identifier of the message. Typically, the sequence identifier is the value of a well-know property in the message header. The sequence identifier and the correct sequence is used to decide on the position of the incoming message in the outgoing message stream. The correct sequence could be something as simple as a sequence of consecutive numbers, such as “1, 2, 3 . . . ” However if the sequence identifier is a non-contiguous space, such as time-based values, then deciding on the position of the incoming message in the outgoing stream is a challenge. This invention presents a solution for resequencing messages when the sequence identifier belongs to a non-contiguous space.
  • An example scenario in which there may be a need to reorder messages is in the implementation of an Enterprise Service Bus (ESB). The enterprise service bus is a relatively recent development in the computing industry, in which the ESB provides a message-based infrastructure for routing and passing messages between applications. The ESB can be used in conjunction with service-oriented architectures (SOA), which are architectures that define applications which provide functionality based upon re-usable services or applications. The SOA therefore allows very complex business functions to be performed based upon the interaction and interplay between multiple applications. The ESB supports SOA by including sufficient messaging and interconnectivity functionality to allow resources and applications to work together across wide networks.
  • The ESB architecture creates a situation in which there may exist multiple senders and multiple consumers of messages. Particularly relevant for the present application is the fact that the ESB architecture creates a situation in which the message consumer may not have control over the order in which the messages are sent from the message sender to the message consumer. This situation may exist with other types of middleware architectures as well.
  • Embodiments of the present invention provide an improved approach for implementing and configuring a resequencer that can efficiently and effectively order messages to be delivered to a message consumer. A best efforts resequencing approach is described for determining a set of message sot process in a computing system. The present embodiments are particularly useful to provide message ordering for ESB architectures and systems. Other and additional objects, features, and advantages of the invention are described in the detailed description, figures, and claims.
  • BRIEF DESCRIPTION OF FIGURES FOR EMBODIMENTS OF THE INVENTION
  • FIG. 1 illustrates a flow of un-ordered incoming messages to a resequencer, and the generation of an outbound ordered stream of messages from the resequencer according to some embodiments of the invention.
  • FIG. 2 illustrates resequencing of messages according to some embodiments of the invention.
  • FIG. 3 illustrates a flow of message and the process of grouping messages into substreams of messages according to some embodiments of the invention.
  • FIG. 4 illustrates grouping of messages into substreams according to some embodiments of the invention.
  • FIG. 5 illustrates internal structures for a resequencer according to some embodiments of the invention.
  • FIG. 6 shows a flow of a process for processing a message according to some embodiments of the invention.
  • FIG. 7 shows a process for handling messages for sequencing according to some embodiments of the invention.
  • FIG. 8 shows a flow of a process for performing FIFO sequencing according to some embodiments of the invention.
  • FIG. 9 shows a flow of a process for performing standard sequencing according to some embodiments of the invention.
  • FIG. 10 shows a flow of a process for performing best efforts sequencing according to some embodiments of the invention.
  • FIGS. 11A and 11B show flowcharts of processes for using smart filters according to some embodiments of the invention.
  • FIG. 12 shows an architecture of an example computing system with which the invention may be implemented.
  • DETAILED DESCRIPTION OF EMBODIMENTS
  • As noted above, in many message-based systems, it is possible for messages to be sent from a message creator to a message consumer in a sequence where the messages are delivered out-of-order. If, however, the message consumer expects the messages to be in a particular order, then the out-of-order message sequence could cause computing errors or other failures to occur at or by the message consumer.
  • FIG. 1 shows an architecture 100 of an example system that uses a resequencer according to some embodiments of the invention. The system may be, for example, an ESB architecture comprising one or more middleware applications that interconnect applications to users of the applications, where messages are passed from upstream components to downstream components of the architecture 100. A message producer 102 generates one or more messages 104 that may be sent from the message producer 102 in an unknown order in the direction of a message consumer 110. A resequencer 106 intercepts the unordered messages 104 for the message producer 102.
  • The resequencer 106 is an apparatus that can be used to deliver incoming messages in a user specified order. The resequencer 106 analyzes the unordered messages 104 to determine whether or not the messages 104 need to be resequenced. If so, then the resequencer 106 will re-order the messages 104 before sending the messages in order 108 to the message consumer 110.
  • FIG. 2 provides an illustration of this process for re-ordering messages. Assume that a set of messages are sent out-of-order from a message producer 204 to a message consumer 206. For example, the messages are intended to be in an ordered sequence where message 1 is first, then message 2, and then message 3 as the final message. However, due to reasons such as network routing or latency, the set of messages may actually be sent out-of-order where message 3 is sent first, then message 1, and finally message 2.
  • The resequencer 204 receives the messages 3, 1, 2 in the out-of-order sequence, and re-orders the messages to be in the correct sequence. The messages in the correct sequence will then be sent to the message consumer 206. Here, the messages will be sent in order of message 1 first, them message 2, and finally message 3 to the message consumer 206.
  • According to some embodiments of the invention, the payloads of the messages themselves will include information that may be used to decide the correct order of those message. The resequencer will use that information from the message payloads to determine the new position of the incoming message in the outgoing ordered messages stream that is delivered to the message consumer. More details regarding an example approach for performing this type of sequence analysis is described below.
  • In addition to the function of re-ordering messages, a resequencer may also provide the functionality of dividing the stream of incoming messages into sub-streams based on one or more groups that are associated with a message. This can provide faster performance as compared to single threaded resequencing operations that handle only a single stream of messages. Each of the substreams may comprise an independent set of messages that are to be ordered separately from other substreams of messages. Routing may be performed to deliver the substreams to the correct message consumer based upon the specific groups that is associated with each substream.
  • FIG. 3 shows an architecture 300 of an example system for providing routing and grouping functionality with a resequencer according to some embodiments of the invention. A message producer 302 generates one or more messages 303 that may include multiple sets or groups of messages. In particular, the messages 303 may include multiple sets of messages intended for multiple message consumers 306 a and 306 b.
  • The resequencer 304 intercepts the message stream 303 before delivery to the message consumers 306 a and 306 b. The resequencer 304 will divide the message stream 303 into a set of multiple message substreams 310 a and 310 b. Each substream 310 a and 310 b will be independently ordered based upon sequencing criteria that may be different for different sub streams.
  • Once the message stream 303 has been divided into the substreams 310 a and 310 b, routing can be performed to deliver the substreams 310 a and 310 b to appropriate message consumers. Here, message substream 310 a is delivered to message consumer 306 a and message substream 310 b is delivered to message consumer 306 b.
  • FIG. 4 provides an illustration of this process for subdividing a message stream. Assume that a message stream 401 containing multiple sets of messages is sent out-of-order from a message producer 402 to multiple message consumers 406 a and 406 b. For example, the message stream 401 is intended to be in two separate ordered sequences, where first message sequence includes a message 1 that is intended to be first, followed by a message 2 that is intended to be second, and then followed by a message 3 as the final intended message in the message sequence. The message stream 401 also includes a second message sequence that includes a message A that is intended to be first, followed by a message B that is intended to be second, followed by a message C that is intended to be last.
  • However, the message stream 401 may be sent where the messages for the two different substreams are mixed together in the message stream 401. Furthermore, the messages in the message stream 401 may be out-of-order. For example, as shown in the figure, message C may be sent first, followed by message 3, then message A, then message 1, followed by message B, and finally message 2.
  • The resequencer 404 receives the message stream 401 with the multiple mixed sequences, and sub-divides the message stream 401 into multiple substreams 405 a and 405 b based upon the specific group to which each message is associated. Assume that message consumer 405 a is the intended recipient of the message group containing messages 1, 2, and 3 and message consumer 405 b is the intended recipient of the message group containing messages A, B, and C. Here, resequencer generates the substream 405 a that includes messages 1, 2, and 3 and generates substream 405 b that includes messages A, B, and C. The resequencer 404 routes substream 405 a containing messages 1, 2, and 3 to message consumer 405 a and routes substream 405 b containing messages A, B, and C to message consumer 405 b.
  • Each of the substreams 405 a and 405 b are also correctly ordered before delivery to the message consumers 405 a and 405 b. Here, message substream 305 a includes messages that arrived at the resequencer 404 in the order of message 3 first, then message 1 next, and finally message 2 last. These messages are reordered such that the message substream 305 a delivered to message consumer 406 a includes the messages in order of message 1 first, then message 2, and finally message 3 last. Similarly, message substream 305 b includes messages that arrived at the resequencer 404 in the order of message C first, then message A next, and finally message B last. These messages are reordered such that the message substream 305 a delivered to message consumer 406 a includes the messages in order of message A first, then message B, and then finally message C last.
  • FIG. 5 shows the internal architecture of a resequencer 1302 according to some embodiments of the invention. The resequencer 1302 performs work using any suitable processing entity (e.g., threads, processes, or tasks) which is hereinafter referred to as “threads”. The threads perform the work of processing incoming messages 1314 received from upstream components to create one or more ordered sets of messages 1316 for deliver to downstream components. Multiple types or categories of threads maybe employed in conjunction with the resequencer 1302. For example, worker threads 1304 may be employed to perform the actual work of analyzing and sequencing messages. Lock threads 1302 may be used to handle locking of resources to avoid inconsistent access or changes to data. Other and additional types of threads may also be employed in conjunction with the invention. For example, as described in a section further below in this document, “heartbeat” threads may be employed to check the status of other threads, and to perform error handling upon the failure of other threads.
  • Messages that are received by the resequencer are stored in a message store 1308. The message store 1308 may comprise any type of hardware/software structure that is capable of storing a set of messages. According to some embodiments, the message store 1308 is a relational database product that stores data onto a hardware-based computer storage medium. An exemplary database product that may be used to implement the message store 1308 is the Oracle 11G database product, available from Oracle Corporation of Redwood Shores, Calif. The message store 1308 may be an internal component of the resequencer 1302, or it may be implemented as a mechanism that is external to the resequencer 1302.
  • The resequencer comprises a group status structure 1312 that stores status information for the different groups of messages corresponding to the different substreams undergoing processing by the resequencer 1302. Such status information includes, for example, information about the last message that was sent for the group such as sequence identifier information and timestamp information. The information can be used to decide the next message that should be delivered.
  • The message map can be used to find a message given a group identifier and a sequence identifier. A message map 1310 contains information about the messages received by the resequencer 1302, e.g., the messages received and stored in the message store 1308. Information that could be stored in the message map 1310 includes, for example, the group identifier and sequence identifier for the messages.
  • FIG. 6 shows a flow of a process for handling incoming messages received by the resequencer using the architecture of FIG. 5, which is also referred to as the “enqueue” process for new messages. At 1332, an incoming message from a message producer is received by the resequencer. When a message arrives at the resequencer, that message is placed for storage into the message store (1334).
  • At 1336, the sequence and group identification information are extracted for the message. According to some embodiments, XPath expressions are applied to extract this information from the message payload of eXtensible Markup Language (XML) based messages, where the sequence and group information are stored within nodes or fields of the XML-based messages. The message map is modified to include an entry for the new message. The extracted group and sequence information is stored within the entry for the new message in the message map (1338).
  • A determination is made at 1340 whether the new incoming message corresponds to an existing group already recognized at the resequencer, or whether the message corresponds to a new group that has not yet been processed by the resequencer. If the message corresponds to a new group identifier, then a new entry is created in the group status structure for the group identifier (1342). On the other hand, if the message corresponds to a known group identifier which already has an entry in the group status structure, then a new entry does not needs to be created in that structure for the new message. Instead, the arrival of the message may cause a change in group status that could require a modification of the entry for that group in the group status structure, e.g., a change to the timestamp of a latest message to be sent out for subsequent delivery.
  • FIG. 7 shows a flow of a process for processing messages by the resequencer after the messages have been enqueued by the process of FIG. 6 (also referred to as the “dequeue” process). The process is performed on a group-by-group basis to avoid creating inconsistencies in the message data. Therefore, at 1502, a lock thread locks the metadata associated with the particular group being handled. Any suitable locking approach may be employed within the scope of the invention. According to some embodiments, a lock column is implemented within the group status table, where the lock thread uses the lock column to exclusively lock the group metadata such that only one worker thread at a time can hold the lock and be permitted to operate upon the group. The group identifier can be placed into a shared queue, where a worker thread can then obtain that group identifier to begin processing.
  • At 1504, the worker thread accesses the group status table to obtain the latest status information for the group being operated upon. Such status information includes, for example, information about the last message that was delivered to a downstream component for that group, such as the sequence identifier or timestamp for that last delivered message. According to one embodiment, after the group is locked, it is at this point that the worker thread accesses the information places it into the shared queue.
  • At 1508, the worker thread uses the group status information to iterate through the messages in the message store to identify the next one or more messages from the message store that should be sequentially processed for delivery to downstream components. The messages are processed based upon any number of different sequence methodologies (1510). Examples of different sequencing methodologies that may be employed in conjunction with embodiments of the invention include first-in-first-out (FIFO) sequencing 1512, standard ordered sequencing 1514, and best efforts sequencing 1516.
  • FIFO sequencing generally refers to a sequencing approach in which messages are processed in the order in which they arrive. FIG. 8 shows an example process that may be used to implement FIFO sequencing. The process begins by obtaining the unprocessed messages for the particular group under examination (1602). This can be accomplished by searching through the message store for any messages corresponding to the group identifier for the group being processed. The message map can be used to identify the messages, since it includes group identifier information that allows searching and mapping of the messages that correspond to a specific group identifier.
  • Next, at 1604, the unprocessed messages for the group are sorted in the order of their arrival times (1604). On approach for performing this sorting task is to sort the messages based upon their incoming timestamps.
  • At 1606, a set of one or more messages are selected to be delivered. Any number of messages may be selected for delivery to the downstream components. However, given the expense of perform database and message processing operations, it is often more efficient to process multiple messages at the same time for delivery. Therefore, at 1606, the top N messages will normally be selected for delivery, where N corresponds to a suitably efficient number of messages to be processed, depending upon the specific system, network, and environmental parameters for the system with which the resequencer is implemented. By appropriately configuring N the resequencer provides load balancing, The selected messages are then delivered in the FIFO order at 1608.
  • Standard sequencing is performed sequencer a set of messages in a standard numerical or user-specified order. FIG. 9 shows an example process that may be used to implement standard sequencing. The process begins by identifying the last message for the group that was delivered to the downstream components (1702). The group status table can be accessed to obtain this information, including the sequence identifier for that last message which was delivered.
  • At 1704, a determination is made of the sequence identifier for the next message in the specified ordering of messages. For example, if the messages are numerically ordered in sequence, and if the last message that was delivered was message number “2”, then the next expected message to deliver will have a sequence number of “3”. If no previous message has yet been delivered for the group, then the next sequential messages for the present processing should be the message corresponding to the very first sequence number/identifier.
  • As previously discussed, any number of messages may be selected for delivery to the downstream component, since given the expense of perform database and message processing operations, it is often more efficient to process multiple messages at the same time for delivery. Therefore, at 1706, the sequence identifier for the Nth message in the sequence of messages is identified, where N corresponds to a suitably efficient number of messages to be processed, depending upon the specific system, network, and environmental parameters for the system with which the resequencer is implemented.
  • At 1708, a selection is made of the unprocessed messages corresponding to sequence identifiers that are in the range from the next expected message (identified at 1704) to the Nth message (identified at 1706). The message map can be searched to identify the messages for a given group having sequence identifiers in this range. The selected messages are retrieved from the messages store, and are delivered at 1710 to the downstream components.
  • Best efforts sequencing is another sequencing approach that can be used to group messages together for delivery. It is often desirable to wait until the entire set of messages is collected together before undergoing processing. This avoids the situation in which an important message is left out from the group processing because it arrives later than the other messages.
  • The problem is that it is often difficult or impossible to know if there are any messages that are missing from the set of messages to be processed. This is because there may be a non-contiguous sequence of identifiers for the messages in the message stream. For example, consider a set of messages in which the messages are created with a timestamp as the sequence identifier. A first message arrives that has 1:00 PM as its sequence identifier and a second message arrives that has 1:02 PM as the second message's sequence identifier. Because these are non-contiguous identifiers, it is completely unknown whether or not there are any other messages that may be arriving which correspond to a timestamp between 1:00 PM and 1:02 PM.
  • Because it is unknown whether any further messages will arrive for the group, it becomes very impractical to wait for an unlimited period of time for additional messages to arrive. One possible approach to address this problem is to implement a skip on time out facility to handle non-contiguous identifier sequences. In this approach, the non-contiguous sequence is approximated by a contiguous sequence. The resequencer waits for every identifier in the contiguous sequence for a configurable time-out period. If the resequencer does not receive a message with the specific sequence identifier in the time-out period then it presumes that message will never arrive and moves over to handle message with the next identifier in the sequence. Another approach is to wait for N time units to create a batch of messages. The resequencer sorts the messages in the batch on the sequence identifier and processes the messages in the increasing order of the sequence identifier. The problem with these approaches is that they ignore a key characteristic often seen in messages, where the messages are delivered in a somewhat “bursty” in nature, in which multiple individual messages that are linked together are sent over the network over a very short duration of time. Therefore, a static time-out or N unit waiting facility may fail to catch all the late messages if the burst of messages begin arriving towards the tail end of the time-out or waiting periods.
  • According to some embodiments of the invention, the problem is addressed by keeping a time window open for new messages if a new message is received during the duration of that time window. If no new messages are received in the time window, then the window is closed and the messages already received are processed. If, however, any new messages are received while the window is open, then the time window restarts and waits for additional new messages.
  • This approach is based upon the resequencer creating a batch of messages that are ready to be processed. The batch of messages is processed if no new messages are received in N time units after the last message in the batch. The resequencer sorts the messages in this batch on the sequence identifier, picking up the messages with the smallest sequence identifier and processes it for delivery. According to some embodiments, the resequencer will wait for every identifier in the contiguous sequence for a configurable time-out period. If the resequencer does not receive a message with the specific sequence identifier in the time-out period then it presumes that message will never arrive and moves over to handle the message with the next identifier in the sequence.
  • FIG. 10 shows a flow of a process for implementing best efforts sequencing according to some embodiments of the invention. At 1802, a waiting period of N time units is selected for the best efforts sequencing. Any suitable number of time units can be selected for the waiting period.
  • At 1804, a check is performed to determine if any new messages have been received for the group under examination. This check can be accomplished by analyzing the message store to see if new messages have been received and deposited into the message store. Alternatively, the message map can be reviewed to identify if any messages having a recent timestamp has been received and entered as a new entry in the message map. If any new messages have been identified at 1806, then the waiting period is restarted at 1808 to allow further waiting for new messages.
  • If no new messages have been received, then a check of the time period is made at 1810. If the time period is not yet over, then the process returns back to 1804 to continue to check for new messages. A suitable waiting period may occur before returning back to 1804 to check for new messages. If the time period has completed without any new messages, then at 1812, the unprocessed messages that have already arrived are selected for processing and delivery.
  • The present best efforts approach provides a sequencing approach that much more closely approximates real-life usage pattern of messages, where sets of messages are generated in a short period of time and send to the resequencer for ordered delivery. The solution provides better performance compared to the approach of approximating the non-contiguous sequence with a contiguous sequence.
  • According to some embodiments, a smart filter can be implemented to extend the best efforts time period under certain conditions. FIG. 1 IA shows a flowchart of a process for using smart filters according to some embodiments of the invention. At 1102, the messages are received, as described above. At 1104, the process of FIG. 1 IA checks for the presence of any missing messages in the local message store, which may be caused, for example, by having messages arrive out-of-sequence. For example, a sequence of messages may require a first message in the sequence to be a “Create” operation, followed in sequence by an “Update” operation message, and followed by a “Delete” operation message. If the local message store only includes the “Update” and “Delete” messages and has not yet received the “Create” message, then it is clear that the messages have arrived out of order, but that it is likely the “Create” message will be arriving in the near future.
  • Upon detection of this circumstance, then at 1106, the best efforts time period can be extended until the missing message has been received. If there is no detection of a missing message at 1104, then the resequecner proceeds with processing of the messages at 1108.
  • FIG. 11B shows an alternate approach to using a smart filter. As before, messages are received at 1102 and the process at 1104 checks for the presence of any missing messages in the local message store.
  • The difference between the processes of FIGS. 11A and 11B is that according to the alternate embodiment of FIG. 11B, a threshold time limit is implemented, such that the best efforts time period is extended only tip to the time limit even if the missing message has not been received. Therefore, at 1105, a determination is made whether an extension of the best efforts time limit would exceed a threshold. If not, then at 1106, the best efforts time period can be extended. If, however, the extension of the best efforts time limit would exceed a threshold, then the process proceeds to 1108 to proceed with processing of the messages.
  • The above description has provided the details of approaches for implementing an improved resequencer, along with related mechanisms and processes. For example, a process and mechanism was described for specifying sequence information for a set of messages.
  • The present invention(s) may be employed in any suitable computing architecture. For example, the inventions may be applied to facilitate message delivery for systems that employ middleware or ones that implement an enterprise service bus. While examples of the inventions were described relative to resequencers, it is noted that that inventions should not be limited to resequencers unless claimed as such.
  • System Architecture Overview
  • FIG. 12 is a block diagram of an illustrative computing system 2400 suitable for implementing an embodiment of the present invention. Computer system 2400 includes a bus 2406 or other communication mechanism for communicating information, which interconnects subsystems and devices, such as processor 2407, system memory 2408 (e.g., RAM), static storage device 2409 (e.g., ROM), disk drive 2410 (e.g., magnetic or optical), communication interface 2414 (e.g., modem or Ethernet card), display 2411 (e.g., CRT or LCD), input device 2412 (e.g., keyboard), and cursor control.
  • According to one embodiment of the invention, computer system 2400 performs specific operations by processor 2407 executing one or more sequences of one or more instructions contained in system memory 2408. Such instructions may be read into system memory 2408 from another computer readable/usable medium, such as static storage device 2409 or disk drive 2410. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention Thus, embodiments of the invention are not limited to any specific combination of hardware circuitry and/or software. In one embodiment, the term “logic” shall mean any combination of software or hardware that is used to implement all or part of the invention.
  • The term “computer readable medium” or “computer usable medium” as used herein refers to any medium that participates in providing instructions to processor 2407 for execution. Such a medium may take many forms, including but not limited to, non-volatile media and volatile media. Non-volatile media includes, for example, optical or magnetic disks, such as disk drive 2410. Volatile media includes dynamic memory, such as system memory 2408.
  • Common forms of computer readable media includes, for example, floppy disk, flexible disk, hard disk, magnetic tape, any other magnetic medium, CD-ROM, any other optical medium, punch cards, paper tape, any other physical medium with patterns of holes, RAM, PROM, EPROM, FLASH-EPROM, any other memory chip or cartridge, or any other medium from which a computer can read.
  • In an embodiment of the invention, execution of the sequences of instructions to practice the invention is performed by a single computer system 2400. According to other embodiments of the invention, two or more computer systems 2400 coupled by communication link 2415 (e.g., LAN, PTSN, or wireless network) may perform the sequence of instructions required to practice the invention in coordination with one another.
  • Computer system 2400 may transmit and receive messages, data, and instructions, including program, i.e., application code, through communication link 2415 and communication interface 2414. Received program code may be executed by processor 2407 as it is received, and/or stored in disk drive 2410, or other non-volatile storage for later execution.
  • In the foregoing specification, the invention has been described with reference to specific embodiments thereof. It will, however, be evident that various modifications and changes may be made thereto without departing from the broader spirit and scope of the invention. For example, the above-described process flows are described with reference to a particular ordering of process actions. However, the ordering of many of the described process actions may be changed without affecting the scope or operation of the invention. The specification and drawings are, accordingly, to be regarded in an illustrative rather than restrictive sense.

Claims (18)

1. A method for determining a set of messages to process in a computing system, comprising:
establishing a waiting period for a set of messages to be processed by a computing system;
using a processor to determine whether any messages arrive over a network to be processed during the pendency of the waiting period;
re-starting the waiting period to wait for new messages if any of the messages arrive during the pendency of the waiting period; and
selecting the existing set of messages to be processed by the computing system if there are no new messages that arrive during the pendency of the waiting period.
2. The method of claim 1 in which the messages are sorted based on a sequence identifier.
3. The method of claim 1 which is implemented using a resequencer.
4. The method of claim 1 in which the waiting period is extended.
5. The method of claim 4 in which the waiting period is extended based upon determining that a message in a sequence has not yet been received.
6. The method of claim 4 in which a threshold time limit is imposed to limit extension of the waiting period.
7. A computer program product that includes a computer readable medium, the computer readable medium comprising a plurality of computer instructions which, when executed by a processor, cause the processor to execute a process for determining a set of messages to process in a computing system, the process comprising:
establishing a waiting period for a set of messages to be processed by a computing system;
using a processor to determine whether any messages arrive over a network to be processed during the pendency of the waiting period;
re-starting the waiting period to wait for new messages if any of the messages arrive during the pendency of the waiting period; and
selecting the existing set of messages to be processed by the computing system if there are no new messages that arrive during the pendency of the waiting period.
8. The computer program product of claim 7 in which the messages are sorted based on a sequence identifier.
9. The computer program product of claim 7 which is implemented using a resequencer.
10. The computer program product of claim 7 in which the waiting period is extended.
11. The computer program product of claim 10 in which the waiting period is extended based upon determining that a message in a sequence has not yet been received.
12. The computer program product of claim 10 in which a threshold time limit is imposed to limit extension of the waiting period.
13. A system for determining a set of messages to process in a computing system, comprising:
means for establishing a waiting period for a set of messages to be processed by a computing system;
means for using a processor to determine whether any messages arrive over a network to be processed during the pendency of the waiting period;
means for re-starting the waiting period to wait for new messages if any of the messages arrive during the pendency of the waiting period; and
means for selecting the existing set of messages to be processed by the computing system if there are no new messages that arrive during the pendency of the waiting period.
14. The system of claim 13 in which the messages are sorted based on a sequence identifier.
15. The system of claim 13 in which the system is implemented as a resequencer.
16. The system of claim 13 in which the waiting period is extended.
17. The system of claim 16 in which the waiting period is extended based upon determining that a message in a sequence has not yet been received.
18. The system of claim 16 in which a threshold time limit is imposed to limit extension of the waiting period.
US12/418,585 2009-04-04 2009-04-04 Method and system for implementing a best efforts resequencer Active US9124448B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/418,585 US9124448B2 (en) 2009-04-04 2009-04-04 Method and system for implementing a best efforts resequencer

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/418,585 US9124448B2 (en) 2009-04-04 2009-04-04 Method and system for implementing a best efforts resequencer

Publications (2)

Publication Number Publication Date
US20100254389A1 true US20100254389A1 (en) 2010-10-07
US9124448B2 US9124448B2 (en) 2015-09-01

Family

ID=42826143

Family Applications (1)

Application Number Title Priority Date Filing Date
US12/418,585 Active US9124448B2 (en) 2009-04-04 2009-04-04 Method and system for implementing a best efforts resequencer

Country Status (1)

Country Link
US (1) US9124448B2 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130332415A1 (en) * 2012-06-07 2013-12-12 Wal-Mart Stores, Inc. Throttling mechanism
US20170063766A1 (en) * 2015-09-01 2017-03-02 Microsoft Technology Licensing, Llc Email Parking Lot
US9929989B2 (en) 2015-09-01 2018-03-27 Microsoft Technology Licensing, Llc Interoperability with legacy clients
US9977666B2 (en) 2015-09-01 2018-05-22 Microsoft Technology Licensing, Llc Add a new instance to a series
US9979682B2 (en) 2015-09-01 2018-05-22 Microsoft Technology Licensing, Llc Command propagation optimization
US10163076B2 (en) 2015-09-01 2018-12-25 Microsoft Technology Licensing, Llc Consensus scheduling for business calendar

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10469396B2 (en) * 2014-10-10 2019-11-05 Pegasystems, Inc. Event processing with enhanced throughput

Citations (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5502840A (en) * 1991-01-18 1996-03-26 Ncr Corporation Method and apparatus for advising a requesting process of a contention scheme to employ to access a shared resource
US5761659A (en) * 1996-02-29 1998-06-02 Sun Microsystems, Inc. Method, product, and structure for flexible range locking of read and write requests using shared and exclusive locks, flags, sub-locks, and counters
US5892954A (en) * 1995-07-07 1999-04-06 Sun Microsystems, Inc. Method and apparatus for refreshing file locks to minimize conflicting accesses to data files
US6253326B1 (en) * 1998-05-29 2001-06-26 Palm, Inc. Method and system for secure communications
US20020152299A1 (en) * 2001-01-22 2002-10-17 Traversat Bernard A. Reliable peer-to-peer connections
US20020165929A1 (en) * 2001-04-23 2002-11-07 Mclaughlin Richard J. Method and protocol for assuring synchronous access to critical facilitites in a multi-system cluster
US20030046032A1 (en) * 2001-08-31 2003-03-06 Puthiyedath Leena K. Method to measure the perceived quality of streaming media
US20030069902A1 (en) * 2001-10-05 2003-04-10 Ibm Method of maintaining data consistency in a loose transaction model
US20030072310A1 (en) * 2001-10-09 2003-04-17 Jean-Marc Reme System for transmitting sequences of packets between a server and a mobile terminal
US20030126514A1 (en) * 2001-12-27 2003-07-03 Microsoft Corporation Method and system for dynamically adjusting transmit and receive parameters for handling negative acknowledgments in reliable multicast
US6594774B1 (en) * 1999-09-07 2003-07-15 Microsoft Corporation Method and apparatus for monitoring computer system objects to improve system reliability
US6618373B1 (en) * 1999-11-10 2003-09-09 Cisco Technology, Inc. Method and system for reliable in-order distribution of events
US20030200459A1 (en) * 2002-04-18 2003-10-23 Seeman El-Azar Method and system for protecting documents while maintaining their editability
US20030214949A1 (en) * 2002-05-16 2003-11-20 Nadim Shaikli System for reordering sequenced based packets in a switching network
US20040003044A1 (en) * 2002-06-26 2004-01-01 Teoh Gary Chee Wooi Multi-channel media streaming and distribution system and associated methods
US6691194B1 (en) * 2000-11-28 2004-02-10 Emc Corporation Selective association of lock override procedures with queued multimodal lock
US20040028049A1 (en) * 2000-10-06 2004-02-12 Wan Ernest Yiu Cheong XML encoding scheme
US6693921B1 (en) * 1999-11-30 2004-02-17 Mindspeed Technologies, Inc. System for use of packet statistics in de-jitter delay adaption in a packet network
US20040064693A1 (en) * 2002-09-26 2004-04-01 Pabla Kuldipsingh A. Distributed indexing of identity information in a peer-to-peer network
US20040076178A1 (en) * 2001-03-29 2004-04-22 Botton Laurence Jon Protocol conversion
US6744765B1 (en) * 2000-08-24 2004-06-01 Sun Microsystems, Inc. Mechanism for completing messages in memory
US6751238B1 (en) * 2000-04-20 2004-06-15 Aztech Partners, Inc. Phase re-alignment of SONET/SDH network switch without pointer manipulation
US6775305B1 (en) * 1999-10-21 2004-08-10 Globespanvirata, Inc. System and method for combining multiple physical layer transport links
US6775235B2 (en) * 2000-12-29 2004-08-10 Ragula Systems Tools and techniques for directing packets over disparate networks
US20040186891A1 (en) * 2001-03-30 2004-09-23 Grand Central Communications, Inc. Apparatus and methods for correlating messages sent between services
US20040193993A1 (en) * 2003-03-28 2004-09-30 Pulakesh Roy Error detection for multi-stream communications
US20040230652A1 (en) * 2003-02-14 2004-11-18 Julio Estrada System and method for message sequencing in a collaborative work environment
US6832261B1 (en) * 2001-02-04 2004-12-14 Cisco Technology, Inc. Method and apparatus for distributed resequencing and reassembly of subdivided packets
US20040268062A1 (en) * 2000-11-28 2004-12-30 Adi Ofer Cooperative lock override procedure
US20050050109A1 (en) * 2001-01-31 2005-03-03 Oracle International Corporation Method and mechanism for dependency tracking at low granularity levels
US6868466B2 (en) * 2001-09-27 2005-03-15 Intel Corporation Apparatus and method for packet ingress interrupt moderation
US20050149526A1 (en) * 2002-06-27 2005-07-07 Bea Systems, Inc. Systems and methods for maintaining transactional persistence
US20050182856A1 (en) * 2003-12-22 2005-08-18 Mcknett Charles L. Systems and methods for creating time aware networks using independent absolute time values in network devices
US20050207437A1 (en) * 2004-03-16 2005-09-22 Snowshore Networks, Inc. Jitter buffer management
US20050209804A1 (en) * 2004-03-17 2005-09-22 International Business Machines Corporation Method and system for maintaining and examining timers for network connections
US20050216770A1 (en) * 2003-01-24 2005-09-29 Mistletoe Technologies, Inc. Intrusion detection system
US20050216669A1 (en) * 2002-12-20 2005-09-29 Data Domain, Inc. Efficient data storage system
US20050273516A1 (en) * 2004-05-21 2005-12-08 Bea Systems, Inc. Dynamic routing in a service oriented architecture
US20050273772A1 (en) * 1999-12-21 2005-12-08 Nicholas Matsakis Method and apparatus of streaming data transformation using code generator and translator
US20060010371A1 (en) * 2004-04-30 2006-01-12 Microsoft Corporation Packages that contain pre-paginated documents
US20060020911A1 (en) * 2004-07-26 2006-01-26 International Business Machines Corporation Managing long-lived resource locks in a multi-system mail infrastructure
US20060026378A1 (en) * 2004-07-27 2006-02-02 Somsubhra Sikdar Array machine context data memory
US20060088060A1 (en) * 2004-10-26 2006-04-27 Spirent Communications, Inc. Signature field in a latency measurement frame
US20060106941A1 (en) * 2004-11-17 2006-05-18 Pravin Singhal Performing message and transformation adapter functions in a network element on behalf of an application
US20060104279A1 (en) * 2004-11-18 2006-05-18 Fellman Ronald D Low-latency automatic repeat request packet recovery mechanism for media streams
US7080046B1 (en) * 2000-09-06 2006-07-18 Xanboo, Inc. Method for amortizing authentication overhead
US20060274727A1 (en) * 2005-06-06 2006-12-07 Microsoft Corporation Transport-neutral in-order delivery in a distributed system
US7149798B2 (en) * 2000-09-06 2006-12-12 Xanboo, Inc. Method and system for adaptively setting a data refresh interval
US20060282739A1 (en) * 2005-05-23 2006-12-14 Telefonaktiebolaget Lm Ericsson (Publ) Automatic Repeat Request (ARQ) Protocol Having Multiple Complementary Feedback Mechanisms
US20070028001A1 (en) * 2005-06-21 2007-02-01 Steve Phillips Applying quality of service to application messages in network elements
US20070039049A1 (en) * 2005-08-11 2007-02-15 Netmanage, Inc. Real-time activity monitoring and reporting
US20070168301A1 (en) * 2005-12-01 2007-07-19 Firestar Software, Inc. System and method for exchanging information among exchange applications
US20070177579A1 (en) * 2006-01-27 2007-08-02 Avaya Technology Llc Coding and packet distribution for alternative network paths in telecommunications networks
US20070192402A1 (en) * 2005-03-29 2007-08-16 Trx, Inc. System and method for automating workflow
US20070211640A1 (en) * 2006-03-10 2007-09-13 Mcdata Corporation Switch testing in a communications network
US20070214381A1 (en) * 2006-03-10 2007-09-13 Prabhakar Goyal System and method for automated recovery after an error in a batch processing system caused by malformatted or unsupported data
US20070214457A1 (en) * 2006-03-10 2007-09-13 Prabhakar Goyal System and method for automated recovery of data in a batch processing system
US7280524B2 (en) * 2000-01-12 2007-10-09 Nokia Corporation Receiver controlled isochronous transmission
US20070239881A1 (en) * 2006-04-05 2007-10-11 Agiledelta, Inc. Multiplexing binary encoding to facilitate compression
US20070266386A1 (en) * 2006-05-12 2007-11-15 Microsoft Corporation One-time initialization
US20070266170A1 (en) * 2006-05-11 2007-11-15 Mockett Gregory P Interactive, rich-media delivery over an ip network using synchronized unicast and multicast
US20080091679A1 (en) * 2006-09-29 2008-04-17 Eric Nels Herness Generic sequencing service for business integration
US7406523B1 (en) * 2000-11-21 2008-07-29 Microsoft Corporation Client-server communications system and method using a semi-connectionless protocol
US20080212588A1 (en) * 2002-01-05 2008-09-04 Lg Electronics Inc. System and method for avoiding stall using timer for high-speed downlink packet access system
US20080239972A1 (en) * 2007-03-30 2008-10-02 Verizon Services Corp. System and method of performance monitoring of multicast services with mobility support
US20080243847A1 (en) * 2007-04-02 2008-10-02 Microsoft Corporation Separating central locking services from distributed data fulfillment services in a storage system
US20080243579A1 (en) * 2006-01-19 2008-10-02 International Business Machines Corporation Methods and Apparatus for Coordinating and Selecting Protocols for Resources Acquisition from Multiple Resource Managers
US20080263549A1 (en) * 2003-05-01 2008-10-23 International Business Machines Corporation Managing locks and transactions
US7454696B2 (en) * 2004-04-09 2008-11-18 International Business Machines Corporation Method and apparatus for stream based markup language post-processing
US20090080406A1 (en) * 2007-09-21 2009-03-26 Thawatt Gopal System and Method for Multicast and Broadcast Synchronization in Wireless Access Systems
US7516166B2 (en) * 2004-12-16 2009-04-07 International Business Machines Corporation Resource loading
US20090116489A1 (en) * 2007-10-03 2009-05-07 William Turner Hanks Method and apparatus to reduce data loss within a link-aggregating and resequencing broadband transceiver
US20090117925A1 (en) * 2005-12-14 2009-05-07 Roberto De Bonis Method and System for Automatically Providing Contents From a Service Provider to a Mobile Telephonic Terminal
US20090193286A1 (en) * 2008-01-30 2009-07-30 Michael David Brooks Method and System for In-doubt Resolution in Transaction Processing
US7613110B1 (en) * 2000-05-17 2009-11-03 Cisco Technology, Inc. Combining multilink and IP per-destination load balancing over a multilink bundle
US20090300644A1 (en) * 2008-05-30 2009-12-03 International Business Machines Corporation Method to Detect a Deadlock Condition by Monitoring Firmware Inactivity During the System IPL Process
US7633944B1 (en) * 2006-05-12 2009-12-15 Juniper Networks, Inc. Managing timeouts for dynamic flow capture and monitoring of packet flows
US20090320030A1 (en) * 2008-06-24 2009-12-24 International Business Machines Corporation Method for management of timeouts
US20100023521A1 (en) * 2008-07-28 2010-01-28 International Business Machines Corporation System and method for managing locks across distributed computing nodes
US20100030911A1 (en) * 2008-07-30 2010-02-04 Voyant International Corporation Data transfer acceleration system and associated methods
US20100046519A1 (en) * 2008-08-22 2010-02-25 Cisco Technology, Inc. Re-Ordering Segments of a Large Number of Segmented Service Flows
US20100054268A1 (en) * 2006-03-28 2010-03-04 Integrated Device Technology, Inc. Method of Tracking Arrival Order of Packets into Plural Queues
US7715314B2 (en) * 2006-03-30 2010-05-11 Ntt Docomo, Inc. Communication terminal and retransmission control method
US20100161573A1 (en) * 2008-12-19 2010-06-24 Oracle International Corporation Time Limited Lock Ownership
US7746786B2 (en) * 2006-06-20 2010-06-29 Fujitsu Limited Retransmission control method and device
US7751404B2 (en) * 2006-10-06 2010-07-06 Broadcom Corporation Method, system, and computer program product for high performance bonding resequencing
US20100211682A1 (en) * 2009-02-19 2010-08-19 International Business Machines Corporation Method and system for exclusive access to shared resources in a database
US20100211829A1 (en) * 2009-02-18 2010-08-19 Vmware, Inc. Failure detection and recovery of host computers in a cluster
US20100218033A1 (en) * 2009-02-26 2010-08-26 Cisco Technology, Inc. Router synchronization
US7801145B2 (en) * 2007-03-06 2010-09-21 Xtera Communications Taiwan Co. Ltd. Method for transmitting network packets
US7814218B1 (en) * 2002-10-17 2010-10-12 Astute Networks, Inc. Multi-protocol and multi-format stateful processing
US8213311B2 (en) * 2005-10-12 2012-07-03 Brixham Solutions Ltd. Control plane to data plane binding
US8301940B2 (en) * 2004-01-10 2012-10-30 International Business Machines Corporation Method for monitoring data processing system availability
US8458517B1 (en) * 2010-04-30 2013-06-04 Amazon Technologies, Inc. System and method for checkpointing state in a distributed system

Patent Citations (95)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5502840A (en) * 1991-01-18 1996-03-26 Ncr Corporation Method and apparatus for advising a requesting process of a contention scheme to employ to access a shared resource
US5892954A (en) * 1995-07-07 1999-04-06 Sun Microsystems, Inc. Method and apparatus for refreshing file locks to minimize conflicting accesses to data files
US5761659A (en) * 1996-02-29 1998-06-02 Sun Microsystems, Inc. Method, product, and structure for flexible range locking of read and write requests using shared and exclusive locks, flags, sub-locks, and counters
US6253326B1 (en) * 1998-05-29 2001-06-26 Palm, Inc. Method and system for secure communications
US6594774B1 (en) * 1999-09-07 2003-07-15 Microsoft Corporation Method and apparatus for monitoring computer system objects to improve system reliability
US6775305B1 (en) * 1999-10-21 2004-08-10 Globespanvirata, Inc. System and method for combining multiple physical layer transport links
US6618373B1 (en) * 1999-11-10 2003-09-09 Cisco Technology, Inc. Method and system for reliable in-order distribution of events
US6693921B1 (en) * 1999-11-30 2004-02-17 Mindspeed Technologies, Inc. System for use of packet statistics in de-jitter delay adaption in a packet network
US20050273772A1 (en) * 1999-12-21 2005-12-08 Nicholas Matsakis Method and apparatus of streaming data transformation using code generator and translator
US7280524B2 (en) * 2000-01-12 2007-10-09 Nokia Corporation Receiver controlled isochronous transmission
US6751238B1 (en) * 2000-04-20 2004-06-15 Aztech Partners, Inc. Phase re-alignment of SONET/SDH network switch without pointer manipulation
US7613110B1 (en) * 2000-05-17 2009-11-03 Cisco Technology, Inc. Combining multilink and IP per-destination load balancing over a multilink bundle
US6744765B1 (en) * 2000-08-24 2004-06-01 Sun Microsystems, Inc. Mechanism for completing messages in memory
US7080046B1 (en) * 2000-09-06 2006-07-18 Xanboo, Inc. Method for amortizing authentication overhead
US7149798B2 (en) * 2000-09-06 2006-12-12 Xanboo, Inc. Method and system for adaptively setting a data refresh interval
US20040028049A1 (en) * 2000-10-06 2004-02-12 Wan Ernest Yiu Cheong XML encoding scheme
US7406523B1 (en) * 2000-11-21 2008-07-29 Microsoft Corporation Client-server communications system and method using a semi-connectionless protocol
US20040268062A1 (en) * 2000-11-28 2004-12-30 Adi Ofer Cooperative lock override procedure
US6691194B1 (en) * 2000-11-28 2004-02-10 Emc Corporation Selective association of lock override procedures with queued multimodal lock
US6775235B2 (en) * 2000-12-29 2004-08-10 Ragula Systems Tools and techniques for directing packets over disparate networks
US20020152299A1 (en) * 2001-01-22 2002-10-17 Traversat Bernard A. Reliable peer-to-peer connections
US20050050109A1 (en) * 2001-01-31 2005-03-03 Oracle International Corporation Method and mechanism for dependency tracking at low granularity levels
US6832261B1 (en) * 2001-02-04 2004-12-14 Cisco Technology, Inc. Method and apparatus for distributed resequencing and reassembly of subdivided packets
US20040076178A1 (en) * 2001-03-29 2004-04-22 Botton Laurence Jon Protocol conversion
US20040186891A1 (en) * 2001-03-30 2004-09-23 Grand Central Communications, Inc. Apparatus and methods for correlating messages sent between services
US20020165929A1 (en) * 2001-04-23 2002-11-07 Mclaughlin Richard J. Method and protocol for assuring synchronous access to critical facilitites in a multi-system cluster
US20030046032A1 (en) * 2001-08-31 2003-03-06 Puthiyedath Leena K. Method to measure the perceived quality of streaming media
US6868466B2 (en) * 2001-09-27 2005-03-15 Intel Corporation Apparatus and method for packet ingress interrupt moderation
US20030069902A1 (en) * 2001-10-05 2003-04-10 Ibm Method of maintaining data consistency in a loose transaction model
US20030072310A1 (en) * 2001-10-09 2003-04-17 Jean-Marc Reme System for transmitting sequences of packets between a server and a mobile terminal
US7554920B2 (en) * 2001-12-27 2009-06-30 Microsoft Corporation Method and system for dynamically adjusting transmit and receive parameters for handling negative acknowledgments in reliable multicast
US20030126514A1 (en) * 2001-12-27 2003-07-03 Microsoft Corporation Method and system for dynamically adjusting transmit and receive parameters for handling negative acknowledgments in reliable multicast
US20080212588A1 (en) * 2002-01-05 2008-09-04 Lg Electronics Inc. System and method for avoiding stall using timer for high-speed downlink packet access system
US20030200459A1 (en) * 2002-04-18 2003-10-23 Seeman El-Azar Method and system for protecting documents while maintaining their editability
US20030214949A1 (en) * 2002-05-16 2003-11-20 Nadim Shaikli System for reordering sequenced based packets in a switching network
US20040003044A1 (en) * 2002-06-26 2004-01-01 Teoh Gary Chee Wooi Multi-channel media streaming and distribution system and associated methods
US20050149526A1 (en) * 2002-06-27 2005-07-07 Bea Systems, Inc. Systems and methods for maintaining transactional persistence
US20040064693A1 (en) * 2002-09-26 2004-04-01 Pabla Kuldipsingh A. Distributed indexing of identity information in a peer-to-peer network
US7814218B1 (en) * 2002-10-17 2010-10-12 Astute Networks, Inc. Multi-protocol and multi-format stateful processing
US20050216669A1 (en) * 2002-12-20 2005-09-29 Data Domain, Inc. Efficient data storage system
US20050216770A1 (en) * 2003-01-24 2005-09-29 Mistletoe Technologies, Inc. Intrusion detection system
US20040230652A1 (en) * 2003-02-14 2004-11-18 Julio Estrada System and method for message sequencing in a collaborative work environment
US20040193993A1 (en) * 2003-03-28 2004-09-30 Pulakesh Roy Error detection for multi-stream communications
US20080263549A1 (en) * 2003-05-01 2008-10-23 International Business Machines Corporation Managing locks and transactions
US20050182856A1 (en) * 2003-12-22 2005-08-18 Mcknett Charles L. Systems and methods for creating time aware networks using independent absolute time values in network devices
US8301940B2 (en) * 2004-01-10 2012-10-30 International Business Machines Corporation Method for monitoring data processing system availability
US20050207437A1 (en) * 2004-03-16 2005-09-22 Snowshore Networks, Inc. Jitter buffer management
US20050209804A1 (en) * 2004-03-17 2005-09-22 International Business Machines Corporation Method and system for maintaining and examining timers for network connections
US7454696B2 (en) * 2004-04-09 2008-11-18 International Business Machines Corporation Method and apparatus for stream based markup language post-processing
US20060010371A1 (en) * 2004-04-30 2006-01-12 Microsoft Corporation Packages that contain pre-paginated documents
US20050273516A1 (en) * 2004-05-21 2005-12-08 Bea Systems, Inc. Dynamic routing in a service oriented architecture
US20060020911A1 (en) * 2004-07-26 2006-01-26 International Business Machines Corporation Managing long-lived resource locks in a multi-system mail infrastructure
US20060026378A1 (en) * 2004-07-27 2006-02-02 Somsubhra Sikdar Array machine context data memory
US20060088060A1 (en) * 2004-10-26 2006-04-27 Spirent Communications, Inc. Signature field in a latency measurement frame
US20060106941A1 (en) * 2004-11-17 2006-05-18 Pravin Singhal Performing message and transformation adapter functions in a network element on behalf of an application
US20060104279A1 (en) * 2004-11-18 2006-05-18 Fellman Ronald D Low-latency automatic repeat request packet recovery mechanism for media streams
US7516166B2 (en) * 2004-12-16 2009-04-07 International Business Machines Corporation Resource loading
US20070192402A1 (en) * 2005-03-29 2007-08-16 Trx, Inc. System and method for automating workflow
US20060282739A1 (en) * 2005-05-23 2006-12-14 Telefonaktiebolaget Lm Ericsson (Publ) Automatic Repeat Request (ARQ) Protocol Having Multiple Complementary Feedback Mechanisms
US20060274727A1 (en) * 2005-06-06 2006-12-07 Microsoft Corporation Transport-neutral in-order delivery in a distributed system
US20070028001A1 (en) * 2005-06-21 2007-02-01 Steve Phillips Applying quality of service to application messages in network elements
US20070039049A1 (en) * 2005-08-11 2007-02-15 Netmanage, Inc. Real-time activity monitoring and reporting
US8213311B2 (en) * 2005-10-12 2012-07-03 Brixham Solutions Ltd. Control plane to data plane binding
US20070168301A1 (en) * 2005-12-01 2007-07-19 Firestar Software, Inc. System and method for exchanging information among exchange applications
US20090117925A1 (en) * 2005-12-14 2009-05-07 Roberto De Bonis Method and System for Automatically Providing Contents From a Service Provider to a Mobile Telephonic Terminal
US20080243579A1 (en) * 2006-01-19 2008-10-02 International Business Machines Corporation Methods and Apparatus for Coordinating and Selecting Protocols for Resources Acquisition from Multiple Resource Managers
US20070177579A1 (en) * 2006-01-27 2007-08-02 Avaya Technology Llc Coding and packet distribution for alternative network paths in telecommunications networks
US20070214457A1 (en) * 2006-03-10 2007-09-13 Prabhakar Goyal System and method for automated recovery of data in a batch processing system
US20070214381A1 (en) * 2006-03-10 2007-09-13 Prabhakar Goyal System and method for automated recovery after an error in a batch processing system caused by malformatted or unsupported data
US20070211640A1 (en) * 2006-03-10 2007-09-13 Mcdata Corporation Switch testing in a communications network
US20100054268A1 (en) * 2006-03-28 2010-03-04 Integrated Device Technology, Inc. Method of Tracking Arrival Order of Packets into Plural Queues
US7715314B2 (en) * 2006-03-30 2010-05-11 Ntt Docomo, Inc. Communication terminal and retransmission control method
US20070239881A1 (en) * 2006-04-05 2007-10-11 Agiledelta, Inc. Multiplexing binary encoding to facilitate compression
US20070266170A1 (en) * 2006-05-11 2007-11-15 Mockett Gregory P Interactive, rich-media delivery over an ip network using synchronized unicast and multicast
US20070266386A1 (en) * 2006-05-12 2007-11-15 Microsoft Corporation One-time initialization
US7633944B1 (en) * 2006-05-12 2009-12-15 Juniper Networks, Inc. Managing timeouts for dynamic flow capture and monitoring of packet flows
US7746786B2 (en) * 2006-06-20 2010-06-29 Fujitsu Limited Retransmission control method and device
US20080091679A1 (en) * 2006-09-29 2008-04-17 Eric Nels Herness Generic sequencing service for business integration
US7751404B2 (en) * 2006-10-06 2010-07-06 Broadcom Corporation Method, system, and computer program product for high performance bonding resequencing
US7801145B2 (en) * 2007-03-06 2010-09-21 Xtera Communications Taiwan Co. Ltd. Method for transmitting network packets
US20080239972A1 (en) * 2007-03-30 2008-10-02 Verizon Services Corp. System and method of performance monitoring of multicast services with mobility support
US20080243847A1 (en) * 2007-04-02 2008-10-02 Microsoft Corporation Separating central locking services from distributed data fulfillment services in a storage system
US20090080406A1 (en) * 2007-09-21 2009-03-26 Thawatt Gopal System and Method for Multicast and Broadcast Synchronization in Wireless Access Systems
US20090116489A1 (en) * 2007-10-03 2009-05-07 William Turner Hanks Method and apparatus to reduce data loss within a link-aggregating and resequencing broadband transceiver
US20090193286A1 (en) * 2008-01-30 2009-07-30 Michael David Brooks Method and System for In-doubt Resolution in Transaction Processing
US20090300644A1 (en) * 2008-05-30 2009-12-03 International Business Machines Corporation Method to Detect a Deadlock Condition by Monitoring Firmware Inactivity During the System IPL Process
US20090320030A1 (en) * 2008-06-24 2009-12-24 International Business Machines Corporation Method for management of timeouts
US20100023521A1 (en) * 2008-07-28 2010-01-28 International Business Machines Corporation System and method for managing locks across distributed computing nodes
US20100030911A1 (en) * 2008-07-30 2010-02-04 Voyant International Corporation Data transfer acceleration system and associated methods
US20100046519A1 (en) * 2008-08-22 2010-02-25 Cisco Technology, Inc. Re-Ordering Segments of a Large Number of Segmented Service Flows
US20100161573A1 (en) * 2008-12-19 2010-06-24 Oracle International Corporation Time Limited Lock Ownership
US20100211829A1 (en) * 2009-02-18 2010-08-19 Vmware, Inc. Failure detection and recovery of host computers in a cluster
US20100211682A1 (en) * 2009-02-19 2010-08-19 International Business Machines Corporation Method and system for exclusive access to shared resources in a database
US20100218033A1 (en) * 2009-02-26 2010-08-26 Cisco Technology, Inc. Router synchronization
US8458517B1 (en) * 2010-04-30 2013-06-04 Amazon Technologies, Inc. System and method for checkpointing state in a distributed system

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130332415A1 (en) * 2012-06-07 2013-12-12 Wal-Mart Stores, Inc. Throttling mechanism
US9146978B2 (en) * 2012-06-07 2015-09-29 Wal-Mart Stores, Inc. Throttling mechanism
US20170063766A1 (en) * 2015-09-01 2017-03-02 Microsoft Technology Licensing, Llc Email Parking Lot
US9882854B2 (en) * 2015-09-01 2018-01-30 Microsoft Technology Licensing, Llc Email parking lot
US9929989B2 (en) 2015-09-01 2018-03-27 Microsoft Technology Licensing, Llc Interoperability with legacy clients
US9977666B2 (en) 2015-09-01 2018-05-22 Microsoft Technology Licensing, Llc Add a new instance to a series
US9979682B2 (en) 2015-09-01 2018-05-22 Microsoft Technology Licensing, Llc Command propagation optimization
US10163076B2 (en) 2015-09-01 2018-12-25 Microsoft Technology Licensing, Llc Consensus scheduling for business calendar
US10509640B2 (en) 2015-09-01 2019-12-17 Microsoft Technology Licensing, Llc Add a new instance to a series

Also Published As

Publication number Publication date
US9124448B2 (en) 2015-09-01

Similar Documents

Publication Publication Date Title
US8661083B2 (en) Method and system for implementing sequence start and increment values for a resequencer
US9124448B2 (en) Method and system for implementing a best efforts resequencer
US8578218B2 (en) Method and system for implementing a scalable, high-performance, fault-tolerant locking mechanism in a multi-process environment
US8903925B2 (en) Scheduled messages in a scalable messaging system
US8254391B2 (en) Method and system for performing blocking of messages on errors in message stream
JP5988621B2 (en) Scalability of high-load business processes
US7991847B2 (en) Method and system for managing the order of messages
US10185605B2 (en) In-order message processing with message-dependency handling
US7640263B2 (en) Queued system event notification and maintenance
US20150040140A1 (en) Consuming Ordered Streams of Messages in a Message Oriented Middleware
JP6217644B2 (en) Rule distribution server, event processing system, method and program
US20180300140A1 (en) Information processing apparatus, information processing method, and non-transitory computer-readable storage medium
US20220222266A1 (en) Monitoring and alerting platform for extract, transform, and load jobs
CN109218385B (en) Method and device for processing data
KR101612682B1 (en) Method, system and computer program product for sequencing asynchronous messages in a distributed and parallel environment
US8046780B1 (en) Efficient processing of assets with multiple data feeds
US11221883B2 (en) Hierarchical scheduler
CN113238843A (en) Task execution method, device, equipment and storage medium
EP2693337B1 (en) Method, system and computer program products for sequencing asynchronous messages in a distributed and parallel environment
US8903767B2 (en) Method, system and computer program product for sequencing asynchronous messages in a distributed and parallel environment
US9384047B2 (en) Event-driven computation
US20100254388A1 (en) Method and system for applying expressions on message payloads for a resequencer
US10768902B2 (en) Actor model programming
US11366794B1 (en) Data store item count service
US20150271253A1 (en) High performance erp system ensuring desired delivery sequencing of output messages

Legal Events

Date Code Title Description
AS Assignment

Owner name: ORACLE INTERNATIONAL CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SINGH, ATUL;JOSHI, MANEESH;PATEL, ASHWIN;AND OTHERS;SIGNING DATES FROM 20090209 TO 20090402;REEL/FRAME:022505/0263

STCF Information on status: patent grant

Free format text: PATENTED CASE

CC Certificate of correction
MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8