Torsten Curdt wrote:
Executing users' code in system daemons is a security risk.
Of course there is security benefit in starting the jobs in a different
JVM but if you don't trust the code you are executing this is probably
not for you either. So bottom line is - if you weight up the performance
penalty against the gained security I am still no excited about the JVM
spawning idea.
If you really consider security that big of a problem - come up with
your own language to ease and restrict the jobs.
I think security here was more about 'taking down the whole task
tracker' risk.
Being a complete idiot for distributed computing, I would say it is easy
to explode a JVM when doing such distributed jobs, (should it be for OOM
or anything).
If you run within the task tracker vm you'll have to carefully size the
tracker vm to accommodate potentially the resources of all possibles
jobs running at the same time or simply allocate a gigantic amount of
resources 'just in case', which kind of offset the benefits of any
performance improvement to stability.
Not mentioning cleaning up all the mess left by running jobs including
flushing the introspection cache to avoid leaks, which will then impact
performance of other jobs since it is not a selective flush.
Failing jobs are not exactly uncommon and running things in a sandboxed
environment with less risk for the tracker seems like a perfectly
reasonable choice. So yeah, vm pooling certainly makes perfect sense for
it or should probably look at what Doug suggests as well.
My 0.01 kopek ;)
-- stephane