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

Bipin Prasad updated STORM-3764:
--------------------------------
    Description: 
While backtracking in scheduling code, Ackers are skipped. However, under 
certain circumstances a null WorkerSlot is passed as parameter to 
SchedulingSearcherState.backtrack(). This null key is used to retrieve an entry 
from Map. The returned null map value causes NPE. 

{code}
2021-03-30 15:27:03.212 o.a.s.s.r.ResourceAwareScheduler timer [ERROR] 
mx3_test-5-1614799784 Internal Error - Exception thrown when scheduling. Please 
check logs for details java.util.concurrent.ExecutionException: 
java.lang.NullPointerException
    at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
~[?:1.8.0_262]
    at java.util.concurrent.FutureTask.get(FutureTask.java:206) ~[?:1.8.0_262]
    at 
org.apache.storm.scheduler.resource.ResourceAwareScheduler.scheduleTopology(ResourceAwareScheduler.java:191)
 ~[storm-server-2.3.0.y.jar:2.3.0.y]
    at 
org.apache.storm.scheduler.resource.ResourceAwareScheduler.schedule(ResourceAwareScheduler.java:132)
 ~[storm-server-2.3.0.y.jar:2.3.0.y]
    at 
org.apache.storm.scheduler.blacklist.BlacklistScheduler.schedule(BlacklistScheduler.java:131)
 ~[storm-server-2.3.0.y.jar:2.3.0.y]
    at 
org.apache.storm.daemon.nimbus.Nimbus.computeNewSchedulerAssignments(Nimbus.java:2314)
 ~[storm-server-2.3.0.y.jar:2.3.0.y]
    at 
org.apache.storm.daemon.nimbus.Nimbus.lambda$lockingMkAssignments$44(Nimbus.java:2493)
 ~[storm-server-2.3.0.y.jar:2.3.0.y]
    at org.apache.storm.daemon.nimbus.Nimbus.executeWithLock(Nimbus.java:4549) 
~[storm-server-2.3.0.y.jar:2.3.0.y]
    at 
org.apache.storm.daemon.nimbus.Nimbus.lockingMkAssignments(Nimbus.java:2491) 
~[storm-server-2.3.0.y.jar:2.3.0.y]
    at org.apache.storm.daemon.nimbus.Nimbus.mkAssignments(Nimbus.java:2478) 
~[storm-server-2.3.0.y.jar:2.3.0.y]
    at org.apache.storm.daemon.nimbus.Nimbus.mkAssignments(Nimbus.java:2415) 
~[storm-server-2.3.0.y.jar:2.3.0.y]
    at 
org.apache.storm.daemon.nimbus.Nimbus.lambda$launchServer$17(Nimbus.java:1420) 
~[storm-server-2.3.0.y.jar:2.3.0.y]
    at org.apache.storm.StormTimer$1.run(StormTimer.java:110) 
[storm-client-2.3.0.y.jar:2.3.0.y]
    at org.apache.storm.StormTimer$StormTimerTask.run(StormTimer.java:226) 
[storm-client-2.3.0.y.jar:2.3.0.y]

Caused by: java.lang.NullPointerException
    at 
org.apache.storm.scheduler.resource.strategies.scheduling.SchedulingSearcherState.backtrack(SchedulingSearcherState.java:292)
 ~[storm-server-2.3.0.y.jar:2.3.0.y]
    at 
org.apache.storm.scheduler.resource.strategies.scheduling.BaseResourceAwareStrategy.scheduleExecutorsOnNodes(BaseResourceAwareStrategy.java:559)
 ~[storm-server-2.3.0.y.jar:2.3.0.y]
    at 
org.apache.storm.scheduler.resource.strategies.scheduling.BaseResourceAwareStrategy.schedule(BaseResourceAwareStrategy.java:172)
 ~[storm-server-2.3.0.y.jar:2.3.0.y]
    at 
org.apache.storm.scheduler.resource.ResourceAwareScheduler.lambda$scheduleTopology$1(ResourceAwareScheduler.java:189)
 ~[storm-server-2.3.0.y.jar:2.3.0.y]     
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_262]
    at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
~[?:1.8.0_262]
    at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
~[?:1.8.0_262]
    at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_262]
{code}

  was:
While backtracking in scheduling code, Ackers are skipped. However at the end 
of this step all ackers on the workerslot are removed. This removal should be 
limited to only the Ackers that were skipped in 
SchedulingSearcherState.backtrack(). Otherwise, the next immediate backtrack() 
call can result in an NPE:

{code}
2021-03-30 15:27:03.212 o.a.s.s.r.ResourceAwareScheduler timer [ERROR] 
mx3_test-5-1614799784 Internal Error - Exception thrown when scheduling. Please 
check logs for details java.util.concurrent.ExecutionException: 
java.lang.NullPointerException
    at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
~[?:1.8.0_262]
    at java.util.concurrent.FutureTask.get(FutureTask.java:206) ~[?:1.8.0_262]
    at 
org.apache.storm.scheduler.resource.ResourceAwareScheduler.scheduleTopology(ResourceAwareScheduler.java:191)
 ~[storm-server-2.3.0.y.jar:2.3.0.y]
    at 
org.apache.storm.scheduler.resource.ResourceAwareScheduler.schedule(ResourceAwareScheduler.java:132)
 ~[storm-server-2.3.0.y.jar:2.3.0.y]
    at 
org.apache.storm.scheduler.blacklist.BlacklistScheduler.schedule(BlacklistScheduler.java:131)
 ~[storm-server-2.3.0.y.jar:2.3.0.y]
    at 
org.apache.storm.daemon.nimbus.Nimbus.computeNewSchedulerAssignments(Nimbus.java:2314)
 ~[storm-server-2.3.0.y.jar:2.3.0.y]
    at 
org.apache.storm.daemon.nimbus.Nimbus.lambda$lockingMkAssignments$44(Nimbus.java:2493)
 ~[storm-server-2.3.0.y.jar:2.3.0.y]
    at org.apache.storm.daemon.nimbus.Nimbus.executeWithLock(Nimbus.java:4549) 
~[storm-server-2.3.0.y.jar:2.3.0.y]
    at 
org.apache.storm.daemon.nimbus.Nimbus.lockingMkAssignments(Nimbus.java:2491) 
~[storm-server-2.3.0.y.jar:2.3.0.y]
    at org.apache.storm.daemon.nimbus.Nimbus.mkAssignments(Nimbus.java:2478) 
~[storm-server-2.3.0.y.jar:2.3.0.y]
    at org.apache.storm.daemon.nimbus.Nimbus.mkAssignments(Nimbus.java:2415) 
~[storm-server-2.3.0.y.jar:2.3.0.y]
    at 
org.apache.storm.daemon.nimbus.Nimbus.lambda$launchServer$17(Nimbus.java:1420) 
~[storm-server-2.3.0.y.jar:2.3.0.y]
    at org.apache.storm.StormTimer$1.run(StormTimer.java:110) 
[storm-client-2.3.0.y.jar:2.3.0.y]
    at org.apache.storm.StormTimer$StormTimerTask.run(StormTimer.java:226) 
[storm-client-2.3.0.y.jar:2.3.0.y]

Caused by: java.lang.NullPointerException
    at 
org.apache.storm.scheduler.resource.strategies.scheduling.SchedulingSearcherState.backtrack(SchedulingSearcherState.java:292)
 ~[storm-server-2.3.0.y.jar:2.3.0.y]
    at 
org.apache.storm.scheduler.resource.strategies.scheduling.BaseResourceAwareStrategy.scheduleExecutorsOnNodes(BaseResourceAwareStrategy.java:559)
 ~[storm-server-2.3.0.y.jar:2.3.0.y]
    at 
org.apache.storm.scheduler.resource.strategies.scheduling.BaseResourceAwareStrategy.schedule(BaseResourceAwareStrategy.java:172)
 ~[storm-server-2.3.0.y.jar:2.3.0.y]
    at 
org.apache.storm.scheduler.resource.ResourceAwareScheduler.lambda$scheduleTopology$1(ResourceAwareScheduler.java:189)
 ~[storm-server-2.3.0.y.jar:2.3.0.y]     
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_262]
    at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
~[?:1.8.0_262]
    at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
~[?:1.8.0_262]
    at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_262]
{code}


> Nimbus has internal scheduling errors when backtracking
> -------------------------------------------------------
>
>                 Key: STORM-3764
>                 URL: https://issues.apache.org/jira/browse/STORM-3764
>             Project: Apache Storm
>          Issue Type: Improvement
>          Components: storm-server
>            Reporter: Bipin Prasad
>            Assignee: Bipin Prasad
>            Priority: Major
>
> While backtracking in scheduling code, Ackers are skipped. However, under 
> certain circumstances a null WorkerSlot is passed as parameter to 
> SchedulingSearcherState.backtrack(). This null key is used to retrieve an 
> entry from Map. The returned null map value causes NPE. 
> {code}
> 2021-03-30 15:27:03.212 o.a.s.s.r.ResourceAwareScheduler timer [ERROR] 
> mx3_test-5-1614799784 Internal Error - Exception thrown when scheduling. 
> Please check logs for details java.util.concurrent.ExecutionException: 
> java.lang.NullPointerException
>     at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
> ~[?:1.8.0_262]
>     at java.util.concurrent.FutureTask.get(FutureTask.java:206) ~[?:1.8.0_262]
>     at 
> org.apache.storm.scheduler.resource.ResourceAwareScheduler.scheduleTopology(ResourceAwareScheduler.java:191)
>  ~[storm-server-2.3.0.y.jar:2.3.0.y]
>     at 
> org.apache.storm.scheduler.resource.ResourceAwareScheduler.schedule(ResourceAwareScheduler.java:132)
>  ~[storm-server-2.3.0.y.jar:2.3.0.y]
>     at 
> org.apache.storm.scheduler.blacklist.BlacklistScheduler.schedule(BlacklistScheduler.java:131)
>  ~[storm-server-2.3.0.y.jar:2.3.0.y]
>     at 
> org.apache.storm.daemon.nimbus.Nimbus.computeNewSchedulerAssignments(Nimbus.java:2314)
>  ~[storm-server-2.3.0.y.jar:2.3.0.y]
>     at 
> org.apache.storm.daemon.nimbus.Nimbus.lambda$lockingMkAssignments$44(Nimbus.java:2493)
>  ~[storm-server-2.3.0.y.jar:2.3.0.y]
>     at 
> org.apache.storm.daemon.nimbus.Nimbus.executeWithLock(Nimbus.java:4549) 
> ~[storm-server-2.3.0.y.jar:2.3.0.y]
>     at 
> org.apache.storm.daemon.nimbus.Nimbus.lockingMkAssignments(Nimbus.java:2491) 
> ~[storm-server-2.3.0.y.jar:2.3.0.y]
>     at org.apache.storm.daemon.nimbus.Nimbus.mkAssignments(Nimbus.java:2478) 
> ~[storm-server-2.3.0.y.jar:2.3.0.y]
>     at org.apache.storm.daemon.nimbus.Nimbus.mkAssignments(Nimbus.java:2415) 
> ~[storm-server-2.3.0.y.jar:2.3.0.y]
>     at 
> org.apache.storm.daemon.nimbus.Nimbus.lambda$launchServer$17(Nimbus.java:1420)
>  ~[storm-server-2.3.0.y.jar:2.3.0.y]
>     at org.apache.storm.StormTimer$1.run(StormTimer.java:110) 
> [storm-client-2.3.0.y.jar:2.3.0.y]
>     at org.apache.storm.StormTimer$StormTimerTask.run(StormTimer.java:226) 
> [storm-client-2.3.0.y.jar:2.3.0.y]
> Caused by: java.lang.NullPointerException
>     at 
> org.apache.storm.scheduler.resource.strategies.scheduling.SchedulingSearcherState.backtrack(SchedulingSearcherState.java:292)
>  ~[storm-server-2.3.0.y.jar:2.3.0.y]
>     at 
> org.apache.storm.scheduler.resource.strategies.scheduling.BaseResourceAwareStrategy.scheduleExecutorsOnNodes(BaseResourceAwareStrategy.java:559)
>  ~[storm-server-2.3.0.y.jar:2.3.0.y]
>     at 
> org.apache.storm.scheduler.resource.strategies.scheduling.BaseResourceAwareStrategy.schedule(BaseResourceAwareStrategy.java:172)
>  ~[storm-server-2.3.0.y.jar:2.3.0.y]
>     at 
> org.apache.storm.scheduler.resource.ResourceAwareScheduler.lambda$scheduleTopology$1(ResourceAwareScheduler.java:189)
>  ~[storm-server-2.3.0.y.jar:2.3.0.y]     
>     at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_262]
>     at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>  ~[?:1.8.0_262]
>     at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>  ~[?:1.8.0_262]
>     at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_262]
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to