Issue 5109: Definition 3.1.66: published
Issue 5110: Figure 3: Lifetime of a Federate: Meaning of Save In Progress
Issue 5111: Figure 2: Lifetime of a Federate: Meaning of Restore In Progress
Issue 5112: Service 4.24: Query Federation Restore Status
Issue 5113: Figure 10: Class Attribute (i, j)
Issue 5114: Figure 11: Class Attribute (i, HLAprivilegeToDeleteObject)
Issue 5115: Figure 12: Interaction Class (m)
Issue 5116: Service 5.2: Publish Object Class Attributes
Issue 5117: Service 5.3: Unpublish Object Class Attributes
Issue 5118: Service 5.6: Subscribe Object Class Attributes
Issue 5119: Service 5.10: Start Registration For Object Class
Issue 5120: Service 5.11: Stop Registration For Object Class
Issue 5121: Section 6.1: Object Management Overview
Issue 5122: Service 6.4: Register Object Instance
Issue 5123: Service 6.5: Discover Object Instance
Issue 5124: Service 6.8: Send Interaction
Issue 5125: Service 6.10: Delete Object Instance
Issue 5126: Section 7.1: Overview of Ownership Management
Issue 5127: Figure 15: New Transition
Issue 5128: Figure 15: Modified Transition Label
Issue 5129: Figure 15: New State
Issue 5130: Figure 15: New Self-transition
Issue 5131: Figure 15: New Guard
Issue 5133: Section 7.1.4: User-supplied Tags
Issue 5134: Service 7.3: Negotiated Attribute Ownership Divestiture: finding owners
Issue 5135: Service 7.3: Negotiated Attribute Ownership Divestiture: divesting
Issue 5136: Service 7.4: Request Attribute Ownership Assumption
Issue 5137: Service 7.6: Confirm Divestiture
Issue 5138: Service 7.7: Attribute Ownership Acquisition Notification
Issue 5139: Service 7.8: Attribute Ownership Acquisition invoked twice
Issue 5140: Service 7.8: Attribute Ownership Acquisition prohibited
Issue 5141: Service 7.9: Attribute Ownership Acquisition If Available: self-transition
Issue 5142: Service 7.9: Attribute Ownership Acquisition If Available: response not gua
Issue 5143: Service 7.10: Attribute Ownership Unavailable
Issue 5144: Service 7.15: Confirm Attribute Ownership Acquisition Cancellation
Issue 5145: Figure 16: Temporal State statechart
Issue 5146: Service 8.12: Flush Queue Request
Issue 5147: DDM Overview: nomenclature
Issue 5148: DDM Overview: determining specified dimensions
Issue 5149: DDM Overview: Commit Region Modifications
Issue 5150: DDM Overview: Steps to Create a Region Specification
Issue 5151: Section 9.1.2: Default Ranges
Issue 5152: "Invalid Region" exceptions
Issue 5153: Section 9.1.7: Convey Region Designator Sets Switch: when conveyed
Issue 5154: Section 9.1.7: Convey Region Designator Sets Switch: copies conveyed
Issue 5155: Section 9.1.7: Convey Region Designator Sets Switch: use in support
Issue 5156: Service 9.3: Commit Region Modifications
Issue 5157: Service 9.4: Delete Region
Issue 5158: Register Object Instance With Regions: unique names
Issue 5159: Register Object Instance With Regions: invalid region
Issue 5160: Service 9.6: Associate Regions For Updates
Issue 5161: Service 9.6: Associate Regions For Updates: invalid region
Issue 5162: Service 9.7: Unassociate Regions For Updates: irrelevant attributes
Issue 5163: Service 9.7: Unassociate Regions For Updates: invalid region
Issue 5164: Service 9.8: Subscribe Object Class Attributes With Regions: passive indica
Issue 5165: Service 9.8: Subscribe Object Class Attributes With Regions: invalid region
Issue 5166: Service 9.9: Unsubscribe Object Class Attributes With Regions: discover
Issue 5167: Service 9.9: Unsubscribe Object Class Attributes With Regions: invalid regi
Issue 5168: Service 9.10: Subscribe Interaction Class With Regions: passive indicator
Issue 5169: Service 9.10: Subscribe Interaction Class With Regions: invalid region
Issue 5170: Service 9.11:Unsubscribe Interaction Class With Regions: interaction receip
Issue 5171: Service 9.11: Unsubscribe Interaction Class With Regions: error
Issue 5172: Service 9.11: Unsubscribe Interaction Class With Regions: invalid region
Issue 5173: Service 9.12: Send Interaction With Regions: which parameters are sent
Issue 5174: Service 9.12: Send Interaction With Regions: invalid region
Issue 5175: Service 9.13: Request Attribute Value Update With Regions
Issue 5176: DDM Typos: declaration
Issue 5177: DDM Typos: handle
Issue 5178: Section 10.1.2: Advisory Switches
Issue 5179: Service 10.9: Get Parameter Name
Issue 5180: Service 10.30: Get Dimension Handle Set
Issue 5181: Service 10.31: Get Range Bounds: invalid region
Issue 5182: Get Range Bounds: created or conveyed
Issue 5183: MOM Overview
Issue 5184: Section 11.4.1: Normal RTI MOM administration: item (g)
Issue 5185: Section 11.4.1: Normal RTI MOM administration: item (d)
Issue 5186: Section 11.4.1: Normal RTI MOM administration: null values
Issue 5187: Section 11.4.1: Normal RTI MOM administration: federate-sent parameters
Issue 5188: Table 6: MOM attribute table: HLAfederateState
Issue 5189: Table 15: MOM interaction class definitions table: HLArequestSubscriptions
Issue 5190: Table 15: Mom interaction class definitions table: HLAreportObjectInstances
Issue 5191: Mom interaction class definitions table: HLArequestSynchronizationPointSta
Issue 5192: Table 16: MOM attribute definitions table: HLAFDDID
Issue 5193: Table 16: MOM attribute definitions table: HLAreflectionsReceived
Issue 5194: Table 16: MOM attribute definitions table: HLAupdatesSent
Issue 5195: Table 16: MOM attribute definitions table: HLAlastSaveTime: undefined
Issue 5196: Table 16: MOM attribute definitions table:HLAlastSaveTime: last save untime
Issue 5197: Table 16: MOM attribute definitions table: HLAnextSaveTime
Issue 5198: Table 16: MOM attribute definitions table: HLAobjectInstancesUpdated
Issue 5199: Table 16: MOM attribute definitions table: HLAobjectInstancesDeleted
Issue 5200: Table 16: MOM attribute definitions table: HLAobjectInstancesRegistered
Issue 5201: Table 16: MOM attribute definitions table: HLAobjectInstancesDiscovered
Issue 5202: T16: MOM attribute definitions table: HLAtimeGrantedTime and HLAtimeAdvanci
Issue 5203: Table 17: MOM parameter definitions table: HLAreportPeriod
Issue 5204: Table 17: interaction subclass HLAmanager.HLAfederate...
Issue 5205: Table 17: interaction subclass
Issue 5206: Table 17: interaction subclass, another issue
Issue 5207: Table 17: interaction subclass (issue3)
Issue 5208: MOM Table 17: use of HLAobjectClassBasedCounts array datatype
Issue 5209: MOM Table 17: use of HLAinteractionCounts array datatype
Issue 5210: MOM Table 17: HLAreportServiceInvocation: HLAreturnedArguments parameter
Issue 5211: MOM Table 17: HLAreportMOMexception: HLAservice parameter
Issue 5212: MOM Table 17: HLAreportMOMexception: fully-qualified names
Issue 5213: All APIs: Service 7.6
Issue 5234: Overview of Ownership Management: RTI responsibilities
Issue 5235: Resign Federation Execution
Issue 5236: Unconditional Attribute Ownership Divestiture
Issue 5297: Join Federation Execution
Issue 5298: Attribute Ownership Acquisition: increased prohibition
Issue 5301: Simplify representation of Logical Time
Issue 5302: Simplify representation of Handle Types
Issue 5303: Simplify representation of order and transportation types
Issue 5109: Definition 3.1.66: published (dss2ftf)
Click here for this issue's archive.
Source: MITRE (Ms. Susan Symington, susan@mitre.org)
Nature: Revision
Severity: Minor
Summary:
Part (a) of definition 3.1.66, the definition of "published", does not say that in order to be considered to be published, an object class has to have been an argument to the Publish Object Class Attributes service along with an at least one attribute that is available at that object class. In order to be consistent with the rest of the standard, it should read (changes shown in boldface) "pertaining to an object class such that, from the perspective of a given joined federate, there is at least one attribute available at that object class that, along with the object class, was an argument to a Publish Object Class Attributes service invocation that was not subsequently unpublished at that object class via the Unpublish Object Class Attributes service."
In order to be consistent with the rest of the standard, this definition should be changed accordingly.
Many services in 1516.1 have preconditions and exceptions that are worded simply "Save in progress" or "Save not in progress". However, these states do not appear to be well-defined in the standard. It should be made clear that these are meant to refer to the "Federate Save in Progress" state as shown in the statechart in Figure 3. A save is considered to be in progress at a given federate if the federate is in the "Federate Save in Progress" state.
Many services in 1516.1 have preconditions and exceptions that are worded simply "Restore in progress" or "Restore not in progress". These states, like the "Save in progress" "Save not in progress" states, need to be well-defined. It is recommended that text be added that clarifies that a restore is considered to be in progress at a given federate if the federate is in the "Federate Restore in Progress" state.
When a federate receives an Initiate Federate Restore † callback, one of the supplied arguments of this service is a joined federate designator. So, as a result of the invocation of the Initiate Federate Restore † service, a joined federate's designator could change. This means that while a federate is in the Federate Restore In Progress state, its identity is basically undefined. Given that a precondition of the invocation of the Query Federation Restore Status service (clause 4.24) is that a restore is in progress, it is not clear what list of joined federate designators would be reported while a restore is in progress, nor is it necessarily clear at which federate the Federation Restore Status Response † service should be invoked. In fact, it is not clear that any meaningful information about the list of joined federates in the federation execution could be reported via the Federation Restore Status Response † service while a restore is in progress.
The history transition on the right side of Figure 10: Class Attribute (i,j), which is now labeled "Publish (i,{}) or Unpublish(i,{})", is inconsistent with the rest of the 1516.1 standard. This history transition should instead be labeled, "Subscribe(i,{}) or Unsubscribe (i,{})".The history transition on the right side of Figure 11: Class Attribute (i, HLAprivilegeToDeleteObject), which is now labeled "Publish (i,{}) or Unpublish(i,{})", is inconsistent with the rest of the 1516.1 standard. This history transition should instead be labeled, "Subscribe(i,{}) or Unsubscribe (i,{})".On the left hand side of the statechart in Figure 12: Interaction Class (m), the transitions between the "Unpublished (m)" state and the "Published (m)" state should read "Publish (m)" and "Unpublish (m)", rather than simply "Publish" and "Unpublish".
The introductory text for the Publish Object Class Attributes service (clause 5.2) says that one of the ways that a joined federate may become the owner of an instance attribute is - By using ownership management services to acquire instance attributes of object instances. The joined federate may acquire only those instance attributes for which the joined federate is publishing the corresponding class attributes. Because this text does not mention at what class the joined federate must be publishing the corresponding class attributes, it is not consistent with the rest of the standard, which asserts that the joined federate mush be publishing the corresponding class attributes at the known class of the object instance.
Use of the phrase "joined federate-owned" in pre-condition (e) of the Unpublish Object Class Attributes service (clause 5.3) implies that a federate could invoke the Attribute Ownership Acquisition service or the Attribute Ownership Acquisition If Available service on an instance attribute that the federate already owns. However, that would be inconsistent with the rest of the 1516.1 standard. The phrase "joined federate-owned" should be deleted from this precondition.
The service description of Subscribe Object Class Attributes (clause 5.6) needs to more completely describe the intended effect of the optional passive subscription indicator. It needs to explain what should happen with regard to the active/passive nature of a subscription in the event that a subscription is made for a class attribute that is not already subscribed. Furthermore, the text does not make clear whether the active/passive characteristic applies on a per-attribute or a per-class basis.
Add clarifying text to explain the effects of the optional passive subscription indicator.
As pre-condition (c) of the Start Registration For Object Class service (clause 5.10) is now worded, the Start Registration For Object Class service could be received at a publishing federate even if it were the case that if that publishing federate were to register an instance of the specified class, no other federate in the federation execution would discover the object instance. This does not appear to meet the stated intent of the Start Registration For Object Class service to "notify the joined federate that registration of new object instances of the specified object class is advised". Precondition (c) should be amended to specify that the object class at which the subscribing federate is actively subscribed to the attribute must be the subscribing federate's candidate discovery class of an object instance registered at the specified object class.
Resolution: Precondition (c) should be amended to specify that the object class at which the subscribing federate is actively subscribed to the attribute must be the subscribing federate's candidate discovery class of an object instance registered at the specified object class.
As pre-condition (d) of the Stop Registration For Object Class service (clause 5.11) is now worded, the Stop Registration For Object Class service could be received at a publishing federate even if it were the case that if that publishing federate were to register an instance of the specified class, some other federate in the federation execution would discover the object instance. This does not appear to meet the stated intent of the Stop Registration For Object Class service to "notify the joined federate that registration of new object instances of the specified object class is not advised". Precondition (d) should be amended to specify that none of the class attributes that the joined federate is publishing at the specified object class is actively subscribed to by any other joined federate in the federation execution at what would be the subscribing federate's candidate discovery class of an object instance registered at the specified object class.
Resolution: Precondition (d) should be amended to specify that none of the class attributes that the joined federate is publishing at the specified object class is actively subscribed to by any other joined federate in the federation execution at what would be the subscribing federate's candidate discovery class of an object instance registered at the specified object class.
The way the definition of "in-scope" is currently worded, it is not possible for federates to receive Attributes In Scope callbacks for any instance attributes corresponding to pre-defined MOM object class attributes. Item (b) of the in-scope definition should be changed to "The instance attribute is owned either by another joined federate or by the RTI, and". This will allow MOM instance attributes to come into scope, MOM object instances to be discovered, and MOM instance attributes to be reflected.
Resolution: Change item (b) of the in-scope definition to allow MOM instance attributes to come into scope, MOM object instances to be discovered, and MOM instance attributes to be reflected.
According to this service description, "the handle provided to the joined federate which registers the object instance shall be the same handle provided to all joined federates which discover the object instance." The phrase "the same handle" is meant to refer to handle equality rather than handle identity. The handles provided to each federate must be equal, but they do not have to be the same programming language object. Two handles are considered to be the same if, according to the comparison operator in each of the APIs (for example, according to the "equals" method in the Java API) the handles would be determined to be equal. The handles must also have equality between federates that are using different language APIs. The handles may be communicated between federates via instance attributes or interaction parameters.
The way that pre-condition (d) of this service is now worded, it is not possible for a federate to discover MOM object instances. This pre-condition should instead say that class attribute "att's corresponding instance attribute that is part of the specified object instance is either owned by another joined federate or owned by the RTI". A corresponding change is also required in clause 6.1 where the conditions for the invocation of the Discover Object Instance † are defined. The first sub-bullet of item b in this definition should read, "either another joined federate (not F) or the RTI owns i, and
Resolution: Revise the pre-condition to make it possible for MOM object instances to be discovered. Also fix similar text in clause 6.1.
The second sentence of this service description reads, "The interaction parameters shall only be those in the specified class and all super-classes, as defined in the FDD." This statement should be clarified by indicating that only parameters that are available at that interaction class may be sent in a given interaction, but a federate is not required to send all available parameters of the interaction class with the interaction.
It should be noted in conjunction with this service that the standard is silent regarding what will happen in the case in which a federate attempts to take ownership of an instance attribute of an object instance for which another federate has already scheduled a timed deletion. That is, if a federate schedules the deletion of an object instance for a time in the future, that object instance may still be discovered by other federates, and updates to instance attributes of that object instance may still be received by other federates, until their logical times are greater than or equal to the specified time of the deletion. If those other federates are allowed to take ownership of any of the instance attributes owned by the federate that scheduled the delete, then it would be possible for strange things to occur within the federation execution, such as a federate that owns the HLAprivilegeToDelete instance attribute of an object instance receiving a Remove Object Instance † callback for that object instance. The standard does not specify the RTI's behavior in such circumstances.
Text in this section currently states, "The RTI shall be responsible for attempting to find an owner for instance attributes that are left unowned (either via registration, federate resignation, or some form of divestiture). The RID provided to an RTI may allow the federation to control how often or for how long an RTI will attempt to find an owner for unowned instance attributes." It should be pointed out that the standard does not require that the RTI try to find an owner within a certain amount of time.
Resolution: There is another comment that related to this same text, and resolution of that comment involved deleting the above quoted sentences from the standard altogether. That comment was accepted, so this comment, which suggests that the text in question be augmented is being rejected. The RTI will only be responsible for attempting to find an owner for instance attributes that are left unowned as a result of explicit ownership management service invocations or directives; it shall not be responsible for finding an owner for instance attributes that are left unowned via registration or unpublication. Furthermore, the standard should not discuss the RID, as it is implementation-specific.
If there are no federates in the federation execution that are in the "Acquisition Pending" or "Willing to Acquire" state with respect to the specified instance attribute, the federate that owns the instance attribute shall be prohibited from invoking the Confirm Divestiture service for that instance attribute. If the owning federate were to be allowed to invoke the Confirm Divestiture service under these circumstances, this would result in the instance attribute becoming unowned by all federates, which shall never be allowed to happen as a result of a negotiated divestiture. Therefore, the owning federate shall be prevented from invoking the Confirm Divestiture service under these circumstances. This prohibition needs to be incorporated into the statechart in Figure 15 by adding a transition from the Completing Divestiture state into the Waiting for a New Owner to be Found state that has as a label "[Confirm Divestiture and NoAcquisitionPending exception thrown]".
If there are no federates in the federation execution that are in the "Acquisition Pending" or "Willing to Acquire" state with respect to the specified instance attribute, the federate that owns the instance attribute shall be prohibited from invoking the Confirm Divestiture service for that instance attribute. If the owning federate were to be allowed to invoke the Confirm Divestiture service under these circumstances, this would result in the instance attribute becoming unowned by all federates, which shall never be allowed to happen as a result of a negotiated divestiture. Therefore, the owning federate shall be prevented from invoking the Confirm Divestiture service under these circumstances. This prohibition needs to be incorporated into the statechart in Figure 15 in the following way: the transition from the Completing Divestiture state into the Able to Acquire state that currently has as the label "Confirm Divestiture", should have its label modified to read, "Confirm Divestiture (successful)".
As the statechart is now depicted, it is not clear what should happen if a federate invokes the Attribute Ownership Acquisition service for an instance attribute that is already in the "Acquisition Pending" state. The following change should be made to the statechart to indicate that the instance attribute's state shall remain unchanged: there shall be a history state added within the Acquisition Pending state, and there shall be a self-transition from this history state to itself, labeled "Attribute Ownership Acquisition".
As the statechart is now depicted, it is not clear what should happen if a federate invokes the Attribute Ownership Acquisition If Available service for an instance attribute that is already in the "Willing to Acquire" state. The following change should be made to the statechart to indicate that the instance attribute's state shall remain unchanged: there shall be an additional transition added that is a self-transition from the Willing to Acquire state to itself that is labeled "Attribute Ownership Acquisition If Available [not in 'Acquisition Pending']".
As the statechart is now depicted, it is permissible for an owning federate that is in the Waiting for a New Owner to be Found state to receive a Request Attribute Ownership Release † callback. However, if a federate is in the Waiting for a New Owner to be Found state and another federate invokes the Attribute Ownership Acquisition service, the owning federate should receive a Request Divestiture Confirmation † callback; the owning federate should not receive a Request Attribute Ownership Release † callback. Therefore, to make this prohibition clear, a guard shall be added to the existing Request Attribute Ownership Release † history transition in the Owned state. The guard shall be: [not in "Waiting for a New Owner to be Found"].
Resolution: This issue is very similar to issue 5298. In fact, the changes requested in this issue are a subset of the changes requested in issue 5298. It was decided to accept the more complete set of changes proposed in issue 5298 and to list issue 5131 as a duplicate. This duplicate issue 5131 is related to the other duplicate issue 5140, because issue 5131 is an attempt to make the statechart in Figure 15 consistent with the changes proposed in issue 5140. Issue 5298, which was accepted instead of issues 5131 and 5140 involves both making a superset of the changes requested in 5140 and making the statechart in Figure 15 consistent with these changes.
This section explains that the user-supplied tags that are present in some federate-invoked services shall be present in the specified resulting RTI-invoked services. It does not explain, however, what the user-supplied tags should be in those RTI-invoked services that are not the result of a federate-invoked service. The text should be clarified to indicate that if an RTI-invoked service is not the result of a federate-invoked service, but the RTI-invoked service has a user-supplied tag as a mandatory argument, the user-supplied tag shall be empty. For example, in the Java API, the tag should be an empty (zero-length) array.
If one or more joined federates are in either the "Acquiring" or "Willing to Acquire" state with respect to the specified instance attribute, it is not clear whether the RTI is obligated to try to identify other joined federates that are willing to own the instance attribute. Clarifying text should be added that makes clear that if any joined federate is in either the "Acquiring" or "Willing to Acquire" state with respect to the specified instance attribute, the RTI may, but is not obligated to, try to identify other joined federates that are willing to own the instance attribute. The mechanism that the RTI shall use to try to identify other joined federates that are willing to own the instance attribute is invocation of the Request Attribute Ownership Assumption † service at all joined federates that are both eligible to own the instance attribute and not in either the "Acquiring" or "Willing to Acquire" state with respect to the specified instance attribute.
This service description now reads, "The invoking joined federate shall continue its update responsibility for the specified instance attributes until it divests ownership via the Confirm Divestiture service." This implies that the only manner in which the federate can divest ownership is by invoking the Confirm Divestiture service, which is not true. This sentence should be changed to read simply, "The invoking joined federate shall continue its update responsibility for the specified instance attributes until it divests ownership
The following additional pre-condition should be added to this service, "The joined federate is not in either the "Acquiring" or the "Willing to Acquire" state for this instance attribute." This additional pre-condition is already a requirement as expressed by the guard on the Request Attribute Ownership Assumption transition in the statechart in Figure 15. It should be present in the pre-conditions for clarity and consistency.
If there are no federates in the federation execution that are in the "Acquisition Pending" or "Willing to Acquire" state with respect to the specified instance attribute, the federate that owns the instance attribute shall be prohibited from invoking the Confirm Divestiture service for that instance attribute. If the owning federate were to be allowed to invoke the Confirm Divestiture service under these circumstances, this would result in the instance attribute becoming unowned by all federates, which shall never be allowed to happen as a result of a negotiated divestiture. Therefore, the owning federate shall be prevented from invoking the Confirm Divestiture service under these circumstances. To enforce this prohibition, the following changes need to be made to this service description: There shall be an additional pre-condition to this service that says: There is at least one federate in the federation that is in either the "Acquisition Pending" or the "Willing to Acquire" state with respect to the specified instance attribute. There shall be an additional exception to this service that says: There is no joined federate that has an acquisition pending or that is willing to acquire the instance attribute. There shall be additional introductory text that says, if a federate invokes the Confirm Divestiture service and, as a result, an exception is thrown indicating that there is no joined federate that has an acquisition pending or that is willing to acquire the instance attribute, then that federate shall transition from the Completing Divestiture state with regard to that instance attribute into the Waiting for a New Owner to be Found state with regard to that instance attribute.
Resolution: Add the suggested pre-condition, exception, and introductory text to this service description.
Post-condition (b) of this service incorrectly implies that a federate could invoke the Attribute Ownership Acquisition service or the Attribute Ownership Acquisition If Available service on an instance attribute that the federate already owns. The first sentence of (b) should be changed to say, "The joined federate may stop publishing the corresponding class attributes at the known class of the specified object instance if there are no corresponding instance attributes…".
As currently written, it is not clear what should happing if a federate invokes the Attribute Ownership Acquisition service for an instance attribute that is already in the "Acquisition Pending" state. This text should be clarified to indicate that if a federate invokes the Attribute Ownership Acquisition service for an instance attribute that is already in the "Acquisition Pending" state, that instance attribute's state shall remain unchanged. In other words, if a federate invokes the Attribute Ownership Acquisition service for an instance attribute that is in the "Acquiring" state, that instance attribute shall continue to be in the "Acquiring" state and the federate that owns the instance attribute shall not receive a corresponding Request Attribute Ownership Release † callback. If there are additional instance attributes in the attribute set that is an argument to the Attribute Ownership Acquisition service, those instance attributes shall enter the "Acquiring" state, assuming that they meet all of the pre-conditions of the Attribute Ownership Acquisition service and they are not already in the "Acquiring" or the "Trying to Cancel Acquisition" state, and the federate that owns these instance attributes shall receive a corresponding Request Attribute Ownership Release † callback. Likewise, if a federate invokes the Attribute Ownership Acquisition service for an instance attribute that is in the "Trying to Cancel Acquisition" state, that instance attribute shall continue to be in the "Trying to Cancel Acquisition" state and the federate that owns the instance attribute shall not receive a corresponding Request Attribute Ownership Release † callback. If there are additional instance attributes in the attribute set that is an argument to the Attribute Ownership Acquisition service, those instance attributes shall enter the "Acquiring" state, assuming that they meet all of the pre-conditions of the Attribute Ownership Acquisition service and they are not already in the "Acquiring" or the "Trying to Cancel Acquisition" state, and the federate that owns these instance attributes shall receive a corresponding Request Attribute Ownership Release † callback.
The introductory text to the Attribute Ownership Acquisition service says, "If a specified instance attribute is owned by another joined federate, the RTI shall invoke the Request Attribute Ownership Release † service for that instance attribute at the owning joined federate." This means that if an owning federate is in the "Waiting for a New Owner to be Found" state and another federate invokes the Attribute Ownership Acquisition service, the owning federate will receive both a Request Attribute Ownership Release † and a Request Divestiture Confirmation † callback. The expectation that the owning federate would receive both of these callbacks, in either order, poses problems. If the RTI were to invoke both the Request Attribute Ownership Release † callback and the Request Divestiture Confirmation † callback at the owning federate, incorrect behavior could result. If the Request Attribute Ownership Release † callback is received first and the federate responds to it, say, by invoking Attribute Ownership Divestiture If Wanted, then it is inappropriate for the owning federate to receive the Request Divestiture Confirmation † callback. Likewise, if the Request Divestiture Confirmation † callback were received first and the owning federate were to respond to it by invoking the Confirm Divestiture service, it would be inappropriate for the owning federate to receive the Request Attribute Ownership Release † callback. Therefore, to prevent such problems, the following text should be added to this service description, "If the owning federate is in the "Waiting for a New Owner to be Found" state and another federate invokes the Attribute Ownership Acquisition service, the owning federate should receive only a Request Divestiture Confirmation † callback; it should not receive a Request Attribute Ownership Release † callback.
Resolution: This issue is very similar to issue 5298. In fact, the changes requested in this issue are a subset of the changes requested in issue 5298. It was decided to accept the more complete set of changes proposed in issue 5298 and to list issue 5140 as a duplicate.
As currently specified, it is not clear what should happen if a federate invokes the Attribute Ownership Acquisition If Available service for an instance attribute that is already in the "Willing to Acquire" state. Text should be added that clarifies that if a federate invokes the Attribute Ownership Acquisition If Available service for an instance attribute that is already in the "Willing to Acquire" state, that instance attribute's state shall remain unchanged. In other words, if a federate invokes the Attribute Ownership Acquisition If Available service for an instance attribute that is in the "Willing to Acquire" state, that instance attribute shall continue to be in the "Willing to Acquire" state. If there are additional instance attributes in the attribute set that is an argument to the Attribute Ownership Acquisition If Available service, those instance attributes shall enter the "Willing to Acquire" state, assuming that they meet all of the pre-conditions of the Attribute Ownership Acquisition If Available service and they are not already in the "Willing To Acquire" state.
A federate that owns an instance attribute and is in the process of divesting it has the option of staying in the "Completing Divestiture" state indefinitely. Therefore, it is not the case that a federate that invokes the Attribute Ownership Acquisition If Available service will necessarily receive either an Attribute Ownership Acquisition Notification † service invocation or a corresponding Attribute Ownership Unavailable † service invocation. If the owning federate stays in the "Completing Divestiture" state indefinitely, the federate that invoked the Attribute Ownership Acquisition If Available service will receive neither a corresponding Attribute Ownership Acquisition Notification † service invocation nor a corresponding Attribute Ownership Unavailable † service invocation. To reflect this state of events, the introductory text to the Attribute Ownership Acquisition If Available service that says, "For each of the specified instance attributes, the joined federate shall receive either a corresponding Attribute Ownership Acquisition Notification † service invocation or a corresponding Attribute Ownership Unavailable † service invocation" needs to be changed to read, "For each of the specified instance attributes, the joined federate may receive only a corresponding Attribute Ownership Acquisition Notification † service invocation or a corresponding Attribute Ownership Unavailable † service invocation."
When a federate receives the Attribute Ownership Unavailable† callback for an instance attribute, it is no longer in the "Willing to Acquire" state with respect to that instance attribute. Therefore, it is permissible for the federate to stop publishing that instance attribute's corresponding class attribute at the known class of the object instance, providing that there are no other corresponding instance attributes at that same known class that the federate is either "Willing to Acquire", or for which the federate has an "Acquisition Pending". If there is at least one other such instance attribute that the federate is "Willing to Acquire" or for which the federate has an "Acquisition Pending", then the federate must be prohibited from unpublishing the corresponding class attribute of that instance attribute at the known class of the object instance. To reflect this, post-condition (b) of the Attribute Ownership Unavailable † service, like post-condition (b) of the Attribute Ownership Acquisition Notification †, should be amended to say, "b) The joined federate may stop publishing the corresponding class attributes at the known class of the specified object instance if there are no corresponding instance attributes for which the joined federate has either:…"
Post-condition (b) of this service, like post-condition (b) of both the Attribute Ownership Acquisition Notification † service and the Attribute Ownership Unavailable † service, should say, "b) The joined federate may stop publishing the corresponding class attributes at the known class of the specified object instance if there are no corresponding instance attributes for which the joined federate has either:…"