Skip to content

Commit a15ddf4

Browse files
authored
fix simulator missing client heartbeat call. (#1196)
1 parent 01f3bb4 commit a15ddf4

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

nvflare/private/fed/app/deployer/simulator_deployer.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
from nvflare.private.fed.client.admin_msg_sender import AdminMessageSender
2323
from nvflare.private.fed.client.client_req_processors import ClientRequestProcessors
2424
from nvflare.private.fed.client.fed_client import FederatedClient
25-
from nvflare.private.fed.simulator.simulator_client_engine import SimulatorClientEngine
25+
from nvflare.private.fed.simulator.simulator_client_engine import SimulatorClientEngine, SimulatorParentClientEngine
2626
from nvflare.private.fed.simulator.simulator_server import SimulatorServer
2727

2828
from .base_client_deployer import BaseClientDeployer
@@ -69,6 +69,8 @@ def create_fl_client(self, client_name, args):
6969
deployer.build(build_ctx)
7070
federated_client = deployer.create_fed_client(args)
7171

72+
client_engine = SimulatorParentClientEngine()
73+
federated_client.set_client_engine(client_engine)
7274
federated_client.register()
7375
federated_client.start_heartbeat()
7476
federated_client.run_manager = None

nvflare/private/fed/simulator/simulator_client_engine.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
from nvflare.apis.shareable import ReservedHeaderKey, Shareable
1616
from nvflare.private.fed.client.client_engine import ClientEngine
17+
from nvflare.private.fed.simulator.simulator_const import SimulatorConstants
1718

1819

1920
class SimulatorClientEngine(ClientEngine):
@@ -26,3 +27,11 @@ def send_aux_command(self, shareable: Shareable, job_id):
2627
with run_manager.new_context() as fl_ctx:
2728
topic = shareable.get_header(ReservedHeaderKey.TOPIC)
2829
return run_manager.dispatch(topic=topic, request=shareable, fl_ctx=fl_ctx)
30+
31+
32+
class SimulatorParentClientEngine(ClientEngine):
33+
def __init__(self):
34+
pass
35+
36+
def get_all_job_ids(self):
37+
return [SimulatorConstants.JOB_NAME]

0 commit comments

Comments
 (0)