Я устраняю проблему с приложением Visual Fox Pro (созданным на основе среды Visual Fox Express), которая, как я подозреваю, вызвана состоянием гонки. Приложение размещается на сервере Citrix XenApp, и при определенных условиях данные, отображаемые в определенной форме, представляются неверными и изменяются на что-то отличное от того, что вводит пользователь.
В рассматриваемой форме отображается список записей, возвращаемых по запросу в базе данных SQL Server на основе определенной информации, введенной пользователем.
Если это то, что происходит, я подозреваю, что последовательность событий примерно такая:
1) Пользователь 1 вводит данные и заставляет форму отображать сетку данных
результаты возвращены из базы данных.
2) Пользователь 2 открывает одну и ту же форму в другом сеансе Citrix и вводит данные
вызывая форму для отображения сетки данных результатов, возвращаемых из базы данных.
Этот курсор сохраняется на диск и перезаписывается, или как-то
конфликтует с курсором пользователя 1 для этой формы.
3) Некоторые механизмы курсора FoxPro на экземпляре пользователя 1 видят измененные данные
в курсоре (от пользователя 2) и обновляет экран данными из
курсор.
Я не знаю много о том, как работает FoxPro, но из того, что я понимаю, в некоторых случаях курсор будет сохранен во временном файле. На нашем сервере приложений Citrix эта временная папка может быть общей для 10-50 пользователей. Я ищу информацию о том, является ли состояние гонки, вызванное курсором, записанным в файл во временной папке, чем-то возможным, чтобы я мог продолжить поиск по этому пути или окончательно исключить его.
Я знаю, что есть способы сделать так, чтобы временные файлы FoxPro записывались в разные папки для каждого пользователя, и я работаю над внесением изменений, чтобы сделать это, но я хотел бы узнать, видел ли кто-нибудь еще похожая проблема или считает, что то, что я подозреваю, на самом деле возможно.