Skip to content

Commit 3f5de9e

Browse files
fix spark service responses
1 parent 399ff37 commit 3f5de9e

4 files changed

Lines changed: 32 additions & 23 deletions

File tree

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ollieos",
3-
"version": "2.3.9",
3+
"version": "2.3.10",
44
"description": "",
55
"main": "server.js",
66
"scripts": {

src/programs/core/ignition/index.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -135,26 +135,26 @@ export default {
135135
const service_msg = payload as IgnitionIPCServiceMessage;
136136
switch (service_msg.action) {
137137
case "start": {
138-
svc_mgr.start_service(service_msg.service_id);
138+
const [success, message] = svc_mgr.start_service(service_msg.service_id);
139139
ipc.channel_send(channel_id, process.pid, {
140-
type: "response",
141-
message: `Service ${service_msg.service_id} started.`
140+
type: success ? "response" : "error",
141+
message
142142
});
143143
break;
144144
}
145145
case "stop": {
146-
svc_mgr.stop_service(service_msg.service_id);
146+
const [success, message] = svc_mgr.stop_service(service_msg.service_id);
147147
ipc.channel_send(channel_id, process.pid, {
148-
type: "response",
149-
message: `Service ${service_msg.service_id} stopped.`
148+
type: success ? "response" : "error",
149+
message
150150
});
151151
break;
152152
}
153153
case "restart": {
154-
svc_mgr.restart_service(service_msg.service_id);
154+
const [success, message] = svc_mgr.restart_service(service_msg.service_id);
155155
ipc.channel_send(channel_id, process.pid, {
156-
type: "response",
157-
message: `Service ${service_msg.service_id} restarted.`
156+
type: success ? "response" : "error",
157+
message
158158
});
159159
break;
160160
}

src/programs/core/ignition/services.ts

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -259,14 +259,12 @@ export class ServiceManager {
259259
// TODO: check dependencies are running, start them if not (be careful of circular deps, could use calculate_service_start_order for this with a subset of 1)
260260

261261
if (this.#running_services.has(service_id)) {
262-
console.warn(`Service ${service_id} is already running.`);
263-
return;
262+
return [false, `Service ${service_id} is already running.`];
264263
}
265264

266265
const service = this.#service_files.get(service_id);
267266
if (!service) {
268-
console.error(`Service ${service_id} not found.`);
269-
return;
267+
return [false, `Service ${service_id} not found.`];
270268
}
271269

272270
// mark service as should be running, so exit handlers know to restart it
@@ -277,7 +275,7 @@ export class ServiceManager {
277275
spawn_result = this.#kernel.spawn(service.exec, service.args || [], undefined, service.privileged);
278276
} catch (e) {
279277
console.error(`Failed to start service ${service_id}:`, e);
280-
return;
278+
return [false, "Error starting service ${service_id}."];
281279
}
282280

283281
this.#running_services.set(service_id, spawn_result);
@@ -301,18 +299,18 @@ export class ServiceManager {
301299
this.#running_services.delete(service_id);
302300
this.#handle_service_exit(service_id, exit_code);
303301
});
302+
303+
return [true, `Service ${service_id} started successfully.`];
304304
}
305305

306306
stop_service(service_id: string) {
307307
if (!this.#running_services.has(service_id)) {
308-
console.warn(`Service ${service_id} is not running.`);
309-
return;
308+
return [false, `Service ${service_id} is not running.`];
310309
}
311310

312311
const spawn_result = this.#running_services.get(service_id);
313312
if (!spawn_result) {
314-
console.error(`Service ${service_id} spawn result not found.`);
315-
return;
313+
return [false, `Service ${service_id} process not found.`];
316314
}
317315

318316
const { process } = spawn_result;
@@ -324,11 +322,22 @@ export class ServiceManager {
324322
process.kill(143);
325323

326324
// removal from running services will be handled in exit listener
325+
return [true, `Service ${service_id} stopped successfully.`];
327326
}
328327

329328
restart_service(service_id: string) {
330-
this.stop_service(service_id);
331-
this.start_service(service_id); // TODO: will this conflict with the exit listener?
329+
const [stop_success, stop_msg] = this.stop_service(service_id);
330+
331+
if (!stop_success) {
332+
return [false, stop_msg];
333+
}
334+
335+
const [start_success, start_msg] = this.start_service(service_id); // TODO: will this conflict with the exit listener?
336+
if (!start_success) {
337+
return [false, start_msg];
338+
}
339+
340+
return [true, `Service ${service_id} restarted successfully.`];
332341
}
333342

334343
get_service_status(service_id: string): ServiceStatus | null {

0 commit comments

Comments
 (0)