Skip to content

Conversation

@vmcj
Copy link
Member

@vmcj vmcj commented Nov 17, 2025

This should be a minimal version to allow to run specific general tasks on the judgehosts. When we agree on this format the next step is to use such a script when a judgehosts registers and use that output to compare against other judgehosts and disable it if it differs from the others. That way someone can have a notion of how similar judgehosts should be without having to check manual.

I've tried to explain my reasoning in the commits to make reviewing and changes easier, this is probably not how we want it yet but a good start to discuss how this should work. So basically 2 questions:

  • Is this something we want?
  • Is this the way how we want it?

There are some empty commits for remarks I already had myself but left unanswered to not waste time on this route if we don't want it.

vmcj added 16 commits November 17, 2025 22:23
In case you have different GLIBC versions inside and outside of the chroot
we would get errors. As dynamic linking saves a bit of space we shouldn't
always do this but as we only do this for compare scripts and not the
submissions this is quite a small diskoverhead.
In a future commit we'll display those on the judgehost pages
as a simple way to run some shell commands on judgehosts.
Maybe we should run generic tasks with a dedicated user, that way we can limit
the allowed commands or even allow commands which need sudo.

Something like this:
https://at.magma-soft.at/sw/blog/posts/The_Only_Way_For_SSH_Forced_Commands/
or this:
https://stackoverflow.com/a/50067008
I've now limited it to admins, but I wonder if this is something which any jury
member should be able to do.
We can either pass the externalid or the id of the immutableexecutable. For now I went with the externalid as the immutable makes that it can be cached and we can use the wrong URL bij accident. The advantage of using the immutable is that we get some extra info about which versions were ran via the log. The same thing can be extracted from the judgetask table.
This does not return to the page which indicated it when you use the single judgehost task and are at the judgehosts page.
For some of those tasks it makes sense to get a diff between all judgehosts to see
how different those are.
@meisterT
Copy link
Member

I think something like this in general can be useful, didn't look at the code yet.

We need to think through the current UI/UX though:

  • The new table looks out of place and becomes ugly if you have too many judgehosts.
  • I haven't found where in the UI a scheduled generic task is reported,
  • or where the result is reported
  • It's unclear at first glance whether clicking on a possible script (on the page of an individual judgehost) would schedule it or let you view it
  • the add new executable page doesn't allow adding a "generic executable"
  • "Used as generic_task script" on the executable page doesn't really make sense (it is not associated with problems)

Perhaps we can find a whiteboard at KIT next week and talk through how it should look like?

@vmcj
Copy link
Member Author

vmcj commented Nov 22, 2025

Ui is indeed just a mockup, if we want it the next step was displaying the result with a good diff viewer.

@vmcj
Copy link
Member Author

vmcj commented Nov 23, 2025

I think something like this in general can be useful, didn't look at the code yet.

We need to think through the current UI/UX though:

* The new table looks out of place and becomes ugly if you have too many judgehosts.

I think it needs a proper bootstrap table, but this was just for the mockup.

* I haven't found where in the UI a scheduled generic task is reported,

I think this is almost instant so not sure if that is really needed.

* or where the result is reported

There is no page yet, if we like this I think I want it with a diff viewer as this makes most sense for scripts to compare output over different judgehosts (a startup script for example, or something which is ran before judgement starts) and to give a possibility to mark some output as desired and disable the judgehost when it gets another output.

* It's unclear at first glance whether clicking on a possible script (on the page of an individual judgehost) would schedule it or let you view it

It works the same as on the overview page, probably having the judgehost link as link to the script is better and have a button to trigger the run.

* the add new executable page doesn't allow adding a "generic executable"

* "Used as generic_task script" on the executable page doesn't really make sense (it is not associated with problems)

But having that empty is also strange IMO.

Perhaps we can find a whiteboard at KIT next week and talk through how it should look like?

I would have liked to get parts merged before NWERC to test with it at NWERC but lets discuss onsite.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants