I've noticed a problem with monitoring a remote actor which is multiple hops away.
./remote_monitor -m 0 & # node-0
./remote_monitor -m 1 & # intermediate-1
./remote_monitor -m 2 & # intermediate-2
./remote_monitor -m 3 --client & # client-3
[Lookup-0] 8@269C7E6CC851EA8FDEB351D6CEF43BDC8B2A1BB8#20034
[TestActor] 9@269C7E6CC851EA8FDEB351D6CEF43BDC8B2A1BB8#20034
[Lookup-0] get_atom, sender: 11@46420117134EAEE8B47DBECE20384DBF086BAB13#20193
[Lookup-1] 10@C5F8EEB01469636361B5CE68737AFE1BDE37BB8A#20115
[Lookup-1] get_atom, sender: 11@46420117134EAEE8B47DBECE20384DBF086BAB13#20193
[Lookup-1] get next hop success: 8@269C7E6CC851EA8FDEB351D6CEF43BDC8B2A1BB8#20034
[Lookup-2] 10@66ACFB0928D1CE54E84CEBF98C06D48AD901E79E#20157
[Lookup-2] get_atom, sender: 11@46420117134EAEE8B47DBECE20384DBF086BAB13#20193
[Lookup-2] get next hop success: 10@C5F8EEB01469636361B5CE68737AFE1BDE37BB8A#20115
[Lookup-3] 10@46420117134EAEE8B47DBECE20384DBF086BAB13#20193
[Lookup-3] get_atom, sender: 11@46420117134EAEE8B47DBECE20384DBF086BAB13#20193
[Lookup-3] get next hop success: 10@66ACFB0928D1CE54E84CEBF98C06D48AD901E79E#20157
[Client-3] testActor 9@269C7E6CC851EA8FDEB351D6CEF43BDC8B2A1BB8#20034
[caf_flow:DEBUG] 2025-02-04T21:13:41.449653878+01:00 RECEIVE ; FROM = null ; CONTENT = message(caf::io::new_data_msg(8, [01, 00, 01, 14, 88, 27, C8, AB, 45, AD, EB, 7C, 5F, 9C, B7, EC, 76, B4, 3B, C5, 71, 92, 86, 83, 94, 01, 00, 01, 14, 07, D1, A6, FC, B8, EB, 4D, 6C, FC, 11, 41, CC, 54, 4C, 9F, 9E, 45, AE, B9, BA, 7C, 03, 00, 67, 00, 4F, 00, 0C, 04, 69, 6E, 66, 6F]))
[caf.io:DEBUG] 2025-02-04T21:13:41.449667033+01:00 hdr = anonymous(routed_message, 0, 0, 1, 62, 1152921504606846976, 14, 2)
[caf.io:WARN] 2025-02-04T21:13:41.449775793+01:00 cannot forward message, no route to destination
[caf_flow:DEBUG] 2025-02-04T21:13:41.449792657+01:00 FINALIZE
I've noticed a problem with monitoring a remote actor which is multiple hops away.
If an intermediate
actor_systemis shutdown themonitor-handler is not invoked.here is a "small" example program: https://github.com/allspark/actor-framework/blob/remote_monitor/examples/remoting/remote_monitor.cpp
when i execute the program multiple times:
The messages (
caf::registry_lookup_atom_v, "lookup"line 68) are correctly routed:client-3->intermediate-2->intermediate-1->node-0and the answer (the actor created in line 148) is received inclient-3but the
intermediate-2doesn't have a route tonode-0when theclient-3sends a message (line 122).example output:
node-0
intermediate-1
intermediate-2
client-3
with console log active on intermediate-2 (
--caf.logger.console.verbosity=DEBUG) it showed the warning