Synchronizing problems in X

I am looking to find out if anybody using Pan X server has run into the following issues:

First, I have two Macs in my office accessing a remote server. If I create a new record on Mac1 and enter some data, Mac 2 will synchronize the new record but not the data. I am using server auto numbering of records. This is a little weird, but I am assuming the record is still locked, so the record showed up but not the data. So, I made a procedure to test to see if the record is still locked. It stays locked for as long as I care to wait for it to unlock. I have it set on the client to unlock after 20 seconds, but it doesn’t. It is also set on the server for a time out request in 30 seconds. If I move off of that record or synchronize, there are no locked records and synchronizing on Mac 2 shows the record and the data.

Question #1, How to get the record to unlock without moving off of it?

Secondly, a second user in a different location accesses the same databases on the same remote server. If she enters a record with data and moves off of the record, I can synchronize and see both the new record and the data. If I add a record and enter data, she can’t see it when she synchronizes. Her record count doesn’t change. If she quits and relaunches, it doesn’t appear, however, if I made changes to a form or procedure, those synchronize upon relaunching. She is obviously connected to server as it is receiving her actions, and I am able to synchronize them. What makes this scenario a little different is that I consistently get her updates, but she can’t get mine.

Question #2: Has anybody else experienced this?

btw: The server is always running.

Thanks for any feedback.

  • You can move to another record
  • You can use the File>Save command
  • You can use the Record>Unlock command

That should also do it. I just double checked that this still works, and it does. An important caveat, though, is that if you change the auto-lock setting after the database is first uploaded to the server, the change will only be on that particular computer. So if you forget to set the auto-lock timeout before uploading the database, you’ll have to go to each client computer to change it (different computers can have different timeouts). OR, you can do a new generation of the field structure, then the auto-unlock timeout will be updated on all computers, but that of course requires the database to be re-downloaded on every computer.

Please re-read the documentation on this feature. It’s not doing what you are thinking it does.

As long as the client computer is still running and connected to the server, this server timeout will never kick in. The purpose of this is as a failsafe in case a user locks a record, then puts their computer to sleep or the computer crashes. In that case, the server will notice that it is no longer hearing from the client computer, and only then will it unlock the record. Of course in that situation there will be no indication on the client end that this has happened, and any changes that the user has made will be lost.

30 seconds is probably too short for this setting. I would recommend more like 5 minutes. Remember, this is never going to kick in unless the user closes the lid and walks off with their computer or otherwise disconnects from the server.

If you have access to the server machine and can control the server, you can enable logging of server events, which are saved to a file on the server. You can view the log with a text editor, such as BBEdit, and see a record of server events, including adding a record, a client connecting to the server, a client locking a record, and unlocking a record (which appears in the log as committing changes.) You can even view events as they appear on the log. Doing this removes any doubt about what is happening between a client machine and the server.

Thanks Tom. We were actually watching the server log as we were making changes and the records were not unlockinging until we either moved off the record or or synchronized. I didn’t know save would unlock it as well.

Thanks Jim, however, I am consistently not seeing the unlock after 20 seconds.

Also, even when a record is unlocked she can’t synchronize my record changes even if she quits and relaunches and even though changes to forms and procedures update. I get her data changes and additions but she doesn’t get mine. The server log shows both of our data changes. If I synchronize on my second Mac, I see them. Another colleague can synchronize them as well. I’m wondering if there’s a setting I’m missing on her computer. I added the ability for her to download data today just to see if that will do it.

More testing today.

We are having similar problems. At this very moment we have a remote client computer (Client A) which added a record. That record was then populated with data by Client A. The other client computers synchronized and can see the new record, but the other clients cannot see the data entered by Client A. We had the other clients do a forced Download Data from the server. Still no visibility of the data on the other client computers. Client A started to re-enter the data overwriting the data that was already on the record. Client B could then get the data through a forced Download Data. The challenge that we have is highly complicated on our end, because we are running with 37 shared databases which are all inter-related. We hesitate to post many of our challenges, because we often are not sure if our problems are caused by PanX or by the lack of cerebral power of our developer, me. We struggle almost daily with synchronization problems of one kind or another.

Ah, so it’s not just me. I did some more testing today but just when I get one file working properly, one of the others that is updated by that database won’t sync. I’ll let you know if I can find some kind of consistency.

I need to add an important note about Panorama X. So far as we know, we have not suffered any data loss, despite the occasional problems with synchronization. We did experience loss of data and loss of connection to the server several weeks ago when we were initializing our files with a startup routine that used OpenSecret and subsequent use of Call .Initialize statements. After discovering that problem we have been using OpenDatabase statements to initialize our many files. Although our startup routine is slow at a little more than one minute and not pretty with the explosion of windows when initializing several files in short order, we have not lost any data. The connection to the server seems to be solid.

However, we continue to have some problems such as discovering that one computer has a different record count for a database compared to another computer. Synchronizing the file does not seem to solve the problem. We have been able to work around the problem with a forced Download Data. That tells me that data entered into the system is successfully stored on the server, but not always distributed to clients as we expect.

We have had some seemingly random problems with the non-critical New Generations. The other day I was on a Zoom call with another user. I made a change in some code and did a non-critical generation to update the server. The other user then synchronized the file, but that change in code was not passed to his machine. He then quit Panorama and re-started. Still there was no change in the remote user’s file. So I had everybody quit Panorama, and I performed a critical new generation. When the other users re-started Panorama, the code change that I had made finally showed up on the other machine.

We hope that some of these idiosyncrasies will be ironed out with the next Panorama X update. We remind ourselves that Panorama X is still in beta. In the meantime we are getting work done, and we are thankful that we have not lost any data.

Although not the same as the problems described above, I am experiencing what appears to be a synchronization problem. Here are the details:

Test Process (all the below occurs within the same networked database):

  1. Sync client computer database
  2. Change a form on master computer (while client database is still running)
  3. Upload a new generation (non-critical, with only forms changed)
  4. Change the form again.
  5. Upload a new generation (non-critical, with only forms changed).
  6. Attempt to sync client computer.

Result: Client computer database does not propagate form changes. Attempted sync a second time. Client database form still not updating. Closed database on client computer, then re-opened. Form on client computer then updates.

Seemingly, there is something different happening when the database is opened, as opposed to syncing while the database is opened.

This problem doesn’t occur if I only upload one generation, and then sync the client computer. The problem only occurs when I upload successive generations, without syncing the client computer in-between.

I am using version B30, on a Mac mini running Ventura.

For whatever it’s worth, the same sync routine is used in both situations. I didn’t write the sync code twice! So I’m not sure why that would be happening.

A question – are you sure synchronization isn’t happening? Could it be happening but the open form isn’t updating? What if you just close the form and re-open it? That would still be a bug, but it would be a different bug.

Thank you.

After repeating the test process above, instead of closing the database and re-opening, I just closed and re-opened the form, per your suggestion. This did not cause the form to update to the new generation. Next, I closed and re-opened the database. This caused the form to update to the current generation.

In summary, the record edits synchronize, but the form changes do not, even after closing and re-opeing the form.