You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@metron.apache.org by Otto Fowler <ot...@gmail.com> on 2017/02/15 15:04:21 UTC

How would one debug MaaS service components during the integration test?

I would like to debug the MaaS service components while running the
MaasIntegrationTest, but none of my breakpoints ever hit.  Has anyone ever
done this?

Specifically I want to step through how the dummy_rest.sh gets called and
started.

Re: How would one debug MaaS service components during the integration test?

Posted by Casey Stella <ce...@gmail.com>.
Ok, so it's a bit weird, I'll admit, but it's the nature of the beast with
Yarn apps.

Here's the issue:
Code which executes in Yarn containers (e.g.
 org.apache.metron.maas.service.runner.Runner which is what the container
executes and is responsible for spinning up the model shell script and
registering the started model with the service registry) get run in
separate processes, so debugging isn't going to help you.

What I advise here for debug is to

   - Turn on more verbose logging by dropping a log4j.properties into
   src/main/resources that turns on debug logging or whatever level you think
   is appropriate
   - Run MaaS integration test
   - Monitor the target/MaasIntegrationTest directory.

Run find target/MaasIntegrationTest and you'll see a plethora of log files
for the app master and for the individual containers, etc.

This is what mine looks like during a run (irrelevant files to debugging
not included):

./MaasIntegrationTest-logDir-nm-0_0/application_1487172564786_0001/container_1487172564786_0001_01_000001
./MaasIntegrationTest-logDir-nm-0_0/application_1487172564786_0001/container_1487172564786_0001_01_000001/AppMaster.stderr
./MaasIntegrationTest-logDir-nm-0_0/application_1487172564786_0001/container_1487172564786_0001_01_000001/AppMaster.stdout
./MaasIntegrationTest-logDir-nm-0_0/application_1487172564786_0001/container_1487172564786_0001_01_000002/stderr
./MaasIntegrationTest-logDir-nm-0_0/application_1487172564786_0001/container_1487172564786_0001_01_000002/stdout


I know this is weird and it's inconvenient to have to go through these
unnatural acts to get log files much less not be able to set breakpoints,
but there are multiple containers and once you leave the process boundary,
your debugger as it's set up now, can't communicate.  If you figure out a
better way, it's probably worth noting.  At the end of this, I'll summarize
in a big fat comment on the Integration Test, how I suggest debugging so
future parties don't have to figure it out.

Thanks for your patience!

Casey

On Wed, Feb 15, 2017 at 7:04 AM, Otto Fowler <ot...@gmail.com>
wrote:

> I would like to debug the MaaS service components while running the
> MaasIntegrationTest, but none of my breakpoints ever hit.  Has anyone ever
> done this?
>
> Specifically I want to step through how the dummy_rest.sh gets called and
> started.
>