Picture of Winston Ahsam
cmi.suspend_data hinders Adapt to load correctly
by Winston Ahsam - Friday, 13 May 2022, 6:52 AM
 

Hi,
For some time now inn our Adapt e-learning, randomly users complain that they get stuck in the e-learning authored by Adapt. Its not the case for the majority. For a while now pulling our hairs, we narrowed the issue to the cmi.suspend_data in the database. Below is what a working session looks like and one that does not. Can anyone help us understand why this may be happening?

-  Working session:
a":{"1. Det handlar om att rädda liv":"hSeAAIAAoWk0IFBAgA","2. Kontrollera medvetande och andning. Larma 112":"hSeAAAAAo2hMUj0nl00NBAgQIECA","3. Ge bröstkompressioner och inblåsningar":"hSeAAAAAouhUVj8ol5YIECBAgA","4. Anslut hjärtstartare":"hSeAAAAAouhcWkEpmBYIECBAgA","5. Åtgärder vid luftvägsstopp":"hSeAAAAAomg8SjklJBAgQIA"}
 
- Non-working session:
"a":{"1. Det handlar om att rädda liv":"hSeAQIAAoWk0IFBAgA","2. Kontrollera medvetande och andning. Larma 112":"hSeAQIAAoWj0JFBAgA","3. Ge bröstkompressioner och inblåsningar":"hSeAQIAAoWl8KFBAgA","4. Anslut hjärtstartare":"hSeAoIAAoWhcpFBAgA","5. Åtgärder vid luftvägsstopp":"hSeAgIAAoWiUlFBAgA"}
 
Spoor version: 3.10.1
Adapt authoring tool V5
 
Any pointers is much appreciated and Im also attaching the config.json file.
Picture of Oliver Foster
Re: cmi.suspend_data hinders Adapt to load correctly
by Oliver Foster - Friday, 13 May 2022, 8:24 AM
 

Definitely do no use sentences for the `_id` property. Please try following the convension in Adapt of using codes such as co-100, a-100, b-100, c-100. The suspend data, the place on the LMS where the course state is stored, has limited space, only 4kb. It is possibly the case that you're exhausing the suspend data limit.

Picture of Winston Ahsam
Re: cmi.suspend_data hinders Adapt to load correctly
by Winston Ahsam - Tuesday, 24 May 2022, 3:57 PM
 

Thanks for your reply, we'll look into using codes for the _'id' property.

That said, I don't think our problem is related to that. From what I see, suspend data is around 1200 bytes now, so there's plenty of free space to use.
From my testing, this seems to be somehow related to the "a" property inside suspend data. Unfortunately, I have not been able to locate anything dealing with this property in the code. I am not really familiar with Adapt code, so I may be looking at the wrong places. If you can point me in the right direction that would be great.

I say that the problem seems related to the "a" property because I found that this data looks different in working and nonworking attempts.
So, I tested editing suspend data for a non-working entry in the database, removing the "a" property altogether. After opening the course again, I see the "a" property regenerated, this time with the correct values, and now the user can take the course.
Another test that worked was copying a value from a working session: when I replace some of the values inside "a", that chapter works again.

In my previous post, you can see "a" data from a working and a non-working session. I noticed that these values are shorter in the non-working session. I assume that these are links to the chapters somehow, although I don't know how they are encoded. If I could decode those values, maybe we could get more info as to  where the problem is coming from.
 
Thank you.
Picture of Oliver Foster
Re: cmi.suspend_data hinders Adapt to load correctly
by Oliver Foster - Tuesday, 24 May 2022, 10:34 PM
 

Suspend data is also ASCII text, so you may have issues with some of the characters.

The a property is for the assessment.

https://github.com/adaptlearning/adapt-contrib-assessment/blob/8a4cbc7ed3fe25ee819f4733c9436080795bf375/js/assessment.js#L302-L311

Picture of Winston Ahsam
Re: cmi.suspend_data hinders Adapt to load correctly
by Winston Ahsam - Wednesday, 25 May 2022, 8:56 AM
 

Hi Oliver,

Thanx for this!!!! In a team discussion we wonder if the suspend data been sent is either incorrect or its missing/dropping some? For example a page has 5 test questions but only 3 get stored and somehow "Jams" the elearning. So the elearning isnt able to load correctly and all you see is the adapt loader. If you delete the users attempt the e-learning works again? So we know its the suspend data, but we dont know why this happens as its random. Do you have any theories to this?

Picture of Oliver Foster
Re: cmi.suspend_data hinders Adapt to load correctly
by Oliver Foster - Wednesday, 25 May 2022, 9:52 AM
 

Not realy, not without seeing the course I'm afraid. This is the first occurance of such a bug, so I'd need to be able to debug it to see what's going on.

It suggests to me that the save/restore functionality of spoor isn't reading your non-ascii characters correctly and is missing restoring some of the components.

It's hard to tell.

Picture of Winston Ahsam
Re: cmi.suspend_data hinders Adapt to load correctly
by Winston Ahsam - Wednesday, 25 May 2022, 11:12 AM
 

Hi Oliver,

I quite happy to share the elearning.zip for you to download? I also have a testsite but Ill need an ipadress. Is there a way to contact you via email? Our developer wrote this if it sheds light on anything. As I said this happens randomly. 99% of users have no issue. The other theory is possibly overload on the server database?

I managed to "unencrypt" the data, so we can look at the real contents.
This is an entry that works for chapter 2:
0,0,0,0,0,0,0,0,0,9,20,30,39,46,52,false,false,false,false,false,false
This is an entry that does not work:
0,0,2,0,1,0,0,0,0,30,9,false,false
 
As you say, it seems that less data is saved.
 
Now, if I look at the data for a working chapter 1 session, it has the same number of items as a non-working attempt for chapter 2.
0,0,0,0,1,0,0,0,0,38,8,false,false

 

I have no idea why this could happen, but it seems in a non-working attempt, the data saved has the same number of items as chapter 1, instead of each one being different (as it should be, as each chapter has different number of activities)
Picture of Winston Ahsam
Re: cmi.suspend_data hinders Adapt to load correctly
by Winston Ahsam - Friday, 27 May 2022, 5:26 AM
 

Hi Oliver,

We have reached a conclusion that what your saying seems to be the root of our problem. We never really thought of the Article/component titles as IDs that should be ASCII characters. We have long swedish titles and its seems when the algorithm is compressing/shrinking the data to save space it does not always do this correctly as we have some special characters. 

We read more here: https://scorm.com/blog/avoid-special-characters-in-scorm-runtime-data/

So were changing this and Ill report back if the issue resolves or continues. Thanx for the insight though it helped alot.

 

regards,

Winston

Picture of Winston Ahsam
Re: cmi.suspend_data hinders Adapt to load correctly
by Winston Ahsam - Saturday, 28 May 2022, 11:46 AM
 

Hi Oliver,

Even though I changed the IDs I can still replicate the issue. Can you see these logs to see if you notice anything?

https://cloud.scorm.com/sc/guest/ViewDebugLog?logId=fdbeca3f-0346-4618-ab2b-4a455e491c40&courseTitle=Hj%C3%A4rt-lungr%C3%A4ddning+Vuxen

 

Thanx,

 

Picture of Oliver Foster
Re: cmi.suspend_data hinders Adapt to load correctly
by Oliver Foster - Thursday, 9 June 2022, 3:31 PM
Picture of Winston Ahsam
Re: cmi.suspend_data hinders Adapt to load correctly
by Winston Ahsam - Monday, 30 May 2022, 9:59 AM
 

SOLVED!!!!!

The pain of duplicating Articles that already have an assesment (ID) name. We had 2 articles with identical Assesments when the article was copied. I never thought to check the article that didnt matter as it did not have test questions in it. So we had duplicate assements with the same assesment id.  iF THE SUSPEND_DATA caught the right one you were ok, but if caught the wrong one the e-learning freezes. This could be replicated in Scormcloud also provided you tried many attempts before the elearning stopped working. 

Now using unique ids (names) in the assement this solved the issue. things to chck if you should experience this is

  1. ASCII character compliance
  2. Check for Duplicate ids
  3. Suspend data size does not exceed 4096 characters
Picture of Oliver Foster
Re: cmi.suspend_data hinders Adapt to load correctly
by Oliver Foster - Thursday, 9 June 2022, 3:32 PM
 

Good good.

Thanks for letting me know.