-
-
Notifications
You must be signed in to change notification settings - Fork 321
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Introducing an additional parameter for launcher run_client closures #2684
base: main
Are you sure you want to change the base?
Conversation
I don't think this is good. |
Also, just in general, we should not assume that every fuzzer has client id. it's a specific identifier to llmp communication, not something to distinguish fuzzer instance |
That's fair, I haven't thought of that. I still feel like having an id there that uniquely identifies the client is a good idea. I guess in that case we're back to creating a second @domenukk Opinions? |
yeah whatever number is fine. such as |
I think having something predictable is better, again because of restarts. If we have |
yeah it's good |
And another downside is that this id is not going to match whatever the monitors display. That might lead to confusion. |
IIRC that monitor isn't even displaying the clientid |
The basic implementation does (the number after the # is the sender id of the llmp message):
|
uh ok. |
I think the problem of varying client id after restart is a unique problem to centralized broker. |
How about we generate a new ClientId based on the core/overcommit but leave the getter functions for the LLMP ClientId on the managers, this way they are still accessible if anyone ever needs it, but the more obvious option is the "correct" one. |
no... things are much more complex than that. First,... what you call as If we do like you said there're alot of problems. So client id is the id that should only be used inside llmp. not for anything else. |
The only interesting one of those 4 is the sender id in the client->broker direction, since this is what is printed in the monitors. I don't really need this information for my current projects, but I figured it'd be worth a suggestion since it's already built and it may be helpful for someone down the line. I'm still curious about @domenukk's opinion though, since he's the one who initially suggested using the LLMP ClientId. |
Yeah, but i'm saying even if it is not interesting you have to put something for the llmp to work. and you can't put core/overcommimt there. Also llmp is independent of Launcher. that means it'd be a problem if you don't use Launcher / core pinning |
ClientId was supposed to be unique and survive reboots. That's literally what it's for :D |
IMHO |
That being said, we shouldn't add more parameters to the closure in any case. I suggested either adding it into state or extending CoreId to |
It's not unique for fuzzers. it's only unique for communication. As I said, each fuzzer-to-broker communication have 4 client ids assigned to each Sender and Receiver. |
Yes and we shoudl pick one as fuzzer node id IMHO |
So I guess we're basically back to #2676? Or do we want to integrate a LLMP id somewhere right now? Personally, I think that in the long run, there should be one identifier per client/node that is globally unique and used throughout any user-facing interface, including launchers, monitors, and everything else. It may make sense to couple those with LLMP ids, since LLMP also needs unique ids per client, but if there are good reasons to do something else, that's fine too — in that case however it would likely need to be synced along with the messages. I don't know LLMP and the entire architecture nearly well enough to make a judgement call about this. |
Yeah, if you really mean "globally unique" then here you can't even use coreid as the identifier. you can run fuzzers on multiple machines and aggregate logs from others, and in that case, the core id is not a valid globally unique identifier
No. imo you shouldn't. "LLMP also needs unique ids per client", yeah, but it's not globally unique. it's only unique within it's sequence of connections. And this is what makes the logs from monitors "looks" unique. because the monitor is simply printing Broker's receiver's client id (which is unique) but if this assumption breaks, for example, if you have two brokers emitting the logs to stdout, nothing is unique anymore. |
if you "just" want a globally unique id. then you should use uuid |
Follow-up to #2676.
With
Launcher::overcommit
,CoreId
is no longer necessarily unique.ClientId
is generated in LLMP, therefore unique, and an immutable borrow of it is passed to the closure.