【发布时间】:2012-05-17 13:27:42
【问题描述】:
我完全被我今天在我的应用程序中看到的内容所难倒。
我有一个用 Node.js 编写的应用程序,在 nginx 上运行,后端有 MongoDB。我有一个'authenticateUser' cal,它接受用户名和密码。然后它查询 MongoDB 以检索用户文档并检查密码是否匹配。
我们编写了一个脚本,它基本上在循环中调用 'authenticateUser' 100 次。它工作得很好。没有错误。现在我们从 2 个终端运行相同的脚本,一个用于用户 bill,另一个用于用户 sam。我们开始在两个终端上看到故障。我会说大约 10% 的请求因密码无效错误而失败。
当我们检查日志文件时,我们非常惊讶地发现 bill 的用户名与 sam 的密码混淆了。我们不知道发生了什么。我们一定是在做一些明显错误的事情。它是什么?这两个请求不是完全隔离的吗?
【问题讨论】:
-
代码库很大。我今天将尝试将相关部分复制并粘贴到此处。
-
你有没有机会用一个 20 行的脚本来重现它?