Issue 15300: SysML 1.2 Issues: Definition of Overwrite (sysml-rtf) Source: Lockheed Martin (Mr. Michael Jesse Chonoles, michael_chonoles2(at)omg.org) Nature: Uncategorized Issue Severity: Summary: Page 92 Overwrite The description of how overwrite works is wrong. The rule given in the spec is to replace the token that would be last to be selected according to the node rules. For example, let us imagine a node with 1..3 FIFO tokens when overwrite is applied. New Token Position 3 Position 2 Head (1st to be taken off) A A B B A C C B A D D B A E E B A Probably desired behavior New Token Position 3 Position 2 Head (1st to be taken off) A A B B A C C B A D D C B E E D C The recommended behavior is the standard behavior for real-time systems (usually implemented as a circular buffer, with the most recently arrived element the oldest element For LIFO queues For example, let us imagine a node with 1..3 LIFO tokens when overwrite is applied. New Token Position 3 Position 2 Head (1st to be taken off) A A B A B C A B C D D B C E E B C Probably desired behavior New Token Position 3 Position 2 Head (1st to be taken off) A A B A B C A B C D B C D E C D E The recommended approach makes both LIFO/FIFO queues always having the freshest elements to work from. Recommended “For upper bounds greater than one, when the queue is full, an arriving token replaces the oldest token in the queue, leaving a FIFO queue with the remaining earliest arriving token at the head of the queue and leaving a LIFO queue with the latest arriving token at the head of the queue. Also, consider giving an example as above. Resolution: Revised Text: Actions taken: June 21, 2010: received issue Discussion: End of Annotations:===== te: Mon, 21 Jun 2010 17:35:23 -0400 From: "Chonoles, Michael J" Subject: New SysML 1.2 Issues: Definition of Overwrite To: "Chonoles, Michael J" , Juergen Boldt Cc: "sysml-rtf@omg.org" Thread-Topic: New SysML 1.2 Issues: Definition of Overwrite Thread-Index: AcsRgRgR/KpB7ZW+Ti29XLehntb2nQAAE3hAAACjU+AAAJbo8AAAZ/UQAABb0PA= Accept-Language: en-US acceptlanguage: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: Page 92 Overwrite The description of how overwrite works is wrong. The rule given in the spec is to replace the token that would be last to be selected according to the node rules. For example, let us imagine a node with 1..3 FIFO tokens when overwrite is applied. New Token Position 3 Position 2 Head (1st to be taken off) A A B B A C C B A D D B A E E B A Probably desired behavior New Token Position 3 Position 2 Head (1st to be taken off) A A B B A C C B A D D C B E E D C The recommended behavior is the standard behavior for real-time systems (usually implemented as a circular buffer, with the most recently arrived element the oldest element For LIFO queues For example, let us imagine a node with 1..3 LIFO tokens when overwrite is applied. New Token Position 3 Position 2 Head (1st to be taken off) A A B A B C A B C D D B C E E B C Probably desired behavior New Token Position 3 Position 2 Head (1st to be taken off) A A B A B C A B C D B C D E C D E The recommended approach makes both LIFO/FIFO queues always having the freshest elements to work from. Recommended .For upper bounds greater than one, when the queue is full, an arriving token replaces the oldest token in the queue, leaving a FIFO queue with the remaining earliest arriving token at the head of the queue and leaving a LIFO queue with the latest arriving token at the head of the queue. Also, consider giving an example as above. From: "Bock, Conrad" To: "sysml-rtf@omg.org" Date: Tue, 5 Jun 2012 09:59:53 -0400 Subject: SysML Issue 15300 (Definition of Overwrite) Thread-Topic: SysML Issue 15300 (Definition of Overwrite) Thread-Index: Ac1DI21yFzYG8sQhSQSipipKL4+AAg== Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US Activity modelers, Michael pointed out that the semantics of overwrite currently doesn't ensure the more recent data is available in pins, see examples in Issue 15300 (Definition of Overwrite, http://tinyurl.com/bt4z23b). Unless anyone has an objection, he and I will write up a resolution as indicated in the issue text. Thx, Conrad From: "Bock, Conrad" To: "sysml-rtf@omg.org" Date: Thu, 2 Aug 2012 11:54:02 -0400 Subject: RE: update of ballot 2 review draft, 15300 Thread-Topic: update of ballot 2 review draft, 15300 Thread-Index: Ac1wwxZy4UNboibHRr+c2XFPARzhyA== Accept-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: acceptlanguage: en-US Tim, > Issue 15300 > > The revised text seems not reflects the proposed solution. The new sentence > for FIFO "token that is next to be selected" will lead to the scenario Sorry for the slow reply. The resolution changes the language refer to tokens "removed" rather than "replaced". A new token arriving at a full FIFO node is still inserted at the end of the queue. The one removed is the one at the head of the queue, since it's been there the longest. The resolution adds the text to clarify this: Tokens arriving at a full object node with the Overwrite stereotype applied take up their positions in the ordering as normal, if any. The arriving tokens do not take the positions of the removed tokens. but the main sentence in the paragraph could emphasize "remove" earlier, and the resolution could give the resulting paragraph, see change bars in update attached. Conrad 15300_resolved.doc Disposition: Resolved OMG Issue No: 15300 Title: Definition of Overwrite Source: Lockheed Martin (Mr. Michael Jesse Chonoles) Summary: Page 92 Overwrite The description of how overwrite works is wrong. The rule given in the spec is to replace the token that would be last to be selected according to the node rules. For example, let us imagine a node with 1..3 FIFO tokens when overwrite is applied. New Token Position 3 Position 2 Head (1st to be taken off) A A B B A C C B A D D B A E E B A Probably desired behavior New Token Position 3 Position 2 Head (1st to be taken off) A A B B A C C B A D D C B E E D C The recommended behavior is the standard behavior for real-time systems (usually implemented as a circular buffer, with the most recently arrived element the oldest element For LIFO queues For example, let us imagine a node with 1..3 LIFO tokens when overwrite is applied. New Token Position 3 Position 2 Head (1st to be taken off) A A B A B C A B C D D B C E E B C Probably desired behavior New Token Position 3 Position 2 Head (1st to be taken off) A A B A B C A B C D B C D E C D E The recommended approach makes both LIFO/FIFO queues always having the freshest elements to work from. Recommended .For upper bounds greater than one, when the queue is full, an arriving token replaces the oldest token in the queue, leaving a FIFO queue with the remaining earliest arriving token at the head of the queue and leaving a LIFO queue with the latest arriving token at the head of the queue. Also, consider giving an example as above. Discussion: Agreed, but use wording reflecting the examples, rather than the recommended wording. Revised Text: In Activities, Section 11.3.2.5 (Overwrite), first paragraph: First sentence, replace .replaces the ones already there. with .removes one that is already there before being added.. Third sentence, replace the portion starting at .replaced. with .removed is the one that has been in the object node the longest is removed.. Fourth sentence (the one starting .For FIFO.), replace .most recently added token. with .token that is next to be selected.. replace .least recently added token. with .token that would be last to be selected.. After the fourth sentence, insert new sentences .Tokens arriving at a full object node with «overwrite» stereotype applied take up their positions in the ordering as normal, if any. The arriving tokens do not take the positions of the removed tokens... The above changes should result in these sentences at the beginning of the paragraph: When the «overwrite» stereotype is applied to object nodes, a token arriving at a full object node removes one that is already there (a full object node has as many tokens as allowed by its upper bound). This is typically used on an input pin with an upper bound of 1 to ensure that stale data is overridden at an input pin. For upper bounds greater than one, the token removed is the one that has been in the object node the longest. For FIFO ordering, this is the token that is next to be selected, for LIFO it is the token that would be last to be selected. Tokens arriving at a full object node with «overwrite» stereotype applied take up their positions in the ordering as normal, if any. The arriving tokens do not take the positions of the removed tokens. Disposition: Resolved