Goldenseal Files and the Internet (Feb 18)

A long-time user recently posted a message about their use of OneDrive to run Goldenseal from multiple computers. They store company data in the cloud, rather than on a local drive.

A warning: we have not tested Goldenseal for use with files stored remotely on OneDrive, iCloud, DropBox, Google Drive or other remote file services. We designed Goldenseal to save data on a local disk (hard drive or SSD), or to a local server if you have the multi-user version. Saving files over the Internet is much riskier.

Many apps have relatively small files that are easy to keep in synch. Some apps with large files only add new info at the end of the file, so there isn’t much to change with each file update.

Goldenseal company files are more difficult because they are big, and because changes are scattered through the entire file. That makes it harder to sync data between two locations. For example, a new material purchase posts changes to the vendor account, the job account, and a couple of utility accounts. It may also updated prices in some Cost Items. All those records could be anywhere within the file. If they get out of sync, you will have mystery accounting problems later.

Even worse, if records change in size, Goldenseal will move them to somewhere else in the file where there is available space. If the indexes that store record locations get out of sync, the file will have serious problems. You may lose data, or the file may become completely unusable.

There definitely will be problems if more than one person uses a remote file. If two users both change a record at about the same time, one set of changes will probably be lost. You’ll get mystery problems later.

Even with one user, a remote file is more risky. Our code is careful to save all changes to disk at the same time, so there is only a small fraction of second when a crash could cause data corruption.  OneDrive and iCloud transfer data to and from the remote file at unexpected times. The update process may take many seconds. It means more opportunities for something to go wrong.

If you do decide to use a remote file despite these warnings, use the Verify File command frequently to check for file damage. Also, please send us the exact text of any error messages you see. It helps us make Goldenseal more bullet-proof. Most of our messages include the source code location where the problem occurred, so include that in your error report.  It makes debugging much, much easier.

Goldenseal multi-user currently uses Unix sockets to communicate over the network. It locks records while they are in use, so another user won’t ever conflict (they can view that record, but can’t change it).

To be technical, we use TCP/IP to send messages between clients and the server. They can travel over a wired or wireless LAN (local area network), or over an Internet connection. When a client looks for a server, it currently broadcasts via UDP.  That can’t go out into the general Internet. A few users have been successful at setting up a VPN (virtual private network) to allow UDP to broadcast over it, but the process is not easy. We tried it here but gave up.

As a 64-bit app, Goldenseal Pro can use more modern Internet access tools.  That will allow us to set up a local server that can be reached by any Internet-connected device: laptop, phone, pad or whatever.

Dennis Kolva
Programming Director


Author: Dennis Kolva

Programming Director for Turtle Creek Software. Design & planning of accounting and estimating software.