Skip to content

Commit 5ede542

Browse files
authored
Allow refreshing again (#103)
1 parent 63b68b1 commit 5ede542

File tree

1 file changed

+10
-11
lines changed

1 file changed

+10
-11
lines changed

crates/pet/src/jsonrpc.rs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ use pet_conda::Conda;
77
use pet_conda::CondaLocator;
88
use pet_core::{
99
os_environment::{Environment, EnvironmentApi},
10-
reporter::Reporter,
1110
Configuration, Locator,
1211
};
1312
use pet_jsonrpc::{
@@ -32,7 +31,6 @@ use std::{
3231
use crate::{find::find_and_report_envs, locators::create_locators};
3332

3433
pub struct Context {
35-
reporter: Arc<dyn Reporter>,
3634
configuration: RwLock<Configuration>,
3735
locators: Arc<Vec<Arc<dyn Locator>>>,
3836
conda_locator: Arc<Conda>,
@@ -48,12 +46,9 @@ pub fn start_jsonrpc_server() {
4846
// These are globals for the the lifetime of the server.
4947
// Hence passed around as Arcs via the context.
5048
let environment = EnvironmentApi::new();
51-
let jsonrpc_reporter = Arc::new(jsonrpc::create_reporter());
52-
let reporter = Arc::new(CacheReporter::new(jsonrpc_reporter.clone()));
5349
let conda_locator = Arc::new(Conda::from(&environment));
5450
let poetry_locator = Arc::new(Poetry::from(&environment));
5551
let context = Context {
56-
reporter,
5752
locators: create_locators(conda_locator.clone(), poetry_locator.clone(), &environment),
5853
conda_locator,
5954
poetry_locator,
@@ -123,9 +118,11 @@ pub fn handle_refresh(context: Arc<Context>, id: u32, _params: Value) {
123118
// Start in a new thread, we can have multiple requests.
124119
thread::spawn(move || {
125120
let config = context.configuration.read().unwrap().clone();
121+
let reporter = Arc::new(CacheReporter::new(Arc::new(jsonrpc::create_reporter())));
122+
126123
trace!("Start refreshing environments, config: {:?}", config);
127124
let summary = find_and_report_envs(
128-
context.reporter.as_ref(),
125+
reporter.as_ref(),
129126
config,
130127
&context.locators,
131128
context.os_environment.deref(),
@@ -167,9 +164,9 @@ pub fn handle_refresh(context: Arc<Context>, id: u32, _params: Value) {
167164
.unwrap()
168165
.conda_executable
169166
.clone();
170-
let reporter = context.reporter.clone();
167+
let reporter_ref = reporter.clone();
171168
thread::spawn(move || {
172-
conda_locator.find_and_report_missing_envs(reporter.as_ref(), conda_executable);
169+
conda_locator.find_and_report_missing_envs(reporter_ref.as_ref(), conda_executable);
173170
Some(())
174171
});
175172

@@ -184,9 +181,10 @@ pub fn handle_refresh(context: Arc<Context>, id: u32, _params: Value) {
184181
.unwrap()
185182
.poetry_executable
186183
.clone();
187-
let reporter = context.reporter.clone();
184+
let reporter_ref = reporter.clone();
188185
thread::spawn(move || {
189-
poetry_locator.find_and_report_missing_envs(reporter.as_ref(), poetry_executable);
186+
poetry_locator
187+
.find_and_report_missing_envs(reporter_ref.as_ref(), poetry_executable);
190188
Some(())
191189
});
192190
}
@@ -212,8 +210,9 @@ pub fn handle_resolve(context: Arc<Context>, id: u32, params: Value) {
212210
{
213211
if let Some(resolved) = result.resolved {
214212
// Gather telemetry of this resolved env and see what we got wrong.
213+
let jsonrpc_reporter = jsonrpc::create_reporter();
215214
let _ = report_inaccuracies_identified_after_resolving(
216-
context.reporter.as_ref(),
215+
&jsonrpc_reporter,
217216
&result.discovered,
218217
&resolved,
219218
);

0 commit comments

Comments
 (0)