IndexOutOfBoundException if resource customerResourcesList is empty

Description

Stack Trace:

10:37:00 [560641/eholdings] [testenant1402673652974639850] [00000000-1111-5555-9999-999999999992] [mod_kb_ebsco_java] INFO  oldingsRequestHelper [OK] RMAPI Service response: query = [/rm/rmaccounts/apie2esch1/vendors/134386/packages/1000130114/titles/1011310847], statusCode = [200], body = [Title(description=null, edition=null, isPeerReviewed=false, contributorsList=[], titleId=1011310847, titleName=Folio-Karate Test Titlee, publisherName=, identifiersList=[], subjectsList=[], isTitleCustom=true, pubType=Journal, customerResourcesList=[], alternateTitleList=[])] 10:37:03 [669168/eholdings] [testenant180742366351544641] [00000000-1111-5555-9999-999999999992] [mod_kb_ebsco_java] ERROR ErrorHandler         Internal Server Error java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0     at jdk.internal.util.Preconditions.outOfBounds(Unknown Source) ~[?:?]     at jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Unknown Source) ~[?:?]     at jdk.internal.util.Preconditions.checkIndex(Unknown Source) ~[?:?]     at java.util.Objects.checkIndex(Unknown Source) ~[?:?]     at java.util.ArrayList.get(Unknown Source) ~[?:?]     at org.folio.rest.impl.EholdingsResourcesImpl.loadRelatedEntities(EholdingsResourcesImpl.java:282) ~[mod-kb-ebsco-java-fat.jar:?]     at org.folio.rest.impl.EholdingsResourcesImpl.lambda$4(EholdingsResourcesImpl.java:170) ~[mod-kb-ebsco-java-fat.jar:?]     at java.util.concurrent.CompletableFuture$UniCompose.tryFire(Unknown Source) ~[?:?]     at java.util.concurrent.CompletableFuture.postComplete(Unknown Source) ~[?:?]     at java.util.concurrent.CompletableFuture.complete(Unknown Source) ~[?:?]     at org.folio.holdingsiq.service.impl.HoldingsRequestHelper.lambda$sendHttpRequest$5(HoldingsRequestHelper.java:205) ~[mod-kb-ebsco-java-fat.jar:?]     at io.vertx.core.impl.future.FutureImpl$1.onSuccess(FutureImpl.java:91) ~[mod-kb-ebsco-java-fat.jar:?]     at io.vertx.core.impl.future.FutureImpl$ListenerArray.onSuccess(FutureImpl.java:262) ~[mod-kb-ebsco-java-fat.jar:?]     at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:60) ~[mod-kb-ebsco-java-fat.jar:?]     at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:211) ~[mod-kb-ebsco-java-fat.jar:?]     at io.vertx.core.impl.future.PromiseImpl.tryComplete(PromiseImpl.java:23) ~[mod-kb-ebsco-java-fat.jar:?]     at io.vertx.core.impl.future.PromiseImpl.onSuccess(PromiseImpl.java:49) ~[mod-kb-ebsco-java-fat.jar:?]     at io.vertx.core.impl.future.PromiseImpl.handle(PromiseImpl.java:41) ~[mod-kb-ebsco-java-fat.jar:?]     at io.vertx.core.impl.future.PromiseImpl.handle(PromiseImpl.java:23) ~[mod-kb-ebsco-java-fat.jar:?]     at io.vertx.ext.web.client.impl.HttpContext.handleDispatchResponse(HttpContext.java:390) ~[mod-kb-ebsco-java-fat.jar:?]     at io.vertx.ext.web.client.impl.HttpContext.execute(HttpContext.java:377) ~[mod-kb-ebsco-java-fat.jar:?]     at io.vertx.ext.web.client.impl.HttpContext.next(HttpContext.java:355) ~[mod-kb-ebsco-java-fat.jar:?]     at io.vertx.ext.web.client.impl.HttpContext.fire(HttpContext.java:322) ~[mod-kb-ebsco-java-fat.jar:?]     at io.vertx.ext.web.client.impl.HttpContext.dispatchResponse(HttpContext.java:284) ~[mod-kb-ebsco-java-fat.jar:?]     at io.vertx.ext.web.client.impl.HttpContext.lambda$null$7(HttpContext.java:500) ~[mod-kb-ebsco-java-fat.jar:?]     at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:101) ~[mod-kb-ebsco-java-fat.jar:?]     at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:64) ~[mod-kb-ebsco-java-fat.jar:?]     at io.vertx.core.impl.EventLoopContext.lambda$runOnContext$0(EventLoopContext.java:44) ~[mod-kb-ebsco-java-fat.jar:?]     at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) ~[mod-kb-ebsco-java-fat.jar:?]     at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) ~[mod-kb-ebsco-java-fat.jar:?]     at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) ~[mod-kb-ebsco-java-fat.jar:?]     at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) ~[mod-kb-ebsco-java-fat.jar:?]     at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:995) ~[mod-kb-ebsco-java-fat.jar:?]     at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[mod-kb-ebsco-java-fat.jar:?]     at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[mod-kb-ebsco-java-fat.jar:?]     at java.lang.Thread.run(Unknown Source) ~[?:?]

 

CSP Request Details

None

CSP Rejection Details

None

Potential Workaround

None

Attachments

1
  • 14 Sep 2022, 09:28 AM

Checklist

hide

TestRail: Results

Activity

Show:

Valery_Pilko September 14, 2022 at 9:39 AM

Verified at Snapshot env - works as expected, instead of 500 error will display 404.
See attached screencast:

Note: this issue is covered by karate tests.

Steps to reproduce:
1. Open any "Title" with created custom Packages.
2. Open Resource (Title+Package) record (under "Packages" accordion) of custom Package.
3. Click on "Actions" >> "Remove title from holdings"
4. Try to open the same Resource record that you opened at step 3.
Actual result: the error message will display: "An error occurred: Resource not found"

Done

Details

Assignee

Reporter

Priority

Story Points

Sprint

Development Team

Spitfire

RCA Group

Karate test failure

TestRail: Cases

Open TestRail: Cases

TestRail: Runs

Open TestRail: Runs
Created September 5, 2022 at 10:57 AM
Updated October 17, 2022 at 7:59 AM
Resolved September 15, 2022 at 1:04 PM
TestRail: Cases
TestRail: Runs

Flag notifications