[ 
https://issues.apache.org/jira/browse/OOZIE-3170?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16349229#comment-16349229
 ] 

Jason Phelps commented on OOZIE-3170:
-------------------------------------

[~asasvari], I did not notice that there was still an NPE being thrown. That 
one was due to the ShareLibService requiring the ActionService class. Like you 
said, it was not affecting the outcome of the collection, which ultimately 
succeeded.

The main cause for issue in this Jira  was because my configuration had the 
following set:
{code:java}
 <property>
 <name>oozie.services.ext</name>
 
<value>org.apache.oozie.service.PartitionDependencyManagerService,org.apache.oozie.service.HCatAccessorService,org.apache.oozie.service.MetricsInstrumentationService</value>
 </property>{code}
 It looks like the PartitionDependencyManagerService required several 
additional services, including the JobsConcurrencyService.class I added in the 
earlier patch. I don't think the bundle collection would need any custom 
classes set, so I modified the code to unset it, as well as remove several 
loaded classes that were not necessary (i.e. they didn't fail the collection). 

In addition, I think the best way for the logs to be handled would be to dump 
them in the same place as the output zip file. I restructured it to output to a 
time-stamped directory in the {{-output}} directory (if oozie.log.dir is not 
set), and to dump everything in that. I have uploaded a new patch. Please let 
me know your thoughts

> Oozie Diagnostic Bundle tool fails with NPE due to missing service class
> ------------------------------------------------------------------------
>
>                 Key: OOZIE-3170
>                 URL: https://issues.apache.org/jira/browse/OOZIE-3170
>             Project: Oozie
>          Issue Type: Bug
>    Affects Versions: 5.0.0b1
>            Reporter: Jason Phelps
>            Assignee: Jason Phelps
>            Priority: Major
>         Attachments: OOZIE-3170-1.patch
>
>
>  
> When I ran the below command after doing a clean build from the main branch
> {code:java}
> bin/oozie-diag-bundle-collector.sh -oozie 
> http://jphelps-60-1.gce.cloudera.com:11000/oozie -output /tmp/jobs/
> {code}
> It will fail with an NPE. I apologize as I did not copy the client error, but 
> the error in oozie.log is below:
> {code:java}
> 2018-01-25 10:53:58,123 ERROR ShareLibService:517 - SERVER[] 
> org.apache.oozie.service.ServiceException: E0104: Could not fully initialize 
> service [org.apache.oozie.service.ShareLibService], Not able to cache 
> sharelib. An Admin needs to install the sharelib with oozie-setup.sh and 
> issue the 'oozie admin' CLI command to update the sharelib
> org.apache.oozie.service.ServiceException: E0104: Could not fully initialize 
> service [org.apache.oozie.service.ShareLibService], Not able to cache 
> sharelib. An Admin needs to install the sharelib with oozie-setup.sh and 
> issue the 'oozie admin' CLI command to update the sharelib
>  at org.apache.oozie.service.ShareLibService.init(ShareLibService.java:144)
>  at org.apache.oozie.service.Services.setServiceInternal(Services.java:386)
>  at org.apache.oozie.service.Services.setService(Services.java:372)
>  at org.apache.oozie.service.Services.loadServices(Services.java:304)
>  at org.apache.oozie.service.Services.init(Services.java:212)
>  at 
> org.apache.oozie.tools.diag.DiagBundleCollectorDriver.initOozieServices(DiagBundleCollectorDriver.java:153)
>  at 
> org.apache.oozie.tools.diag.DiagBundleCollectorDriver.setHadoopConfig(DiagBundleCollectorDriver.java:135)
>  at 
> org.apache.oozie.tools.diag.DiagBundleCollectorDriver.run(DiagBundleCollectorDriver.java:56)
>  at 
> org.apache.oozie.tools.diag.DiagBundleCollectorDriver.main(DiagBundleCollectorDriver.java:52)
> Caused by: java.lang.NullPointerException
>  at 
> org.apache.oozie.service.ShareLibService.cacheActionKeySharelibConfList(ShareLibService.java:878)
>  at org.apache.oozie.service.ShareLibService.init(ShareLibService.java:132)
>  ... 8 more
> 2018-01-25 10:53:58,130 INFO PartitionDependencyManagerService:520 - SERVER[] 
> PartitionDependencyManagerService initialized. Dependency cache is 
> org.apache.oozie.dependency.hcat.SimpleHCatDependencyCache
> 2018-01-25 10:53:58,131 FATAL Services:514 - SERVER[] Runtime Exception 
> during Services Load. Check your list of {0} or {1}
> java.lang.NullPointerException
>  at 
> org.apache.oozie.service.PartitionDependencyManagerService.init(PartitionDependencyManagerService.java:81)
>  at 
> org.apache.oozie.service.PartitionDependencyManagerService.init(PartitionDependencyManagerService.java:71)
>  at org.apache.oozie.service.Services.setServiceInternal(Services.java:386)
>  at org.apache.oozie.service.Services.setService(Services.java:372)
>  at org.apache.oozie.service.Services.loadServices(Services.java:304)
>  at org.apache.oozie.service.Services.init(Services.java:212)
>  at 
> org.apache.oozie.tools.diag.DiagBundleCollectorDriver.initOozieServices(DiagBundleCollectorDriver.java:153)
>  at 
> org.apache.oozie.tools.diag.DiagBundleCollectorDriver.setHadoopConfig(DiagBundleCollectorDriver.java:135)
>  at 
> org.apache.oozie.tools.diag.DiagBundleCollectorDriver.run(DiagBundleCollectorDriver.java:56)
>  at 
> org.apache.oozie.tools.diag.DiagBundleCollectorDriver.main(DiagBundleCollectorDriver.java:52)
> 2018-01-25 10:53:58,132 FATAL Services:514 - SERVER[] E0103: Could not load 
> service classes, null
> org.apache.oozie.service.ServiceException: E0103: Could not load service 
> classes, null
>  at org.apache.oozie.service.Services.loadServices(Services.java:309)
>  at org.apache.oozie.service.Services.init(Services.java:212)
>  at 
> org.apache.oozie.tools.diag.DiagBundleCollectorDriver.initOozieServices(DiagBundleCollectorDriver.java:153)
>  at 
> org.apache.oozie.tools.diag.DiagBundleCollectorDriver.setHadoopConfig(DiagBundleCollectorDriver.java:135)
>  at 
> org.apache.oozie.tools.diag.DiagBundleCollectorDriver.run(DiagBundleCollectorDriver.java:56)
>  at 
> org.apache.oozie.tools.diag.DiagBundleCollectorDriver.main(DiagBundleCollectorDriver.java:52)
> Caused by: java.lang.NullPointerException
>  at 
> org.apache.oozie.service.PartitionDependencyManagerService.init(PartitionDependencyManagerService.java:81)
>  at 
> org.apache.oozie.service.PartitionDependencyManagerService.init(PartitionDependencyManagerService.java:71)
>  at org.apache.oozie.service.Services.setServiceInternal(Services.java:386)
>  at org.apache.oozie.service.Services.setService(Services.java:372)
>  at org.apache.oozie.service.Services.loadServices(Services.java:304)
>  ... 5 more
>  
> {code}
> From my debugging, it looks like it needs the JobsConcurrencyService to run
>  
> [https://github.com/apache/oozie/blob/master/core/src/main/java/org/apache/oozie/service/PartitionDependencyManagerService.java#L81]
>  
> {code:java}
> purgeEnabled = 
> Services.get().get(JobsConcurrencyService.class).isHighlyAvailableMode();{code}
> But this service is not loaded by the following:
> [https://github.com/apache/oozie/blob/master/tools/src/main/java/org/apache/oozie/tools/diag/DiagBundleCollectorDriver.java#L149]
> {code:java}
> services.getConf()
>  .set(Services.CONF_SERVICE_CLASSES, 
> "org.apache.oozie.service.LiteWorkflowAppService,"
>  + "org.apache.oozie.service.SchedulerService,"
>  + "org.apache.oozie.service.HadoopAccessorService,"
>  + "org.apache.oozie.service.ShareLibService");{code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to