我们拥有庞大的旧系统。它存在一个已经存在一段时间的错误,即在10000个请求中有1个错误,这种方法应该从一个很小的表(10行)中返回一个众所周知的ID,该方法会返回一个“疯狂的”值,令我们惊讶的是几乎总是系统另一个表的ID。此方法仅在数据库上运行一个简单的SELECT查询。
我们注意到有两个类(使用一个似乎与该错误所在的位置有关的类)来为数据库连接使用静态成员:
public class Accounts
{
private static Database db;
private static Database DB
{
get
{
if (db == null)
{
db = DatabaseFactory.CreateDatabase();
}
return db;
}
}
...
}
这很危险吗?我们不确定这是否会带来线程安全问题,例如我们之前提到的错误,听起来很像是同步错误。