Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
663206d2
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
663206d2
编写于
7月 10, 2019
作者:
E
Eileen M. Uchitelle
提交者:
eileencodes
7月 10, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Merge pull request #36618 from engwan/fix-query-cache-with-shared-ar-connection
Fix query cache when using shared connections
上级
8efdd545
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
35 addition
and
5 deletion
+35
-5
activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb
...ve_record/connection_adapters/abstract/connection_pool.rb
+6
-2
activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb
...active_record/connection_adapters/abstract/query_cache.rb
+3
-3
activerecord/test/cases/query_cache_test.rb
activerecord/test/cases/query_cache_test.rb
+26
-0
未找到文件。
activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb
浏览文件 @
663206d2
...
...
@@ -373,7 +373,7 @@ def lock_thread=(lock_thread)
# #connection can be called any number of times; the connection is
# held in a cache keyed by a thread.
def
connection
@thread_cached_conns
[
connection_cache_key
(
@lock_thread
||
Thread
.
current
)]
||=
checkout
@thread_cached_conns
[
connection_cache_key
(
current_thread
)]
||=
checkout
end
# Returns true if there is an open connection being used for the current thread.
...
...
@@ -382,7 +382,7 @@ def connection
# #connection or #with_connection methods. Connections obtained through
# #checkout will not be detected by #active_connection?
def
active_connection?
@thread_cached_conns
[
connection_cache_key
(
Thread
.
current
)]
@thread_cached_conns
[
connection_cache_key
(
current_thread
)]
end
# Signal that the thread is finished with the current connection.
...
...
@@ -618,6 +618,10 @@ def connection_cache_key(thread)
thread
end
def
current_thread
@lock_thread
||
Thread
.
current
end
# Take control of all existing connections so a "group" action such as
# reload/disconnect can be performed safely. It is no longer enough to
# wrap it in +synchronize+ because some pool's actions are allowed
...
...
activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb
浏览文件 @
663206d2
...
...
@@ -28,17 +28,17 @@ def initialize(*)
end
def
enable_query_cache!
@query_cache_enabled
[
connection_cache_key
(
Thread
.
current
)]
=
true
@query_cache_enabled
[
connection_cache_key
(
current_thread
)]
=
true
connection
.
enable_query_cache!
if
active_connection?
end
def
disable_query_cache!
@query_cache_enabled
.
delete
connection_cache_key
(
Thread
.
current
)
@query_cache_enabled
.
delete
connection_cache_key
(
current_thread
)
connection
.
disable_query_cache!
if
active_connection?
end
def
query_cache_enabled
@query_cache_enabled
[
connection_cache_key
(
Thread
.
current
)]
@query_cache_enabled
[
connection_cache_key
(
current_thread
)]
end
end
...
...
activerecord/test/cases/query_cache_test.rb
浏览文件 @
663206d2
...
...
@@ -465,6 +465,32 @@ def test_query_caching_is_local_to_the_current_thread
end
end
def
test_query_cache_is_enabled_on_all_connection_pools
middleware
{
ActiveRecord
::
Base
.
connection_handler
.
connection_pool_list
.
each
do
|
pool
|
assert
pool
.
query_cache_enabled
assert
pool
.
connection
.
query_cache_enabled
end
}.
call
({})
end
def
test_query_cache_is_enabled_in_threads_with_shared_connection
ActiveRecord
::
Base
.
connection_pool
.
lock_thread
=
true
assert_cache
:off
thread_a
=
Thread
.
new
do
middleware
{
|
env
|
assert_cache
:clean
[
200
,
{},
nil
]
}.
call
({})
end
thread_a
.
join
ActiveRecord
::
Base
.
connection_pool
.
lock_thread
=
false
end
private
def
middleware
(
&
app
)
executor
=
Class
.
new
(
ActiveSupport
::
Executor
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录