游标引起的竞争条件持续存在于临时文件中 - 是否可能

时间:2012-03-28 15:26:26

标签: race-condition foxpro visual-foxpro

我正在使用Visual Fox Pro应用程序(使用Visual Fox Express框架构建)解决问题,我怀疑这是由竞争条件引起的。该应用程序托管在Citrix XenApp服务器上,在某些情况下,某个表单上显示的数据似乎不正确,并且更改为用户输入的内容以外的其他内容。

有问题的表单显示基于用户输入的某些信息从SQL Server数据库上的查询返回的记录列表。

如果发生这种情况,我怀疑事件的顺序是这样的:

  1)用户1输入数据并使表格显示数据网格   结果从数据库返回。

     

2)用户2在不同的Citrix会话上打开相同的表单并输入数据   使表单显示从数据库返回的结果的网格数据。   此游标将持久保存到磁盘并覆盖,或以某种方式   与用户1的该表单光标冲突。

     

3)User 1实例上的一些FoxPro游标机制看到了更改的数据   在光标中(来自用户2)并使用来自的数据更新屏幕   光标。

我不太了解FoxPro的工作原理,但根据我的理解,在某些情况下,游标将被持久保存到临时文件中。在我们的Citrix应用程序服务器上,此临时文件夹可由10到50个用户共享。我正在寻找有关由写入temp文件夹中的文件的光标引起的竞争条件是否可能的信息,以便我可以继续研究该路径或明确规定它。

我知道有一些方法可以使FoxPro临时文件写入每个用户的不同文件夹,我正在进行更改,但我想知道是否有其他人看过类似的问题或认为我怀疑实际上是可能的。

2 个答案:

答案 0 :(得分:1)

IT确实听起来很奇怪,但是,Foxpro创建了用于显示和查询结果的游标临时表,例如本地或远程数据访问。但是,创建时,它们将创建为只读或读写,但仅适用于每个连接的人员。当尝试创建游标时,它会为结果生成一个随机文件名,并将其用作.dbf游标以呈现给用户。

这可能是一个赛车问题吗?我怀疑,但不知道相当旧的Visual FoxExpress框架的细节,不知道你将配置什么/在哪里动态使用临时文件的不同位置。它应该转到Windows环境变量的临时文件路径。因此,如果Citrix连接的用户对多个会话使用相同的用户/密码,是的,它将转到相同的位置,但是当尝试生成临时文件时,它将无法获得独占句柄并再次尝试使用下一个随机文件名。

答案 1 :(得分:1)

我说这里不太可能涉及临时文件。您创建的每个游标都使用不同的临时文件;我没有看到两个用户,即使在Citrix类型的情况下,也会共享一个临时文件。