We have an 11 year old Visual FoxPro application that this company developed. I started working on this 2 years ago and I am noticing a lot of the same consistent errors at our customer sites. The application is a single thread single tear application that accesses a local Visual FoxPro database. The users access the application by logging into a server via Terminal Server. So the standard setup is one BIG server with the app and DB local with multiple terminal server sessions accessing the app. In the last two years my team has addressed a lot of the big errors but we are baffled by the “record in use” error. Our larger clients (20 to 60 users) appear to encounter it much more than the smaller clients. When they encounter the error, we reindex tables in the database and it makes the error go away. However, within weeks the errors come back. We then reindex again and it works. I know, you’re asking yourself why we don’t have them reindex every night. Well we can but that does not solve the problem it just hides it. I would prefer to fix the problem.
I hear from others in the company that it appears that we have been having more of these error in the past 4 years than ever before. The main difference that we have is really the hardware. Now our customers have much bigger, faster servers. I believe that the main culprit is the speed of the processors and the multi-core hardware. I have found documents about Visual FoxPro and multithreading that lead me to this suspicion. According to Microsoft docs, every time a “select” statement is made, the OS runs that in another thread if available. Without coding for that, it appears to me that this could cause errors like “record in use” and “sequence out of sync”.
If there is anyone out there that knows VFP, can you shed some light on this for me? Am I on the right track or out to left field?