US9489442B1 - Prevention of circular event publication in publish/subscribe model using path vector - Google Patents

Prevention of circular event publication in publish/subscribe model using path vector Download PDF

Info

Publication number
US9489442B1
US9489442B1 US14/172,196 US201414172196A US9489442B1 US 9489442 B1 US9489442 B1 US 9489442B1 US 201414172196 A US201414172196 A US 201414172196A US 9489442 B1 US9489442 B1 US 9489442B1
Authority
US
United States
Prior art keywords
event
entity
change
value
path vector
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.)
Active, expires
Application number
US14/172,196
Inventor
Sreejith Prabhakaran Nair
Swati Bhatia
Sachin G. Totale
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.)
Open Text Corp
Original Assignee
EMC 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 EMC Corp filed Critical EMC Corp
Priority to US14/172,196 priority Critical patent/US9489442B1/en
Assigned to EMC CORPORATION reassignment EMC CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BHATIA, SWATI, PRABHAKARAN NAIR, SREEJITH, TOTALE, SACHIN G.
Assigned to CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT reassignment CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT SECURITY AGREEMENT Assignors: ASAP SOFTWARE EXPRESS, INC., AVENTAIL LLC, CREDANT TECHNOLOGIES, INC., DELL INTERNATIONAL L.L.C., DELL MARKETING L.P., DELL PRODUCTS L.P., DELL SOFTWARE INC., DELL SYSTEMS CORPORATION, DELL USA L.P., EMC CORPORATION, EMC IP Holding Company LLC, FORCE10 NETWORKS, INC., MAGINATICS LLC, MOZY, INC., SCALEIO LLC, SPANNING CLOUD APPS LLC, WYSE TECHNOLOGY L.L.C.
Assigned to THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT reassignment THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT SECURITY AGREEMENT Assignors: ASAP SOFTWARE EXPRESS, INC., AVENTAIL LLC, CREDANT TECHNOLOGIES, INC., DELL INTERNATIONAL L.L.C., DELL MARKETING L.P., DELL PRODUCTS L.P., DELL SOFTWARE INC., DELL SYSTEMS CORPORATION, DELL USA L.P., EMC CORPORATION, EMC IP Holding Company LLC, FORCE10 NETWORKS, INC., MAGINATICS LLC, MOZY, INC., SCALEIO LLC, SPANNING CLOUD APPS LLC, WYSE TECHNOLOGY L.L.C.
Priority to US15/288,854 priority patent/US10242083B2/en
Application granted granted Critical
Publication of US9489442B1 publication Critical patent/US9489442B1/en
Assigned to EMC CORPORATION, AS GRANTOR reassignment EMC CORPORATION, AS GRANTOR PATENT RELEASE (REEL:40134/FRAME:0001) Assignors: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Assigned to EMC CORPORATION reassignment EMC CORPORATION RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Assigned to OPEN TEXT CORPORATION reassignment OPEN TEXT CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: EMC CORPORATION
Assigned to DELL INTERNATIONAL L.L.C., DELL PRODUCTS L.P., DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.), DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.), DELL USA L.P., EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.), DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.), EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC), SCALEIO LLC reassignment DELL INTERNATIONAL L.L.C. RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001) Assignors: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Assigned to BARCLAYS BANK PLC reassignment BARCLAYS BANK PLC SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: OPEN TEXT CORPORATION
Assigned to BARCLAYS BANK PLC reassignment BARCLAYS BANK PLC SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: OPEN TEXT CORPORATION
Assigned to BARCLAYS BANK PLC reassignment BARCLAYS BANK PLC SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: OPEN TEXT CORPORATION
Assigned to THE BANK OF NEW YORK MELLON reassignment THE BANK OF NEW YORK MELLON SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: OPEN TEXT CORPORATION
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • G06F17/30578
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Definitions

  • a publish/subscribe model supports loosely coupled asynchronous communication between information producers and consumers. Typically, the producer and consumer need not necessarily know of the existence of each other.
  • a system that uses a publish/subscribe model to facilitate asynchronous communication between entities typically includes one or more producers and several consumers.
  • an information producer e.g., publishes events
  • an information consumer e.g., consumes events
  • a circular event publication issue might be seen.
  • a component of an application user interface or other display page might be configured to publish a “change” event upon occurrence of an update to an attribute or other data value of the component.
  • consumer entities may have “subscribed” to the change event, so that they are notified whenever a value of the entity that they are interested in changes.
  • a circular event publication may occur, for example, if the component that published the change event is also a consumer of the change event, or subscribes to another event published by another component directly or indirectly in response to the change event.
  • FIG. 1 is a block diagram illustrating an example embodiment of a system that employs a publish/subscribe model.
  • FIG. 2 is a block diagram illustrating an example embodiment of a system in which a publish/subscribe model, e.g., as shown in FIG. 1 , may be implemented.
  • FIG. 3 is a block diagram illustrating an example of a circular event chain.
  • FIG. 4 is a flow chart illustrating an example embodiment of a process to consume a change event.
  • FIG. 5 is a flow chart illustrating an example embodiment of a process to publish a change event.
  • the invention can be implemented in numerous ways, including as a process; a system; a computer program product embodied on a computer readable storage medium; and/or a processor, such as a processor configured to execute instructions stored on and/or provided by a memory coupled to the processor.
  • a component such as a processor or a memory described as being configured to perform a task may be implemented as a general component that is temporarily configured to perform the task at a given time or a specific component that is manufactured to perform the task.
  • the term ‘processor’ refers to one or more devices, circuits, and/or processing cores configured to process data, such as computer program instructions.
  • an event path vector to prevent circular event publication in a publish/subscribe model is disclosed.
  • an entity that changes e.g., a value of and/or associated with the entity changes
  • an entity that consumes such an event first checks to determine if its own identifier is present already (and/or more than a prescribed number of times) in an event path vector associated with the event. If so, the entity may drop the event. If not, the entity may consume and respond normally to the event, e.g., by updating itself using an evaluation function implicated by the event.
  • FIG. 1 is a block diagram illustrating an example embodiment of a system that employs a publish/subscribe model.
  • the system includes a plurality of entities 1 to n, represented in FIG. 1 by entities 102 and 104 .
  • An “entity” may be any discrete unit that has one or more data values and is capable of providing information (e.g., to other entities), consuming information, or both. Examples of an “entity” include without limitation a software object; a software module; and a defined component of a display page.
  • each of one or more of the entities 1 to n may be an information provider (e.g., publish events), an information consumer (e.g., subscribes to and consumes events), or both.
  • Events published by information providers are provide via an event bus 106 .
  • the event bus 106 may be a software bus and/or other structures and/or protocols to enable entities such as entities 102 and 104 to publish (send) and/or consume (receive) events.
  • a value of (or associated with) entity 102 has changed, resulting in the entity 102 publishing a change event 108 having an associated event payload 110 .
  • the event payload is stored in and/or made available to event subscribers via a local data cache 112 .
  • the event 108 and associated payload 110 are consumed by entity 104 in the example shown.
  • the entity 104 may have subscribed to receive change events associated with entity 102 .
  • entity 104 may be configured to subscribe to receive change events associated with entity 102 is the case in which a value of entity 104 and/or a value associated therewith depends on a value of and/or associated with entity 102 , e.g., based on an evaluation function.
  • entity 102 and entity 104 of FIG. 1 are configured to include in and/or otherwise associate with an event published, for example, by one of the entities, such as a change event, an identifier associated with the entity that publishes the event.
  • entity 102 may include in the payload 110 an event path vector that includes an identifier associated with entity 102 .
  • entity 102 if the value of entity 102 changed in response to an event received via event bus 106 and the latter event already had an event path vector associated with it, then the entity 102 would add its identifier to the vector, e.g., by appending its identifier to the identifiers included previously in the vector, and would include the updated vector in the payload 110 of change event 108 .
  • a consuming entity such as entity 104 in the example shown in FIG. 1 , would check the event payload to determine whether its own identifier is included already (or, in some embodiments, more than a prescribed number of times) an event path vector associated with the event. If so, the event is dropped; if not, the event is consumed and acted on.
  • FIG. 2 is a block diagram illustrating an example embodiment of a system in which a publish/subscribe model, e.g., as shown in FIG. 1 , may be implemented.
  • the system 202 includes a developer-composed application 204 running on an application framework 206 provided using an operating system 208 .
  • Examples of a developer-composed application include, without limitation, applications developed using a developer tool, such as the EMC® Documentum® xCP solution development platform.
  • a developer tool enables a developer to create an application to run on application framework 206 , including for example by creating one or more application user interface pages each comprising a plurality of page components, and specifying for each its behavior, variables (e.g., values), etc., and the relationship between such components.
  • the application framework 206 may enable communication between such page components via an event bus, such as event bus 106 of FIG. 1 .
  • an evaluation function or other logic may be specified by the developer to cause application code to be generated such that a page component may publish a change event, e.g., like entity 102 of FIG. 1 , upon occurrence of a change in its value and/or a value otherwise associated with the component.
  • a page component may be designed using the developer tool to consume, like entity 104 of FIG. 1 , a change event associated with one or more other entities, such as entities on which a value of the subscribing component may depend, for example based on an evaluation function or other relationship specified by the developer to be used to determine a value for the subscribing component.
  • the application framework 206 of FIG. 2 may be configured to implement a publish/subscribe model to facilitate asynchronous communication among/between entities.
  • the application framework 206 may be configured to provide an event bus, such as event bus 106 of FIG. 1 , and/or a local data cache to facilitate storage and transfer of event payloads, such as local data cache 112 of FIG. 1 .
  • the application framework 206 may be configured to ensure that an event path vector, as disclosed herein, is associated with a change event, and/or to ensure that one or more subscribing entities consume and/or act on change events only if an identifier associated with the subscribing entity does not already appear in an event path vector associated with the event (or, in some embodiments, does not occur more than a prescribed number of times).
  • application code generated to provide the entities themselves may create, populate, and/or check and respond to information found in event path vectors as disclosed herein.
  • an event path vector is provided and/or used as disclosed herein in contexts other than applications composed using a developer tool and/or in contexts other than systems such as system 202 of FIG. 2 .
  • FIG. 3 is a block diagram illustrating an example of a circular event chain.
  • a circular event chain may occur in architectures such as those shown in FIGS. 1 and 2 when an event path vector as disclosed herein is not used.
  • a user may initially provide user input for the value of x, e.g., a characters entered by the user into a text field, and the evaluation function may be intended to append a period or other content to the text entered by the user.
  • an event path vector to avoid circular event publication such as that shown in FIG. 3 .
  • the entity ‘x’ (or some other service, process, or entity) would evaluate the event path vector, recognize that an identifier associated with ‘x’ is already included, and based on that determination would cause the entity ‘x’ to drop (i.e., not act on) the change event, thereby preventing the a circular event chain.
  • FIG. 4 is a flow chart illustrating an example embodiment of a process to consume a change event.
  • the process of FIG. 4 may be implemented by an event consumer, such as entity 104 of FIG. 1 and/or a component of an application user interface page of a developer-composed application, such as application 204 of FIG. 2 , and/or may be facilitated in whole or in part by an application framework such as application framework 206 of FIG. 2 .
  • the process of FIG. 4 is an example of the use by an event consumer of an event path vector as disclosed herein to avoid circular event publication, such as the circular publication shown in FIG. 3 .
  • an indication is received, e.g., at an entity, that a monitored value has changed ( 402 ).
  • a change event published by another entity and which the receiving entity has subscribed to receive may be received.
  • An event path vector associated with the event is checked ( 404 ) to determine whether the receiving entity's own identifier is included already (or, in some embodiments, more than a prescribed number of times) in the event path vector. If the receiving entity's own identifier is determined to be included already (or, in some embodiments, more than a prescribed number of times) in the event path vector ( 406 ), the event is dropped without being acting on further by the receiving entity. If not ( 406 ), the receiving entity acts on the event ( 408 ), for example by evaluating a function to update its own value based on the event and/or an associated payload.
  • FIG. 5 is a flow chart illustrating an example embodiment of a process to publish a change event.
  • the process of FIG. 5 may be implemented by an event publisher, such as entity 102 of FIG. 1 and/or a component of an application user interface page of a developer-composed application, such as application 204 of FIG. 2 , and/or may be facilitated in whole or in part by an application framework such as application framework 206 of FIG. 2 .
  • the process of FIG. 5 is an example of the use by an event publisher of an event path vector as disclosed herein to enable circular event publication, such as the circular publication shown in FIG. 3 , to be avoided.
  • a change in an entity's own value (and/or a value associated therewith) is detected ( 502 ).
  • an entity's value may be changed by or in response to a change event, e.g., a change event is received indicating a change in a value on which the value of the entity depends, such as an argument in an evaluation function associated with the entity, or externally, e.g., based on user input.
  • a change event is received indicating a change in a value on which the value of the entity depends, such as an argument in an evaluation function associated with the entity, or externally, e.g., based on user input.
  • an application user interface or other page component may detect that an attribute, variable, or other data value of the component has changed. If the detected change is not from an external source, e.g., it is the result of a function being evaluated ( 504 ), the entity includes its own identifier in an event path vector associated with the detected change ( 506 ) and publishes a change event ( 508 ), including the event path vector in the payload (or otherwise).
  • the current entity will add its identifier to the preexisting event path vector ( 506 ). If no prior event path vector exists, in some embodiments the entity will create an instance of an event path vector and include its own identifier as an initial entry ( 506 ). In some embodiments, if the detected change in the entity's own value was from an external source, such as user input into an input field associated with an application user interface page component ( 504 ), the change event is published ( 508 ) without including the publishing component's identifier in an event path vector associated with the event.
  • each of the entities ‘x’, ‘z’, ‘b’, and ‘c’ performs the process of FIG. 4 with respect to consuming change events, e.g., with respect to events indicating a change in a dependent value on which a value of the entity depends, and performs the process of FIG. 5 with respect to publishing change events, e.g., to inform other entities of detected changes in its own value.
  • the subsequent processing using techniques disclosed herein, would be as follows:
  • event path vectors as disclosed herein may prevent circular event publication in systems in which a publish/subscribe model is used.

Abstract

Techniques to prevent circular event publication are disclosed. In various embodiments, a change in an entity's own value is detected. A change event is published based at least in part on the detected change, including by associating with the change event an event path vector that includes an identifier associated with the entity.

Description

BACKGROUND OF THE INVENTION
A publish/subscribe model supports loosely coupled asynchronous communication between information producers and consumers. Typically, the producer and consumer need not necessarily know of the existence of each other. A system that uses a publish/subscribe model to facilitate asynchronous communication between entities typically includes one or more producers and several consumers.
In some cases, an information producer (e.g., publishes events) can be an information consumer (e.g., consumes events) as well. In such scenarios, a circular event publication issue might be seen.
For example, a component of an application user interface or other display page might be configured to publish a “change” event upon occurrence of an update to an attribute or other data value of the component. There may be other entities within that system—typically the consumer entities—that may be interested in these changes. For example, such consumer entities may have “subscribed” to the change event, so that they are notified whenever a value of the entity that they are interested in changes. A circular event publication may occur, for example, if the component that published the change event is also a consumer of the change event, or subscribes to another event published by another component directly or indirectly in response to the change event.
BRIEF DESCRIPTION OF THE DRAWINGS
Various embodiments of the invention are disclosed in the following detailed description and the accompanying drawings.
FIG. 1 is a block diagram illustrating an example embodiment of a system that employs a publish/subscribe model.
FIG. 2 is a block diagram illustrating an example embodiment of a system in which a publish/subscribe model, e.g., as shown in FIG. 1, may be implemented.
FIG. 3 is a block diagram illustrating an example of a circular event chain.
FIG. 4 is a flow chart illustrating an example embodiment of a process to consume a change event.
FIG. 5 is a flow chart illustrating an example embodiment of a process to publish a change event.
DETAILED DESCRIPTION
The invention can be implemented in numerous ways, including as a process; a system; a computer program product embodied on a computer readable storage medium; and/or a processor, such as a processor configured to execute instructions stored on and/or provided by a memory coupled to the processor. In general, the order of the steps of disclosed processes may be altered within the scope of the invention. Unless stated otherwise, a component such as a processor or a memory described as being configured to perform a task may be implemented as a general component that is temporarily configured to perform the task at a given time or a specific component that is manufactured to perform the task. As used herein, the term ‘processor’ refers to one or more devices, circuits, and/or processing cores configured to process data, such as computer program instructions.
A detailed description of one or more embodiments of the invention is provided below along with accompanying figures that illustrate the invention. The invention is described in connection with such embodiments, but the invention is not limited to any embodiment. The scope of the invention is limited only by the claims and the invention encompasses numerous alternatives, modifications and equivalents. Numerous specific details are set forth in the following description in order to provide a thorough understanding of the invention. These details are provided for the purpose of example and the invention may be practiced according to the claims without some or all of these specific details.
An event path vector to prevent circular event publication in a publish/subscribe model is disclosed. In various embodiments, in at least certain prescribed circumstances an entity that changes (e.g., a value of and/or associated with the entity changes) includes an identifier associated with the entity in an “event path vector” or other data structure and/or payload of a change event published by the entity in response to the change. In some embodiments, an entity that consumes such an event first checks to determine if its own identifier is present already (and/or more than a prescribed number of times) in an event path vector associated with the event. If so, the entity may drop the event. If not, the entity may consume and respond normally to the event, e.g., by updating itself using an evaluation function implicated by the event.
FIG. 1 is a block diagram illustrating an example embodiment of a system that employs a publish/subscribe model. In the example shown, the system includes a plurality of entities 1 to n, represented in FIG. 1 by entities 102 and 104. An “entity” may be any discrete unit that has one or more data values and is capable of providing information (e.g., to other entities), consuming information, or both. Examples of an “entity” include without limitation a software object; a software module; and a defined component of a display page. In various embodiments, each of one or more of the entities 1 to n, may be an information provider (e.g., publish events), an information consumer (e.g., subscribes to and consumes events), or both. Events published by information providers are provide via an event bus 106. In various embodiments, the event bus 106 may be a software bus and/or other structures and/or protocols to enable entities such as entities 102 and 104 to publish (send) and/or consume (receive) events. In the example shown, a value of (or associated with) entity 102 has changed, resulting in the entity 102 publishing a change event 108 having an associated event payload 110. In the example shown, the event payload is stored in and/or made available to event subscribers via a local data cache 112. The event 108 and associated payload 110 are consumed by entity 104 in the example shown. For example, the entity 104 may have subscribed to receive change events associated with entity 102. One example of an instance in which entity 104 may be configured to subscribe to receive change events associated with entity 102 is the case in which a value of entity 104 and/or a value associated therewith depends on a value of and/or associated with entity 102, e.g., based on an evaluation function.
An event path vector to prevent circular event publication is disclosed. In various embodiments, entities such as entity 102 and entity 104 of FIG. 1, and/or a service or other entity associated with such entities, is configured to include in and/or otherwise associate with an event published, for example, by one of the entities, such as a change event, an identifier associated with the entity that publishes the event. For example, in the example shown in FIG. 1, the entity 102 may include in the payload 110 an event path vector that includes an identifier associated with entity 102. In some embodiments, if the value of entity 102 changed in response to an event received via event bus 106 and the latter event already had an event path vector associated with it, then the entity 102 would add its identifier to the vector, e.g., by appending its identifier to the identifiers included previously in the vector, and would include the updated vector in the payload 110 of change event 108. In some embodiments, upon receiving the event 108, a consuming entity, such as entity 104 in the example shown in FIG. 1, would check the event payload to determine whether its own identifier is included already (or, in some embodiments, more than a prescribed number of times) an event path vector associated with the event. If so, the event is dropped; if not, the event is consumed and acted on.
FIG. 2 is a block diagram illustrating an example embodiment of a system in which a publish/subscribe model, e.g., as shown in FIG. 1, may be implemented. In the example shown, the system 202 includes a developer-composed application 204 running on an application framework 206 provided using an operating system 208. Examples of a developer-composed application include, without limitation, applications developed using a developer tool, such as the EMC® Documentum® xCP solution development platform. In various embodiments, a developer tool enables a developer to create an application to run on application framework 206, including for example by creating one or more application user interface pages each comprising a plurality of page components, and specifying for each its behavior, variables (e.g., values), etc., and the relationship between such components. In various embodiments, the application framework 206 may enable communication between such page components via an event bus, such as event bus 106 of FIG. 1. For example, an evaluation function or other logic may be specified by the developer to cause application code to be generated such that a page component may publish a change event, e.g., like entity 102 of FIG. 1, upon occurrence of a change in its value and/or a value otherwise associated with the component. Likewise, a page component may be designed using the developer tool to consume, like entity 104 of FIG. 1, a change event associated with one or more other entities, such as entities on which a value of the subscribing component may depend, for example based on an evaluation function or other relationship specified by the developer to be used to determine a value for the subscribing component.
In various embodiments, the application framework 206 of FIG. 2 may be configured to implement a publish/subscribe model to facilitate asynchronous communication among/between entities. For example, the application framework 206 may be configured to provide an event bus, such as event bus 106 of FIG. 1, and/or a local data cache to facilitate storage and transfer of event payloads, such as local data cache 112 of FIG. 1. In some embodiments, the application framework 206 may be configured to ensure that an event path vector, as disclosed herein, is associated with a change event, and/or to ensure that one or more subscribing entities consume and/or act on change events only if an identifier associated with the subscribing entity does not already appear in an event path vector associated with the event (or, in some embodiments, does not occur more than a prescribed number of times). In some embodiments, application code generated to provide the entities themselves may create, populate, and/or check and respond to information found in event path vectors as disclosed herein.
In various embodiments, an event path vector is provided and/or used as disclosed herein in contexts other than applications composed using a developer tool and/or in contexts other than systems such as system 202 of FIG. 2.
FIG. 3 is a block diagram illustrating an example of a circular event chain. A circular event chain may occur in architectures such as those shown in FIGS. 1 and 2 when an event path vector as disclosed herein is not used. In the example 300 shown in FIG. 3, the value of entity ‘x’ is determined by the evaluation function x=x+y. For example, in the case of an application user interface, a user may initially provide user input for the value of x, e.g., a characters entered by the user into a text field, and the evaluation function may be intended to append a period or other content to the text entered by the user. In the example shown, the value of ‘x’ first is changed to x=10 and ‘y’ initially has the same value, i.e., y=10, and in this example remains constant at that value. In response to the value of ‘x’ changing to x=10, a change event is published, triggering the evaluation function to be evaluated based on the new value of x, resulting in the value of ‘x’ being updated to x=20. The foregoing change in the value of ‘x’, to x=20, causes a further change event to be published, which results in the function being evaluated again, this time causing the value of ‘x’ to be updated to x=20+10. This in turn causes a further change event to be published (x=30), prompting a further iteration of evaluation of the function to be performed (x=30+10), and so on, ad infinitum.
An event path vector to avoid circular event publication, such as that shown in FIG. 3, is disclosed. For example, in various embodiments an event path vector would be provided with the event labeled “3” in FIG. 3 (x=20), and would include an identifier associated with the publishing entity ‘x’. In various embodiments, on receipt of the event labeled “3” in FIG. 3, the entity ‘x’ (or some other service, process, or entity) would evaluate the event path vector, recognize that an identifier associated with ‘x’ is already included, and based on that determination would cause the entity ‘x’ to drop (i.e., not act on) the change event, thereby preventing the a circular event chain. For example, using the event path vector approach disclosed herein, the entity ‘x’ in the example shown in FIG. 3 would not act on the change event labeled “3” in FIG. 3 (x=20) and as a result would not further update the value of ‘x’ in successive iterations, thereby breaking what otherwise would have been the circular chain illustrated in FIG. 3.
FIG. 4 is a flow chart illustrating an example embodiment of a process to consume a change event. The process of FIG. 4 may be implemented by an event consumer, such as entity 104 of FIG. 1 and/or a component of an application user interface page of a developer-composed application, such as application 204 of FIG. 2, and/or may be facilitated in whole or in part by an application framework such as application framework 206 of FIG. 2. The process of FIG. 4 is an example of the use by an event consumer of an event path vector as disclosed herein to avoid circular event publication, such as the circular publication shown in FIG. 3. In the example shown in FIG. 4, an indication is received, e.g., at an entity, that a monitored value has changed (402). For example, a change event published by another entity and which the receiving entity has subscribed to receive may be received. An event path vector associated with the event is checked (404) to determine whether the receiving entity's own identifier is included already (or, in some embodiments, more than a prescribed number of times) in the event path vector. If the receiving entity's own identifier is determined to be included already (or, in some embodiments, more than a prescribed number of times) in the event path vector (406), the event is dropped without being acting on further by the receiving entity. If not (406), the receiving entity acts on the event (408), for example by evaluating a function to update its own value based on the event and/or an associated payload.
FIG. 5 is a flow chart illustrating an example embodiment of a process to publish a change event. The process of FIG. 5 may be implemented by an event publisher, such as entity 102 of FIG. 1 and/or a component of an application user interface page of a developer-composed application, such as application 204 of FIG. 2, and/or may be facilitated in whole or in part by an application framework such as application framework 206 of FIG. 2. The process of FIG. 5 is an example of the use by an event publisher of an event path vector as disclosed herein to enable circular event publication, such as the circular publication shown in FIG. 3, to be avoided. In the example shown, a change in an entity's own value (and/or a value associated therewith) is detected (502). In various embodiments, an entity's value may be changed by or in response to a change event, e.g., a change event is received indicating a change in a value on which the value of the entity depends, such as an argument in an evaluation function associated with the entity, or externally, e.g., based on user input. For example, an application user interface or other page component may detect that an attribute, variable, or other data value of the component has changed. If the detected change is not from an external source, e.g., it is the result of a function being evaluated (504), the entity includes its own identifier in an event path vector associated with the detected change (506) and publishes a change event (508), including the event path vector in the payload (or otherwise). For example, if the detected change was made in response to a change event the entity received and an event path vector with one or more entries was included with that change event, in various embodiments the current entity will add its identifier to the preexisting event path vector (506). If no prior event path vector exists, in some embodiments the entity will create an instance of an event path vector and include its own identifier as an initial entry (506). In some embodiments, if the detected change in the entity's own value was from an external source, such as user input into an input field associated with an application user interface page component (504), the change event is published (508) without including the publishing component's identifier in an event path vector associated with the event.
In various embodiments, a system may use techniques disclosed herein and illustrated by and with reference to FIGS. 1 through 5 to prevent circular event chains as in the following example, in which:
x=f(y)+f(z)
z=f(a)+f(b)
b=f(x)+f(c)
    • ‘c’ is changed by a user, e.g., user input
In this example, each of the entities ‘x’, ‘z’, ‘b’, and ‘c’ performs the process of FIG. 4 with respect to consuming change events, e.g., with respect to events indicating a change in a dependent value on which a value of the entity depends, and performs the process of FIG. 5 with respect to publishing change events, e.g., to inform other entities of detected changes in its own value. In various embodiments, the subsequent processing, using techniques disclosed herein, would be as follows:
    • 1. ‘c’ sends the information that it has changed with no source payload. In this example, ‘c’ does not include a source payload, specifically an event path vector, because the change in c's value came from an external source, i.e., user input, and not from an event received from itself or another entity via an event bus (see, e.g., FIG. 5, steps 502, 504, and 508).
    • 2. ‘b’ consumes the change event published by ‘c’ and checks the path vector for its own ID. Since, ‘b’ is not part of a path vector included in the change event published by ‘c’, ‘b’ re-evaluates itself (see, e.g., FIG. 4, steps 402, 404, 406, and 408).
    • 3. ‘b’ sends the information that it has changed with source payload—[‘b’] (see, e.g., FIG. 5, steps 502, 504, 506, and 508).
    • 4. ‘z’ consumes the information sent by ‘b’ and checks the path vector for its own ID. Since, ‘z’ is not part of the path vector it re-evaluates itself (see, e.g., FIG. 4, steps 402, 404, 406, and 408).
    • 5. ‘z’ sends the information that it has changed with source payload—[‘b’, ‘z’] (see, e.g., FIG. 5, steps 502, 504, 506, and 508).
    • 6. ‘x’ consumes the information sent by ‘z’ and checks the path vector for its own ID. Since, ‘x’ is not part of the path vector it re-evaluates itself (see, e.g., FIG. 4, steps 402, 404, 406, and 408).
    • 7. ‘x’ sends the information that it has changed with source payload—[‘b’, ‘z’, ‘x’] (see, e.g., FIG. 5, steps 502, 504, 506, and 508).
    • 8. ‘b’ consumes the information sent by ‘x’ and checks the path vector for its own ID. Since, ‘b’ is part of the event path vector as sent by ‘x’, ‘b’ drops the information (see, e.g., FIG. 4, steps 402, 404, 406, and “end”).
Use of event path vectors as disclosed herein may prevent circular event publication in systems in which a publish/subscribe model is used.
Although the foregoing embodiments have been described in some detail for purposes of clarity of understanding, the invention is not limited to the details provided. There are many alternative ways of implementing the invention. The disclosed embodiments are illustrative and not restrictive.

Claims (12)

What is claimed is:
1. A method to prevent circular event publication, comprising:
detecting a change in an entity's own value;
determining whether the detected change is from an another entity, wherein the entity and the another entity are page components of an application user interface page;
in the event the detected change is not from the another entity, publishing a change event based at least in part on the detected change and including in the change event an event path vector that includes an identifier associated with the entity; and
in the event the detected change is from the another entity, publishing the change event without including the identifier associated with the entity in the event path vector, wherein the change is associated with evaluation of a function used to determine the entity's own value, wherein the function is evaluated in response to a received event, wherein the received event indicates a change in the another entity's value, wherein the another entity's value is an argument of the function.
2. The method of claim 1, wherein the received event includes a corresponding event path vector, and associating with the change event an event path vector that includes an identifier associated with the entity includes adding the identifier associated with the entity to a set of one or more identifiers included in the corresponding event path vector as received.
3. The method of claim 1, wherein the change in the value associated with the another entity is received via a received change event and the detected change in the entity's own value is made in response to the received change event.
4. The method of claim 1, wherein a subscribing entity is configured to receive the published change event.
5. The method of claim 4, wherein the subscribing entity is configured to check the event path vector to determine whether an identifier associated with the subscribing entity is included in the event path vector.
6. The method of claim 5, wherein the subscribing entity is configured to drop the event based at least in part on a determination that the identifier associated with the subscribing entity is included in the event path vector.
7. The method of claim 5, wherein the subscribing entity is configured to act on the event based at least in part on a determination that the identifier associated with the subscribing entity is not included in the event path vector.
8. The method of claim 5, wherein the subscribing entity is configured to act on the event based at least in part on a determination that the identifier associated with the subscribing entity is not included in the event path vector more than a prescribed number of times.
9. The method of claim 1, wherein detecting a change in an entity's own value is detected by an application user interface or other page component.
10. The method of claim 1, wherein the entity is configured to subscribe to a change event associated with the another entity.
11. A system to prevent circular event publication, comprising:
a memory; and
a processor coupled to the memory and configured to:
detect a change in an entity's own value as stored in the memory;
determine whether the changes is from an another entity, wherein the entity and the another entity are page components of an application user interface page;
in the event the detected change is not from an another entity, publish a change event based at least in part on the detected change and include in the change event an event path vector that includes an identifier associated with the entity; and
in the event the detected change is from the another entity, publish the change event without including the identifier associated with the entity in the event path vector, wherein the change is associated with evaluation of a function used to determine the entity's own value, wherein the function is evaluated in response to a received event, wherein the received event indicates a change in the another entity's value, wherein the another entity's value is an argument of the function.
12. A computer program product to prevent circular event publication, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:
detecting a change in an entity's own value;
determining whether the change is from an another entity, wherein the entity and the another entity are page components of an application user interface page;
in the event the detected change is not from the another entity, publishing a change event based at least in part on the detected change and including in the change event an event path vector that includes an identifier associated with the entity; and
in the event the detected change is from the another entity, publishing the change event without including an identifier associated with the entity in the event path vector, wherein the change is associated with evaluation of a function used to determine the entity's own value, wherein the function is evaluated in response to a received event, wherein the received event indicates a change in the another entity's value, wherein the another entity's value is an argument of the function.
US14/172,196 2014-02-04 2014-02-04 Prevention of circular event publication in publish/subscribe model using path vector Active 2034-08-28 US9489442B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US14/172,196 US9489442B1 (en) 2014-02-04 2014-02-04 Prevention of circular event publication in publish/subscribe model using path vector
US15/288,854 US10242083B2 (en) 2014-02-04 2016-10-07 Prevention of circular event publication in publish/subscribe model using path vector

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/172,196 US9489442B1 (en) 2014-02-04 2014-02-04 Prevention of circular event publication in publish/subscribe model using path vector

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US15/288,854 Continuation US10242083B2 (en) 2014-02-04 2016-10-07 Prevention of circular event publication in publish/subscribe model using path vector

Publications (1)

Publication Number Publication Date
US9489442B1 true US9489442B1 (en) 2016-11-08

Family

ID=57211131

Family Applications (2)

Application Number Title Priority Date Filing Date
US14/172,196 Active 2034-08-28 US9489442B1 (en) 2014-02-04 2014-02-04 Prevention of circular event publication in publish/subscribe model using path vector
US15/288,854 Active US10242083B2 (en) 2014-02-04 2016-10-07 Prevention of circular event publication in publish/subscribe model using path vector

Family Applications After (1)

Application Number Title Priority Date Filing Date
US15/288,854 Active US10242083B2 (en) 2014-02-04 2016-10-07 Prevention of circular event publication in publish/subscribe model using path vector

Country Status (1)

Country Link
US (2) US9489442B1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10242083B2 (en) 2014-02-04 2019-03-26 Open Text Corporation Prevention of circular event publication in publish/subscribe model using path vector
CN112819164A (en) * 2021-02-02 2021-05-18 京东数科海益信息科技有限公司 Inference method and device of affair map and computer equipment

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10097622B1 (en) * 2015-09-11 2018-10-09 EMC IP Holding Company LLC Method and system for communication using published events

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6122639A (en) * 1997-12-23 2000-09-19 Cisco Technology, Inc. Network device information collection and change detection
US6134532A (en) * 1997-11-14 2000-10-17 Aptex Software, Inc. System and method for optimal adaptive matching of users to most relevant entity and information in real-time
US20040236596A1 (en) * 2003-02-27 2004-11-25 Mahesh Chowdhary Business method for a vehicle safety management system
US20050034107A1 (en) * 2002-02-12 2005-02-10 Kendall Elisa Finnie Method and apparatus for frame-based knowledge representation in the unified modeling language (uml)
US20070094672A1 (en) * 2000-12-12 2007-04-26 Citrix Systems, Inc. Methods and apparatus for communicating changes between a user-interface and an executing application, using property paths
US20070179996A1 (en) * 2006-01-31 2007-08-02 Victor Company Of Japan, Limited Structured data storage device and structured data storage method
US20090144753A1 (en) * 2007-11-30 2009-06-04 Morris Robert P Method And System For Providing Update Content In A Markup Language-Based Resource
US20130054220A1 (en) * 2011-08-31 2013-02-28 International Business Machines Corporation Arrangements for extending configuration management in large it environments to track changes proactively
US20130191338A1 (en) * 2012-01-23 2013-07-25 Palantir Technologies, Inc. Cross-acl multi-master replication
US20140059699A1 (en) * 2012-08-27 2014-02-27 Dassault Systèmes Enovia Corp. Indexed security for use with databases
US20140075383A1 (en) * 2012-09-11 2014-03-13 Alibaba Group Holding Limited Displaying an application set identifier
US20140278210A1 (en) * 2013-03-13 2014-09-18 International Business Machines Corporation Real-time Spatial Path Comparison
US20140297516A1 (en) * 2013-03-26 2014-10-02 Research In Motion Limited Method for providing composite user interface controls and an online storefront for same
US20140349270A1 (en) * 2011-09-13 2014-11-27 Monk Akarshala Design Private Limited Learning interfaces for learning applications in a modular learning system
US8914375B2 (en) * 2004-04-27 2014-12-16 International Business Machines Corporation Method and system for matching appropriate content with users by matching content tags and profiles

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6807583B2 (en) * 1997-09-24 2004-10-19 Carleton University Method of determining causal connections between events recorded during process execution
JP4091792B2 (en) * 2002-05-17 2008-05-28 株式会社エヌ・ティ・ティ・ドコモ Electronic device, event providing method, program, and recording medium
US20070027996A1 (en) * 2005-08-01 2007-02-01 Microsoft Corporation Configuring application settings based on changes associated with a network identifier
US7684350B2 (en) * 2006-03-16 2010-03-23 Cisco Technology, Inc. Method and apparatus for distributing labels in a label distribution protocol multicast network
US7769727B2 (en) * 2006-05-31 2010-08-03 Microsoft Corporation Resolving update-delete conflicts
EP2234346A1 (en) * 2009-03-26 2010-09-29 BRITISH TELECOMMUNICATIONS public limited company Policing in data networks
US9277021B2 (en) * 2009-08-21 2016-03-01 Avaya Inc. Sending a user associated telecommunication address
US8407184B2 (en) * 2010-06-07 2013-03-26 Salesforce.Com, Inc. Maintaining applications that are occasionally connected to an online services system
US9396242B2 (en) * 2011-04-11 2016-07-19 Salesforce.Com, Inc. Multi-master data replication in a distributed multi-tenant system
US9690838B2 (en) * 2013-10-31 2017-06-27 Microsoft Technology Licensing, Llc Master data management
US9367597B2 (en) * 2013-11-18 2016-06-14 International Business Machines Corporation Automatically managing mapping and transform rules when synchronizing systems
US9489442B1 (en) 2014-02-04 2016-11-08 Emc Corporation Prevention of circular event publication in publish/subscribe model using path vector
US10185311B2 (en) * 2015-10-08 2019-01-22 King Fahd University Of Petroleum And Minerals Methods and apparatus to design collaborative automation systems based on data distribution service middleware

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6134532A (en) * 1997-11-14 2000-10-17 Aptex Software, Inc. System and method for optimal adaptive matching of users to most relevant entity and information in real-time
US6122639A (en) * 1997-12-23 2000-09-19 Cisco Technology, Inc. Network device information collection and change detection
US20070094672A1 (en) * 2000-12-12 2007-04-26 Citrix Systems, Inc. Methods and apparatus for communicating changes between a user-interface and an executing application, using property paths
US20050034107A1 (en) * 2002-02-12 2005-02-10 Kendall Elisa Finnie Method and apparatus for frame-based knowledge representation in the unified modeling language (uml)
US20040236596A1 (en) * 2003-02-27 2004-11-25 Mahesh Chowdhary Business method for a vehicle safety management system
US8914375B2 (en) * 2004-04-27 2014-12-16 International Business Machines Corporation Method and system for matching appropriate content with users by matching content tags and profiles
US20070179996A1 (en) * 2006-01-31 2007-08-02 Victor Company Of Japan, Limited Structured data storage device and structured data storage method
US20090144753A1 (en) * 2007-11-30 2009-06-04 Morris Robert P Method And System For Providing Update Content In A Markup Language-Based Resource
US20130054220A1 (en) * 2011-08-31 2013-02-28 International Business Machines Corporation Arrangements for extending configuration management in large it environments to track changes proactively
US20140349270A1 (en) * 2011-09-13 2014-11-27 Monk Akarshala Design Private Limited Learning interfaces for learning applications in a modular learning system
US20130191338A1 (en) * 2012-01-23 2013-07-25 Palantir Technologies, Inc. Cross-acl multi-master replication
US20140059699A1 (en) * 2012-08-27 2014-02-27 Dassault Systèmes Enovia Corp. Indexed security for use with databases
US20140075383A1 (en) * 2012-09-11 2014-03-13 Alibaba Group Holding Limited Displaying an application set identifier
US20140278210A1 (en) * 2013-03-13 2014-09-18 International Business Machines Corporation Real-time Spatial Path Comparison
US20140297516A1 (en) * 2013-03-26 2014-10-02 Research In Motion Limited Method for providing composite user interface controls and an online storefront for same

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10242083B2 (en) 2014-02-04 2019-03-26 Open Text Corporation Prevention of circular event publication in publish/subscribe model using path vector
CN112819164A (en) * 2021-02-02 2021-05-18 京东数科海益信息科技有限公司 Inference method and device of affair map and computer equipment

Also Published As

Publication number Publication date
US10242083B2 (en) 2019-03-26
US20170199923A1 (en) 2017-07-13

Similar Documents

Publication Publication Date Title
US10831826B2 (en) Validation of schema and schema conformance verification
US9882844B2 (en) Opaque message parsing
CN109661652B (en) Anomaly detection using system call sequences
US10122598B2 (en) Subscription watch lists for event handling
US10242083B2 (en) Prevention of circular event publication in publish/subscribe model using path vector
CN110837457B (en) Task management method and device, electronic equipment and storage medium
US9396233B2 (en) Alert management
US20200012402A1 (en) Composable events for dynamic user interface composition
JP2019012498A (en) Electronic controller
CN113641873B (en) Data processing method and device, electronic equipment and readable storage medium
US9756147B1 (en) Dynamic discovery and management of page fragments
CN108733536B (en) Monitoring management system and method
CN109408324B (en) Method, device and system for monitoring system software operation
US11295258B2 (en) Cross domain integration in product lifecycle management
US10061681B2 (en) System for discovering bugs using interval algebra query language
US20200065233A1 (en) Automatically establishing significance of static analysis results
CN107291614B (en) File abnormity detection method and electronic equipment
US20200097350A1 (en) Visual timeline based system to recommend potential root cause of failure and remediation of an operation using change management database
US8935710B1 (en) Unique event identification
US7788534B2 (en) Method for monitoring and managing a client device in a distributed autonomic computing environment
CN114064376A (en) Page monitoring method and device, electronic equipment and medium
US20150277858A1 (en) Performance evaluation device, method, and medium for information system
CN111193617B (en) Webpage tampering identification method and device, electronic equipment and storage medium
CN117852043A (en) Determination method and device for abnormal device, electronic device and storage medium
CN116048519A (en) Front-end business embedding method and device, electronic equipment and storage medium

Legal Events

Date Code Title Description
AS Assignment

Owner name: EMC CORPORATION, MASSACHUSETTS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:PRABHAKARAN NAIR, SREEJITH;BHATIA, SWATI;TOTALE, SACHIN G.;REEL/FRAME:032138/0517

Effective date: 20140203

AS Assignment

Owner name: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT, TEXAS

Free format text: SECURITY AGREEMENT;ASSIGNORS:ASAP SOFTWARE EXPRESS, INC.;AVENTAIL LLC;CREDANT TECHNOLOGIES, INC.;AND OTHERS;REEL/FRAME:040136/0001

Effective date: 20160907

Owner name: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT, NORTH CAROLINA

Free format text: SECURITY AGREEMENT;ASSIGNORS:ASAP SOFTWARE EXPRESS, INC.;AVENTAIL LLC;CREDANT TECHNOLOGIES, INC.;AND OTHERS;REEL/FRAME:040134/0001

Effective date: 20160907

Owner name: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., A

Free format text: SECURITY AGREEMENT;ASSIGNORS:ASAP SOFTWARE EXPRESS, INC.;AVENTAIL LLC;CREDANT TECHNOLOGIES, INC.;AND OTHERS;REEL/FRAME:040136/0001

Effective date: 20160907

Owner name: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLAT

Free format text: SECURITY AGREEMENT;ASSIGNORS:ASAP SOFTWARE EXPRESS, INC.;AVENTAIL LLC;CREDANT TECHNOLOGIES, INC.;AND OTHERS;REEL/FRAME:040134/0001

Effective date: 20160907

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: EMC CORPORATION, MASSACHUSETTS

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:041073/0443

Effective date: 20170123

Owner name: EMC CORPORATION, AS GRANTOR, MASSACHUSETTS

Free format text: PATENT RELEASE (REEL:40134/FRAME:0001);ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT;REEL/FRAME:041073/0136

Effective date: 20170123

AS Assignment

Owner name: OPEN TEXT CORPORATION, CANADA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:EMC CORPORATION;REEL/FRAME:041579/0133

Effective date: 20170112

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

AS Assignment

Owner name: SCALEIO LLC, MASSACHUSETTS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061753/0001

Effective date: 20220329

Owner name: EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.), TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061753/0001

Effective date: 20220329

Owner name: EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC), MASSACHUSETTS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061753/0001

Effective date: 20220329

Owner name: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.), TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061753/0001

Effective date: 20220329

Owner name: DELL PRODUCTS L.P., TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061753/0001

Effective date: 20220329

Owner name: DELL INTERNATIONAL L.L.C., TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061753/0001

Effective date: 20220329

Owner name: DELL USA L.P., TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061753/0001

Effective date: 20220329

Owner name: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.), TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061753/0001

Effective date: 20220329

Owner name: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.), TEXAS

Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (045455/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:061753/0001

Effective date: 20220329

AS Assignment

Owner name: BARCLAYS BANK PLC, NEW YORK

Free format text: SECURITY INTEREST;ASSIGNOR:OPEN TEXT CORPORATION;REEL/FRAME:063559/0805

Effective date: 20230428

Owner name: BARCLAYS BANK PLC, NEW YORK

Free format text: SECURITY INTEREST;ASSIGNOR:OPEN TEXT CORPORATION;REEL/FRAME:063559/0839

Effective date: 20230501

Owner name: BARCLAYS BANK PLC, NEW YORK

Free format text: SECURITY INTEREST;ASSIGNOR:OPEN TEXT CORPORATION;REEL/FRAME:063559/0831

Effective date: 20230430

AS Assignment

Owner name: THE BANK OF NEW YORK MELLON, NEW YORK

Free format text: SECURITY INTEREST;ASSIGNOR:OPEN TEXT CORPORATION;REEL/FRAME:064761/0008

Effective date: 20230430