Describe the bug
push_messages() in framework/py/flwr/server/superlink/fleet/message_handler/message_handler.py indexes request.messages_list[0] unconditionally. An empty messages_list is a legitimate request: Fleet.PushMessages in fleet_servicer.py already has an explicit branch for it and logs "No replies to push", but it still calls push_messages() regardless, which then raises IndexError.
Steps/Code to Reproduce
from flwr.proto.fleet_pb2 import PushMessagesRequest
from flwr.server.superlink.fleet.message_handler.message_handler import push_messages
from flwr.server.superlink.linkstate.linkstate_factory import LinkStateFactory
from flwr.supercore.constant import FLWR_IN_MEMORY_DB_NAME
from flwr.supercore.object_store import ObjectStoreFactory
from flwr.superlink.federation import NoOpFederationManager
state = LinkStateFactory(FLWR_IN_MEMORY_DB_NAME, NoOpFederationManager(), ObjectStoreFactory()).state()
push_messages(request=PushMessagesRequest(messages_list=[], message_object_trees=[]), state=state)
Output:
IndexError: list index out of range
Expected Results
An empty messages_list should return a no-op PushMessagesResponse, matching what the servicer's own log message already implies happens.
Actual Results
IndexError, unhandled by the servicer, so the gRPC call fails.
Additional context
Have a fix + regression test ready to send as a PR.
Describe the bug
push_messages()inframework/py/flwr/server/superlink/fleet/message_handler/message_handler.pyindexesrequest.messages_list[0]unconditionally. An emptymessages_listis a legitimate request:Fleet.PushMessagesinfleet_servicer.pyalready has an explicit branch for it and logs"No replies to push", but it still callspush_messages()regardless, which then raisesIndexError.Steps/Code to Reproduce
Output:
Expected Results
An empty
messages_listshould return a no-opPushMessagesResponse, matching what the servicer's own log message already implies happens.Actual Results
IndexError, unhandled by the servicer, so the gRPC call fails.Additional context
Have a fix + regression test ready to send as a PR.