Kinetic won't load - sits at white screen or spinning blue circle gets stuck

Hey All - Happy Friday!!

The Client Lockup error has been corrected and Epicor Cloud customers will get a quick Auto-Update next time the Smart Client is started. This has been distributed to Live, Pilot, and Additional environments running 2024.2.

There are actually a couple of issues at play here. The Client lockup was due to a longstanding race condition in the Client caching code - the error has existed for more than 15 years. With 2024.2, that error was reliably triggered due to Server code changes made in 2024.2 in combination with large amounts of metadata being downloaded during Client logon. The potential for the race condition “lockup” involves Client performance (runtime and hardware), network speed, Server performance, and data packet size.

The quick workaround to the issue was to prevent or reduce the size of the Class Attributes cache download during logon. That is controlled by the MaxClssAttrMRU setting in the Client Sysconfig. Now that we have corrected the software error, you should go ahead and reset the values in the 2 MRU setting - start conservative with 60 for the BOMRU and 40 for the ClssAttrMRU.

Those setting control 2 XML files that are built up as the client is used and forms request metadata from the Server. The metadata for a Service (BO) or Dataset (ClssAttr) is the same regardless of what form needs the information so it is fetched once per Client session and then it is cached in Client memory - not in the disk cache. Every time a form requests the metadata for a Service or Dataset the client tracks that and increments a counter associated with the Service / Dataset reference.

When the Client is closed, we run through the “reference counts” and we build an XML document with the top nn most used Services and Datasets - where nn is the value of the MRU Settings in the Sysconfig. The XML documents are then written out into the Client disk cache so that next time the Client starts, we will pre-load the Metadata into memory so that the Client forms will open faster since the necessary metadata is already on the client.

The Service and Dataset metadata is fetched individually as a form loads and can add several seconds to form startup - a large form like Sales Order makes over 25 different metadata requests as it loads. When the BO and Class Attributes are pre-loaded during logon, we request all nn definitions in one call. While that reduces the overall time required to get the data it does result in a large data payload that needs to be processed and loaded into memory. To prevent the pre-fetch from slowing initial logon, it is done on a background thread where we need to manage concurrency, and it was in that code where we had the potential for a race condition lockup.

Okay - so for all of you who have stuck it out and have read all of this, congratulations!

For all of you tech types that have taken the time to understand this convoluted writeup and are scratching your heads and saying “But Rich, those Sysconfig Settings sound like Most Frequently Used (MFU) and not Most Recently Used (MRU)”. You are correct - our naming of those Sysconfig settings is misleading and you should reward yourself with an extra adult beverage for recognizing that.

18 Likes