I am trying to run TallyPrime on Linux with Wine and it works very well for a single user.
My client has a setup with Citrix on Windows Server where multiple users use app streaming and run multiple Tally prime instances running on the same Windows Server with data on an NTFS volume. I am trying to replicate this setup in Linux with Wine to save cost. I am using docker containers run Wine and use VNC to stream the X11 session to the browser and the setup works pretty well.
The problem comes when multiple containers access Tally data folder in a Windows Citrix setup, but it fails in Linux. It produces errors related to database transactions when multiple clients access the data. Memory Access Violation, Data Corruption was common among them suggesting that being overwritten when multiple clients try to write to the Tally database.
Researching, I discovered it is due to file locking the Tally data is corrupted when multiple clients access it. I did a bind mount of data folder hoping it work initially, but it didn't because of lack of locking support in Linux.
After a bit of digging, I found that there is an option called mand in mount and it can enable mandatory locking that could solve the problem, but the mand mount option was deprecated in the kernel and is removed. Adding it to mount throws an error in dmesg. So mand is out of choice.
I tried to use ntfs-3g hoping its serial IO works like locking, but it failed.
I tried Samba, it works but is very slow that it becomes counter productive solution.
I tried ntfs3, but it lacks locking.
I tried ext4, xfs, ntfs3, ntfs-3g, zfs, FAT all fails.
I wonder how it works so well in Windows when multiple Tally clients access and write data and no issue happens, and this is not at all possible in Linux?
Windows won the game?
I am currently researching if nfsv4 will be a good fit.
In the mean time asking here to see if anyone can help with this issue of sharing data among multiple Tally clients on Linux running on docker?
The goal is to avoid data corruption and make it run stable like in Windows. Any help solving this puzzle is appreciated.