Which applications might have the problem?
Since the change was made in iOS 13, in the API used for communication between the device and the server, the applications that may be affected are all those that use data cache (Smart Devices Cache Management property set to “On”) regardless of the GeneXus version used to create them.
Offline applications that don’t call Online Procedures are not affected.
How is the problem manifested?
The device sends a new HTTP header that it didn’t send before (If-Modified-Since), causing the server to return data from the cache when it shouldn’t.
As a result, the values returned in some REST calls are not the correct ones. “Old” data is sent.
In addition, the applications under certain circumstances can show (or use internally) outdated data.
How to solve the problem
There are different options depending on the scenario and urgency of each case:
- Deleting the information from the cache of each of the Procedures that have the problem (a priori, all of them).
To this end, below the application’s web\Metadata\TableAccess directory, delete the .xml file corresponding to each Procedure involved.
These .xml files are not created/updated at runtime but at generation time so once they have been deleted they are not created again. If you update the server side, it is important not to display those .xml files again.
- Replacing the Java or .NET GXclasses according to the generator being used. They will be published at the beginning of the week of October 7 for all Upgrades of Version GX16.
In this case, you only have to deploy the server side of the application.
- Moving to GX16 Upgrade 6. This upgrade is currently "stable" and is scheduled to be released on October 23. The build with the specific fix to the cache problem will be published shortly and will be later than build 136304.
More information in SAC