ruby-on-rails-3 - 导轨 3 : How to simply test pessimistic locking on console

标签 ruby-on-rails-3 postgresql pessimistic-locking

我目前正在对 rails 3 + postgresql 进行悲观分析。但是似乎没有办法确认锁是否有效,除非我经历了并发测试的麻烦。没有办法通过控制台测试吗?

例子

User.transaction do 
  u1 = User.find(1, :lock => true)
  u2 = User.find(1)
  ## u2 should not be able to do anything right?
end

最佳答案

打开2个控制台

控制台 1:

User.transaction do 
  u = User.find(1, :lock => true)
  sleep(30)
end

一旦执行切换到控制台 2 然后执行此操作

控制台 2:

u = User.find(1)
u.name = "new name"
u.save!

然后您会看到控制台 2 不会提交它的更新,直到控制台 1 上的 30 秒 sleep 结束。

关于ruby-on-rails-3 - 导轨 3 : How to simply test pessimistic locking on console,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21404484/

相关文章:

ruby-on-rails - 新记录的多个文件上传

ruby-on-rails-3 - 长时间输出后退出 rails 控制台

linux - Thingsboard:数据库更改

sql - 从子查询追加字段

java - 是否有可能在 Spring Boot 中以两种不同的方法对 "lock"和 "unlock"进行悲观锁?

c# - 如何在库存分配方案中阻止此竞争条件?

ruby-on-rails - find_commentable 返回未定义的方法 `comments' for nil :NilClass

mysql - 带限制的 Stacking Rails 查询

postgresql - PSQL 不提示在 PowerShell 中输入密码

hibernate - 保存对象而不释放锁定?