2

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.

Greg Askew
  • 39,132

2 Answers2

1

Given how much ongoing pain and cost in time it would be running stuff in Wine through containers sounds like it would be. I'd just pony up the cost of running them on Windows.

I personally wouldn't really trust any software to being production grade quality when it is running through Wine.

Part of the skill of a sysadmin is pragmatism.

Consider the cost in man-hours, licenses and downtime it will be to run this in Wine on containers to the appropriate scale you want.

Now consider the cost in man-hours, licenses and downtime you'd have doing it in Windows.

Choose the most economical. Not every solution should be nor need be technical.

Sometimes, the pain really isn't worth it, especially for production grade systems.

Matthew Ife
  • 24,261
0

NTFS comes with native file-locking support. Not the case with LINUX based systems. NFSv4 comes with native file locking feauture, but you may experience latency. If possible, skip TallyPrime & move to a DB.

Kiyomizu
  • 126