Skip to content

Commit 06d429d

Browse files
authored
fixing code scan alerts in main (#307)
Signed-off-by: nikhil2611 <[email protected]>
1 parent da4ace0 commit 06d429d

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

lib/chef-cli/chef_server_api_multi.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,10 @@ def streaming_request(*args, &block)
6666
end
6767

6868
def client_for_thread
69-
Thread.current[:chef_server_api_multi] ||= Chef::ServerAPI.new(@url, @opts)
69+
# Use thread_variable_* methods instead of Thread.current[] to avoid
70+
# fiber-local variable issues and provide better thread isolation
71+
Thread.current.thread_variable_get(:chef_server_api_multi) ||
72+
Thread.current.thread_variable_set(:chef_server_api_multi, Chef::ServerAPI.new(@url, @opts))
7073
end
7174

7275
end

spec/unit/chef_server_api_multi_spec.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
before do
4545
# clean out thread local storage or else `chef_server_api` instance double
4646
# will get re-used across test examples and rspec will complain:
47-
Thread.current[:chef_server_api_multi] = nil
47+
Thread.current.thread_variable_set(:chef_server_api_multi, nil)
4848
allow(Chef::ServerAPI).to receive(:new).with(url, expected_server_api_opts).and_return(chef_server_api)
4949
end
5050

@@ -57,8 +57,8 @@
5757
end
5858

5959
it "creates a thread-local Chef::ServerAPI object for requests" do
60-
server_api_multi.client_for_thread # force `||=` to run
61-
expect(server_api_multi.client_for_thread).to eq(Thread.current[:chef_server_api_multi])
60+
server_api_multi.client_for_thread # force lazy initialization to run
61+
expect(server_api_multi.client_for_thread).to eq(Thread.current.thread_variable_get(:chef_server_api_multi))
6262
end
6363

6464
describe "when keepalives are disabled" do

0 commit comments

Comments
 (0)