In Engine 2016.1.22.831 we introduced a change that began trimming the trailing `/` from certain URL configuration settings, including SystemHomePageUrl. Because of this change, the actor and authority properties used for TinCan/xAPI/cmi5 content could be slightly different than what would have been generated in previous versions of Engine. This difference could impact querying and reporting in some cases.
With the 2016.1.36.1062 release of Engine, we have reverted the behavior for SystemHomepageUrl so that it will not trim the trailing slash, and so should behave as it did before the change.
Who is affected
If you meet the following conditions, then you may be affected by this:
- You are using an Engine version of 2016.1.22 through 2016.1.35 in your production system. If you're not sure what version of Engine you are running, see this article for how to find out.
- You have the SystemHomepageUrl setting configured with a value that ends with a slash (/) character (eg. "http://example.domain.org/").
- You have TinCan/xAPI/cmi5 content that has sent statements to Engine while running one of these versions. If you're not sure if this applies to you, let us know and we can help you to query your Engine database to find out.
If you meet the first two conditions, but not the third, then there is no impact to your system. However, you should update to the latest maintenance release of Engine before using xAPI content.
If you do meet all the conditions, then please keep reading for further details on the impact of the change, and what steps you should take next.
As mentioned, SystemHomepageUrl is used to generate identifiers for the actor and authority used for TinCan/xAPI/cmi5 content and statements sent to Engine's LRS. These identifiers are considered immutable by the xAPI specification. The change in the trimming behavior effectively results in a changed SystemHomepageUrl, and therefore changed identifiers.
In effect, xAPI statements written before and after this behavior change will have different actor and authority properties set even when they shouldn't (one with the trailing `/`, one without). This duplication can result in:
- Reporting based on xAPI statements erroneously reporting about two "different" people that are really the same person
- Statements missing from requests to the `TCAPI/statements` endpoint due to permissions issues when the user requesting those statements incorrectly doesn't match the actor or authority
- Statements missing from requests to the `TCAPI/statements` endpoint due to specifically requesting statements about a particular actor, which have actually been stored as two different actor values (one with the `/`, one without)
If you are impacted by this issue, the first step is to determine whether you want to standardize on a SystemHomePageUrl with a trailing `/` or with no trailing `/`. Then you should install the latest version of Engine and make sure that your SystemHomepageUrl is set according to your decision.
Note: if most of your statements were generated while using one of the versions mentioned above, the best solution is to just remove the trailing slash from your SystemHomepageUrl value, and then Engine will continue to use a value without one.
We are currently working on a fix to mitigate the query issues mentioned above, so that statements using both forms of SystemHomepageUrl can be returned in one query. This will come in a subsequent maintenance release of Engine.
Depending on what you do with your xAPI statements, you may want to standardize your existing statements, so they only use one form of SystemHomepageUrl in the stored actor and authority properties. There is no "one size fits all" way to do this, so if you want to standardize your existing statements, please contact us to discuss the options.