« FileMaker Cloud comin… | Home | MBS Xojo Plugins, ver… »

Heavy thread testing on FileMaker Server


In the last week we did some heavy testing on FileMaker Servers with parallel running scripts. When you run a dozen scripts in parallel using the same MBS functions, there is a lot of code accessing the same global data in memory.

For example when one script walks over a list of objects and another script removes an item from that list, there could be a problem that first script accesses the just deleted item in the list. To avoid that we use a lot of mutex objects for synchronization.

For some months now we try to do automated tests to check if our mutex handling is rock solid. You may have seen the Plugin.CallCounter function we added and wonder who needs it. For us it's a great way to see how many calls the test made. With some test runs, this count goes up far over a million.

For version 9.3 we had a few bug reports from two users, who run into issues. We did some test scripts and found the issues, fixed them and got clients happy. Version 9.4 includes all the fixes with improved mutex handling to avoid global variable access for this and similar cases. But this week, we went further and discovered two other issues, which may cause trouble. As with all those tests, it's unlikely in the real world you have several scripts calling the same functions at the same time and actually see a problem in normal usage.

Nevertheless when you test something more, you find issues. We are happy to fix two potential issues, which no customer yet reported, but we found them in our own tests: One potential issue with CURL script trigger and one in SQL connection cleanup. For linux we found another issue, which can cause a memory corruption after a few hours and this may need thousands of calls. If you use MBS FileMaker Plugin on FileMaker Cloud for AWS, please try the 9.5pr3 version as soon as we get it uploaded tomorrow.

If you find a script that uses MBS FileMaker Plugin to sometimes crash, please let us know and we could try to repeat it here. Sometimes a function needs to be called a lot of times or in multiple parallel running scripts. Some crashes occur only with a low probability or depend on external factors like network conditions. We try hard to get the plugin rock solid for you.
12 10 19 - 20:13