task.opts is a bit tricky to use right now.
The most common thing that I see people want to do are:
- Change the Xmx setting for their Samza containers.
- Turn on a remote debugger.
- Change garbage collector settings.
Most of the time they do this in dev-mode (using LocalJobFactory).
Changing task.opts is tricky for a number of reasons.
1. Changing task.opts at all eliminates all of the defaults. This means, if you set -Xmx, you lose all the defaults set in run-class.sh when no JVM_OPTS is set (log settings, Java system properties, etc).
2. LocalJobFactory uses ThreadJob by default, which doesn't even pay attention to task.opts (since it starts the container as a thread, not a new process).
3. If you manage to figure out how to switch LocalJobFactory to use ProcessJob (undocumented), you end up with the SamzaContainer running as a separate process with no way to kill it (the LocalJobRunner starts the ProcessJob, then exits).