[ 
https://issues.apache.org/jira/browse/OOZIE-3304?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Denes Bodo updated OOZIE-3304:
------------------------------
    Description: 
In rare cases the following Exception can be read in log files when an action 
fails:
{code:java}
org.apache.oozie.action.ActionExecutorException: NumberFormatException: 
multiple points
        at 
org.apache.oozie.action.ActionExecutor.convertException(ActionExecutor.java:446)
        at 
org.apache.oozie.action.hadoop.JavaActionExecutor.submitLauncher(JavaActionExecutor.java:1271)
        at 
org.apache.oozie.action.hadoop.JavaActionExecutor.start(JavaActionExecutor.java:1472)
        at 
org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:234)
        at 
org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:65)
        at org.apache.oozie.command.XCommand.call(XCommand.java:287)
        at 
org.apache.oozie.service.CallableQueueService$CompositeCallable.call(CallableQueueService.java:332)
        at 
org.apache.oozie.service.CallableQueueService$CompositeCallable.call(CallableQueueService.java:261)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at 
org.apache.oozie.service.CallableQueueService$CallableWrapper.run(CallableQueueService.java:179)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NumberFormatException: multiple points
        at 
sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1890)
        at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
        at java.lang.Double.parseDouble(Double.java:538)
        at java.text.DigitList.getDouble(DigitList.java:169)
        at java.text.DecimalFormat.parse(DecimalFormat.java:2056)
        at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:2160)
        at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1514)
        at java.text.DateFormat.parse(DateFormat.java:364)
        at 
org.apache.oozie.service.ShareLibService.getLatestLibPath(ShareLibService.java:727)
        at 
org.apache.oozie.service.ShareLibService.getShareLibRootPath(ShareLibService.java:595)
        at 
org.apache.oozie.action.hadoop.JavaActionExecutor.getSharelibRoot(JavaActionExecutor.java:1297)
        at 
org.apache.oozie.action.hadoop.JavaActionExecutor.initShareLibExcluder(JavaActionExecutor.java:858)
        at 
org.apache.oozie.action.hadoop.JavaActionExecutor.setLibFilesArchives(JavaActionExecutor.java:866)
        at 
org.apache.oozie.action.hadoop.JavaActionExecutor.submitLauncher(JavaActionExecutor.java:1156)
        ... 11 more
{code}
or
{code}
2018-07-12 04:48:52,649  WARN ForkedActionStartXCommand:523 - 
SERVER[ctr-e138-1518143905142-410551-01-000003.hwx.site] USER[hrt_qa] GROUP[-] 
TOKEN[] APP[demo-wf] JOB[0000023-180712043119670-oozie-oozi-W] 
ACTION[0000023-180712043119670-oozie-oozi-W@streaming-node] Error starting 
action [streaming-node]. ErrorType [ERROR], ErrorCode [NumberFormatException], 
Message [NumberFormatException: For input string: ""]
org.apache.oozie.action.ActionExecutorException: NumberFormatException: For 
input string: ""
        at 
org.apache.oozie.action.ActionExecutor.convertException(ActionExecutor.java:446)
        at 
org.apache.oozie.action.hadoop.JavaActionExecutor.submitLauncher(JavaActionExecutor.java:1271)
        at 
org.apache.oozie.action.hadoop.JavaActionExecutor.start(JavaActionExecutor.java:1472)
        at 
org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:234)
        at 
org.apache.oozie.command.wf.ForkedActionStartXCommand.execute(ForkedActionStartXCommand.java:41)
        at 
org.apache.oozie.command.wf.ForkedActionStartXCommand.execute(ForkedActionStartXCommand.java:30)
        at org.apache.oozie.command.XCommand.call(XCommand.java:287)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at 
org.apache.oozie.service.CallableQueueService$CallableWrapper.run(CallableQueueService.java:179)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NumberFormatException: For input string: ""
        at 
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
        at java.lang.Long.parseLong(Long.java:601)
        at java.lang.Long.parseLong(Long.java:631)
        at java.text.DigitList.getLong(DigitList.java:195)
        at java.text.DecimalFormat.parse(DecimalFormat.java:2051)
        at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:2160)
        at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1514)
        at java.text.DateFormat.parse(DateFormat.java:364)
        at 
org.apache.oozie.service.ShareLibService.getLatestLibPath(ShareLibService.java:727)
        at 
org.apache.oozie.service.ShareLibService.getShareLibRootPath(ShareLibService.java:595)
        at 
org.apache.oozie.action.hadoop.JavaActionExecutor.getSharelibRoot(JavaActionExecutor.java:1297)
        at 
org.apache.oozie.action.hadoop.JavaActionExecutor.initShareLibExcluder(JavaActionExecutor.java:858)
        at 
org.apache.oozie.action.hadoop.JavaActionExecutor.setLibFilesArchives(JavaActionExecutor.java:866)
        at 
org.apache.oozie.action.hadoop.JavaActionExecutor.submitLauncher(JavaActionExecutor.java:1156)
        ... 10 more
{code}

Doing a little research found 
https://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html where the 
Synchronization block describes we shall use different DateFormat instances 
when parsing timestamps in SharelibService class.

I'll try reproducing the issue in UT, for example having thousands of sharelibs.

  was:
In rare cases the following Exception can be read in log files when an action 
fails:
{code:java}
org.apache.oozie.action.ActionExecutorException: NumberFormatException: 
multiple points
        at 
org.apache.oozie.action.ActionExecutor.convertException(ActionExecutor.java:446)
        at 
org.apache.oozie.action.hadoop.JavaActionExecutor.submitLauncher(JavaActionExecutor.java:1271)
        at 
org.apache.oozie.action.hadoop.JavaActionExecutor.start(JavaActionExecutor.java:1472)
        at 
org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:234)
        at 
org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:65)
        at org.apache.oozie.command.XCommand.call(XCommand.java:287)
        at 
org.apache.oozie.service.CallableQueueService$CompositeCallable.call(CallableQueueService.java:332)
        at 
org.apache.oozie.service.CallableQueueService$CompositeCallable.call(CallableQueueService.java:261)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at 
org.apache.oozie.service.CallableQueueService$CallableWrapper.run(CallableQueueService.java:179)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NumberFormatException: multiple points
        at 
sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1890)
        at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
        at java.lang.Double.parseDouble(Double.java:538)
        at java.text.DigitList.getDouble(DigitList.java:169)
        at java.text.DecimalFormat.parse(DecimalFormat.java:2056)
        at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:2160)
        at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1514)
        at java.text.DateFormat.parse(DateFormat.java:364)
        at 
org.apache.oozie.service.ShareLibService.getLatestLibPath(ShareLibService.java:727)
        at 
org.apache.oozie.service.ShareLibService.getShareLibRootPath(ShareLibService.java:595)
        at 
org.apache.oozie.action.hadoop.JavaActionExecutor.getSharelibRoot(JavaActionExecutor.java:1297)
        at 
org.apache.oozie.action.hadoop.JavaActionExecutor.initShareLibExcluder(JavaActionExecutor.java:858)
        at 
org.apache.oozie.action.hadoop.JavaActionExecutor.setLibFilesArchives(JavaActionExecutor.java:866)
        at 
org.apache.oozie.action.hadoop.JavaActionExecutor.submitLauncher(JavaActionExecutor.java:1156)
        ... 11 more
{code}

Doing a little research found 
https://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html where the 
Synchronization block describes we shall use different DateFormat instances 
when parsing timestamps in SharelibService class.

I'll try reproducing the issue in UT, for example having thousands of sharelibs.


> Parsing sharelib timestamps is not threadsafe
> ---------------------------------------------
>
>                 Key: OOZIE-3304
>                 URL: https://issues.apache.org/jira/browse/OOZIE-3304
>             Project: Oozie
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 5.0.0b1, 4.3.1
>            Reporter: Denes Bodo
>            Assignee: Denes Bodo
>            Priority: Critical
>              Labels: usability
>
> In rare cases the following Exception can be read in log files when an action 
> fails:
> {code:java}
> org.apache.oozie.action.ActionExecutorException: NumberFormatException: 
> multiple points
>       at 
> org.apache.oozie.action.ActionExecutor.convertException(ActionExecutor.java:446)
>       at 
> org.apache.oozie.action.hadoop.JavaActionExecutor.submitLauncher(JavaActionExecutor.java:1271)
>       at 
> org.apache.oozie.action.hadoop.JavaActionExecutor.start(JavaActionExecutor.java:1472)
>       at 
> org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:234)
>       at 
> org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:65)
>       at org.apache.oozie.command.XCommand.call(XCommand.java:287)
>       at 
> org.apache.oozie.service.CallableQueueService$CompositeCallable.call(CallableQueueService.java:332)
>       at 
> org.apache.oozie.service.CallableQueueService$CompositeCallable.call(CallableQueueService.java:261)
>       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>       at 
> org.apache.oozie.service.CallableQueueService$CallableWrapper.run(CallableQueueService.java:179)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>       at java.lang.Thread.run(Thread.java:748)
> Caused by: java.lang.NumberFormatException: multiple points
>       at 
> sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1890)
>       at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
>       at java.lang.Double.parseDouble(Double.java:538)
>       at java.text.DigitList.getDouble(DigitList.java:169)
>       at java.text.DecimalFormat.parse(DecimalFormat.java:2056)
>       at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:2160)
>       at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1514)
>       at java.text.DateFormat.parse(DateFormat.java:364)
>       at 
> org.apache.oozie.service.ShareLibService.getLatestLibPath(ShareLibService.java:727)
>       at 
> org.apache.oozie.service.ShareLibService.getShareLibRootPath(ShareLibService.java:595)
>       at 
> org.apache.oozie.action.hadoop.JavaActionExecutor.getSharelibRoot(JavaActionExecutor.java:1297)
>       at 
> org.apache.oozie.action.hadoop.JavaActionExecutor.initShareLibExcluder(JavaActionExecutor.java:858)
>       at 
> org.apache.oozie.action.hadoop.JavaActionExecutor.setLibFilesArchives(JavaActionExecutor.java:866)
>       at 
> org.apache.oozie.action.hadoop.JavaActionExecutor.submitLauncher(JavaActionExecutor.java:1156)
>       ... 11 more
> {code}
> or
> {code}
> 2018-07-12 04:48:52,649  WARN ForkedActionStartXCommand:523 - 
> SERVER[ctr-e138-1518143905142-410551-01-000003.hwx.site] USER[hrt_qa] 
> GROUP[-] TOKEN[] APP[demo-wf] JOB[0000023-180712043119670-oozie-oozi-W] 
> ACTION[0000023-180712043119670-oozie-oozi-W@streaming-node] Error starting 
> action [streaming-node]. ErrorType [ERROR], ErrorCode 
> [NumberFormatException], Message [NumberFormatException: For input string: ""]
> org.apache.oozie.action.ActionExecutorException: NumberFormatException: For 
> input string: ""
>       at 
> org.apache.oozie.action.ActionExecutor.convertException(ActionExecutor.java:446)
>       at 
> org.apache.oozie.action.hadoop.JavaActionExecutor.submitLauncher(JavaActionExecutor.java:1271)
>       at 
> org.apache.oozie.action.hadoop.JavaActionExecutor.start(JavaActionExecutor.java:1472)
>       at 
> org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:234)
>       at 
> org.apache.oozie.command.wf.ForkedActionStartXCommand.execute(ForkedActionStartXCommand.java:41)
>       at 
> org.apache.oozie.command.wf.ForkedActionStartXCommand.execute(ForkedActionStartXCommand.java:30)
>       at org.apache.oozie.command.XCommand.call(XCommand.java:287)
>       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>       at 
> org.apache.oozie.service.CallableQueueService$CallableWrapper.run(CallableQueueService.java:179)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>       at java.lang.Thread.run(Thread.java:748)
> Caused by: java.lang.NumberFormatException: For input string: ""
>       at 
> java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
>       at java.lang.Long.parseLong(Long.java:601)
>       at java.lang.Long.parseLong(Long.java:631)
>       at java.text.DigitList.getLong(DigitList.java:195)
>       at java.text.DecimalFormat.parse(DecimalFormat.java:2051)
>       at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:2160)
>       at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1514)
>       at java.text.DateFormat.parse(DateFormat.java:364)
>       at 
> org.apache.oozie.service.ShareLibService.getLatestLibPath(ShareLibService.java:727)
>       at 
> org.apache.oozie.service.ShareLibService.getShareLibRootPath(ShareLibService.java:595)
>       at 
> org.apache.oozie.action.hadoop.JavaActionExecutor.getSharelibRoot(JavaActionExecutor.java:1297)
>       at 
> org.apache.oozie.action.hadoop.JavaActionExecutor.initShareLibExcluder(JavaActionExecutor.java:858)
>       at 
> org.apache.oozie.action.hadoop.JavaActionExecutor.setLibFilesArchives(JavaActionExecutor.java:866)
>       at 
> org.apache.oozie.action.hadoop.JavaActionExecutor.submitLauncher(JavaActionExecutor.java:1156)
>       ... 10 more
> {code}
> Doing a little research found 
> https://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html where the 
> Synchronization block describes we shall use different DateFormat instances 
> when parsing timestamps in SharelibService class.
> I'll try reproducing the issue in UT, for example having thousands of 
> sharelibs.



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

Reply via email to