-
Type:
Improvement
-
Status:
Closed
-
Priority:
Major
-
Resolution:
Duplicate
-
Affects Version/s:
3.1.1
-
-
-
-
Proposal:
Hide
3.1.2.3.1 Clean Session, Page 19, Line: 559 Replace para starting "State could be lost" with:-
In exceptional circumstances, the client or server MAY delete session state, or QoS 1 and 2 messages, at any time if required to do so because of:-
- resource constraints;
- limitations of the storage mechanism used;
- partial or complete corruption of the storage mechanism;
- administrative action, or
- on becoming aware of external knowledge that a message or messages can no longer be delivered to any current or future client.
Furthermore, a client or server MAY delete QoS 0 messages at any time for the same conditions as bulleted in the preceding list.
This could result in the loss or duplication of messages regardless of the QoS used.
Non-normative comment
The exceptional circumstances exist to cover that which can not be overcome. Implementations should make all possible efforts to preserve QoS 1 and 2 messages such that in practice their delivery guarantees are met during normal operation. The intent of this exemption is to accommodate scenarios such as:-
- the wear-levelling failures of solid-state storage
- the exhaustion of storage
- quota restrictions to prevent Denial of Service attacks
- unavoidable disk failure
- clients using the service being retired from service so their messages are no longer of value
- hard system failures, eg due to data centre power failure
For QoS 0 messages, the constraint is there to make it clear that QoS messages are ephemeral with no guarantees of delivery or even visibility within the client or server.
As a consequence of these constraints, implementors should be aware that loss or duplication of messages is possible regardless of the QoS used and should program their systems to be idempotent to this possibility.
Show
3.1.2.3.1 Clean Session, Page 19, Line: 559 Replace para starting "State could be lost" with:-
In exceptional circumstances, the client or server MAY delete session state, or QoS 1 and 2 messages, at any time if required to do so because of:-
resource constraints;
limitations of the storage mechanism used;
partial or complete corruption of the storage mechanism;
administrative action, or
on becoming aware of external knowledge that a message or messages can no longer be delivered to any current or future client.
Furthermore, a client or server MAY delete QoS 0 messages at any time for the same conditions as bulleted in the preceding list.
This could result in the loss or duplication of messages regardless of the QoS used.
Non-normative comment
The exceptional circumstances exist to cover that which can not be overcome. Implementations should make all possible efforts to preserve QoS 1 and 2 messages such that in practice their delivery guarantees are met during normal operation. The intent of this exemption is to accommodate scenarios such as:-
the wear-levelling failures of solid-state storage
the exhaustion of storage
quota restrictions to prevent Denial of Service attacks
unavoidable disk failure
clients using the service being retired from service so their messages are no longer of value
hard system failures, eg due to data centre power failure
For QoS 0 messages, the constraint is there to make it clear that QoS messages are ephemeral with no guarantees of delivery or even visibility within the client or server.
As a consequence of these constraints, implementors should be aware that loss or duplication of messages is possible regardless of the QoS used and should program their systems to be idempotent to this possibility.
(Reference MQTT-7).
After " the client and server MUST store qos 1 and qos 2 messages, including those new messages due to active subscriptions on the server ", insert:-
The server MAY then delete such messages at any time if required to do so because of resource constraints, administrative action or becoming aware of external knowledge that the message can no longer be delivered to any current or future client.
{"report":{"apdex":0.5,"isInitial":true,"journeyId":"a3234ba4-8a23-4ae8-aeb4-83834d44499c","key":"jira.project.issue.view-issue","navigationType":0,"readyForUser":3322,"redirectCount":0,"resourceLoadedEnd":3137.6000003814697,"resourceLoadedStart":560.8000001907349,"resourceTiming":[{"duration":344,"initiatorType":"link","name":"https://issues.oasis-open.org/s/3edeca31ab9ba77980aae0809fbe7121-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/0a4716d29b2d5b1bdcdb168b4efc119e/_/download/contextbatch/css/_super/batch.css","startTime":560.8000001907349,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":560.8000001907349,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":904.8000001907349,"responseStart":0,"secureConnectionStart":0},{"duration":344,"initiatorType":"link","name":"https://issues.oasis-open.org/s/7d2823769c2e7b66e860863fe879b7f8-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/9aebb1c0aaa4c36289529757ec9dbb54/_/download/contextbatch/css/project.issue.navigator,jira.view.issue,jira.global,atl.general,-_super/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&richediton=true","startTime":561.2000002861023,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":561.2000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":905.2000002861023,"responseStart":0,"secureConnectionStart":0},{"duration":344.5,"initiatorType":"link","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/8.0.5/_/download/batch/com.atlassian.auiplugin:split_aui.pattern.label/com.atlassian.auiplugin:split_aui.pattern.label.css","startTime":561.5,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":561.5,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":906,"responseStart":0,"secureConnectionStart":0},{"duration":345,"initiatorType":"link","name":"https://issues.oasis-open.org/s/645acc233eb869f48a571293b8358a7d-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:global-static-adgs/jira.webresources:global-static-adgs.css","startTime":561.7000002861023,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":561.7000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":906.7000002861023,"responseStart":0,"secureConnectionStart":0},{"duration":345.5,"initiatorType":"link","name":"https://issues.oasis-open.org/s/a0dd6509771c1de0667aae5429c04cda-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:global-static/jira.webresources:global-static.css","startTime":561.8000001907349,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":561.8000001907349,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":907.3000001907349,"responseStart":0,"secureConnectionStart":0},{"duration":736.0999999046326,"initiatorType":"script","name":"https://issues.oasis-open.org/s/e5479157e7a0c08b005e6522f2f04104-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/0a4716d29b2d5b1bdcdb168b4efc119e/_/download/contextbatch/js/_super/batch.js?locale=en-US","startTime":562.1000003814697,"connectEnd":1093.4000000953674,"connectStart":1044.2000002861023,"domainLookupEnd":1044.2000002861023,"domainLookupStart":1044.2000002861023,"fetchStart":562.1000003814697,"redirectEnd":0,"redirectStart":0,"requestStart":1094.2000002861023,"responseEnd":1298.2000002861023,"responseStart":1130.2000002861023,"secureConnectionStart":1068.2000002861023},{"duration":2575,"initiatorType":"script","name":"https://issues.oasis-open.org/s/83514d5d4e8543747b02042eafcdc99c-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/9aebb1c0aaa4c36289529757ec9dbb54/_/download/contextbatch/js/project.issue.navigator,jira.view.issue,jira.global,atl.general,-_super/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en-US&richediton=true","startTime":562.6000003814697,"connectEnd":1141.6000003814697,"connectStart":1093.5,"domainLookupEnd":1093.5,"domainLookupStart":1093.5,"fetchStart":562.6000003814697,"redirectEnd":0,"redirectStart":0,"requestStart":1141.7000002861023,"responseEnd":3137.6000003814697,"responseStart":1172.5,"secureConnectionStart":1117.2000002861023},{"duration":610.5,"initiatorType":"script","name":"https://issues.oasis-open.org/s/70bb2263e59e7e1f04fbd137c80b895b-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/aae1242f5fc81cc6a5bb8bc963ccda29/_/download/contextbatch/js/atl.global,-_super/batch.js?locale=en-US","startTime":562.8000001907349,"connectEnd":1145.8000001907349,"connectStart":1097.4000000953674,"domainLookupEnd":1097.4000000953674,"domainLookupStart":1097.4000000953674,"fetchStart":562.8000001907349,"redirectEnd":0,"redirectStart":0,"requestStart":1145.8000001907349,"responseEnd":1173.3000001907349,"responseStart":1171.6000003814697,"secureConnectionStart":1121.4000000953674},{"duration":625.7000002861023,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:calendar-en/jira.webresources:calendar-en.js","startTime":563,"connectEnd":1162.4000000953674,"connectStart":1114.8000001907349,"domainLookupEnd":1114.8000001907349,"domainLookupStart":1114.8000001907349,"fetchStart":563,"redirectEnd":0,"redirectStart":0,"requestStart":1162.5,"responseEnd":1188.7000002861023,"responseStart":1187.8000001907349,"secureConnectionStart":1138.3000001907349},{"duration":686.1999998092651,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:calendar-localisation-moment/jira.webresources:calendar-localisation-moment.js","startTime":563.2000002861023,"connectEnd":1222,"connectStart":1173.2000002861023,"domainLookupEnd":1173.2000002861023,"domainLookupStart":1173.2000002861023,"fetchStart":563.2000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":1222,"responseEnd":1249.4000000953674,"responseStart":1248.2000002861023,"secureConnectionStart":1197.3000001907349},{"duration":700.7000002861023,"initiatorType":"script","name":"https://issues.oasis-open.org/s/cda37faab827dbdf305de8efe8282062-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/8.0.5/_/download/batch/com.atlassian.auiplugin:split_aui.pattern.label/com.atlassian.auiplugin:split_aui.pattern.label.js?locale=en-US","startTime":563.4000000953674,"connectEnd":1237,"connectStart":1188.5,"domainLookupEnd":1188.5,"domainLookupStart":1188.5,"fetchStart":563.4000000953674,"redirectEnd":0,"redirectStart":0,"requestStart":1237,"responseEnd":1264.1000003814697,"responseStart":1263.2000002861023,"secureConnectionStart":1212.5},{"duration":355.09999990463257,"initiatorType":"link","name":"https://issues.oasis-open.org/s/07245784f53abc49bad9d9d4d36c577a-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/cadc4f20cc5c138dee060d42cf85f220/_/download/contextbatch/css/jira.global.look-and-feel,-_super/batch.css","startTime":563.6000003814697,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":563.6000003814697,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":918.7000002861023,"responseStart":0,"secureConnectionStart":0},{"duration":761.5999999046326,"initiatorType":"script","name":"https://issues.oasis-open.org/rest/api/1.0/shortcuts/803004/a29179d70fa8562374ee16707692af77/shortcuts.js?context=issuenavigation&context=issueaction","startTime":563.8000001907349,"connectEnd":1297.6000003814697,"connectStart":1249.2000002861023,"domainLookupEnd":1249.2000002861023,"domainLookupStart":1249.2000002861023,"fetchStart":563.8000001907349,"redirectEnd":0,"redirectStart":0,"requestStart":1297.8000001907349,"responseEnd":1325.4000000953674,"responseStart":1324.3000001907349,"secureConnectionStart":1273},{"duration":375.90000009536743,"initiatorType":"link","name":"https://issues.oasis-open.org/s/f77fd89aa211a76b20e9b0e63564383c-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/4a9288299d147101bf66484f4be48925/_/download/contextbatch/css/com.atlassian.jira.projects.sidebar.init,-_super,-jira.view.issue,-project.issue.navigator/batch.css?jira.create.linked.issue=true&richediton=true","startTime":605.7000002861023,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":605.7000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":981.6000003814697,"responseStart":0,"secureConnectionStart":0},{"duration":1843.7000002861023,"initiatorType":"script","name":"https://issues.oasis-open.org/s/41525c48ddceeb9b11e54085268fc285-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/4a9288299d147101bf66484f4be48925/_/download/contextbatch/js/com.atlassian.jira.projects.sidebar.init,-_super,-jira.view.issue,-project.issue.navigator/batch.js?jira.create.linked.issue=true&locale=en-US&richediton=true","startTime":605.9000000953674,"connectEnd":2422.300000190735,"connectStart":2374.1000003814697,"domainLookupEnd":2374.1000003814697,"domainLookupStart":2374.1000003814697,"fetchStart":605.9000000953674,"redirectEnd":0,"redirectStart":0,"requestStart":2422.4000000953674,"responseEnd":2449.6000003814697,"responseStart":2448.7000002861023,"secureConnectionStart":2397.9000000953674},{"duration":2267.699999809265,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:bigpipe-js/jira.webresources:bigpipe-js.js","startTime":616.3000001907349,"connectEnd":2857.1000003814697,"connectStart":2809,"domainLookupEnd":2809,"domainLookupStart":2809,"fetchStart":616.3000001907349,"redirectEnd":0,"redirectStart":0,"requestStart":2857.2000002861023,"responseEnd":2884,"responseStart":2882.9000000953674,"secureConnectionStart":2832.800000190735},{"duration":2261.5,"initiatorType":"script","name":"https://issues.oasis-open.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/nu8zej/803004/aeedb5937bed650f2f0cc4ec9ceaa5d3/1.0/_/download/batch/jira.webresources:bigpipe-init/jira.webresources:bigpipe-init.js","startTime":641.7000002861023,"connectEnd":2876.2000002861023,"connectStart":2827.4000000953674,"domainLookupEnd":2827.4000000953674,"domainLookupStart":2827.4000000953674,"fetchStart":641.7000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":2876.300000190735,"responseEnd":2903.2000002861023,"responseStart":2902.300000190735,"secureConnectionStart":2851.6000003814697},{"duration":1232.5,"initiatorType":"xmlhttprequest","name":"https://issues.oasis-open.org/rest/webResources/1.0/resources","startTime":1426.7000002861023,"connectEnd":2628.800000190735,"connectStart":2580.1000003814697,"domainLookupEnd":2580.1000003814697,"domainLookupStart":2580.1000003814697,"fetchStart":1426.7000002861023,"redirectEnd":0,"redirectStart":0,"requestStart":2628.9000000953674,"responseEnd":2659.2000002861023,"responseStart":2658.4000000953674,"secureConnectionStart":2604.300000190735}],"threshold":1000,"fetchStart":0,"domainLookupStart":305,"domainLookupEnd":355,"connectStart":356,"connectEnd":443,"secureConnectionStart":380,"requestStart":443,"responseStart":553,"responseEnd":642,"domLoading":556,"domInteractive":3379,"domContentLoadedEventStart":3379,"domContentLoadedEventEnd":3443,"domComplete":4305,"loadEventStart":4305,"loadEventEnd":4308,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[],"measures":[],"correlationId":"aa232acc897f0d","effectiveType":"4g","downlink":9.6,"rtt":0,"serverDuration":170,"dbReadsTimeInMs":19,"dbConnsTimeInMs":25,"applicationHash":"4d4040e0714d65b7fffa4801569d014c0b16eaa9","experiments":[]}}
The key points were:-
1 Clarify what store means and the fact that the server may purge / remove stuff as it sees fit.
2 An administrator may purge storage at any time
3 Elaborate minimal storage commitment for each QoS ?
4 QoS 0 messages may disappear at any time
5 Storage with respect to system outages / failures ?
Proposal above covers 2, 3 and 4 and second-half of 1.
First-half of 1 is covered when we describe store elsewhere IIRC.
5 is tricky to define...