Unhandled json parse exception when user does not have adequate permissions
Description
CSP Request Details
CSP Rejection Details
Potential Workaround
Attachments
- 07 Feb 2022, 11:21 AM
- 07 Feb 2022, 11:20 AM
Checklist
hideTestRail: Results
Activity
Viachaslau Khandramai March 11, 2022 at 12:37 PMEdited
There is no possibility to verify because it should be executed on large dataset. It will critical affects env performance. Issue was verified on snapshot env: https://folio-org.atlassian.net/browse/MODOAIPMH-379?focusedCommentId=157791&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel
Denis March 1, 2022 at 5:37 PM
Deployed to Kiwi Bugfest. Please proceed with verification
Illia Daliek February 7, 2022 at 11:21 AMEdited
@Magda Zacharska, the ticket was verified on snapshot env.
I took a user with id 2205005b-ca51-4a04-87fd-938eefa8f6de
User creds - rick/rick
Case when a user doesn't have the required permission for getting instance ids
Case when a user doesn't have the required permission for getting enriched instances endpoint(items and holdings data)
Magda Zacharska January 31, 2022 at 9:11 PM
Hi @Illia Daliek - how can I verify this story?
William Welling January 26, 2022 at 2:45 PM
With edge_user permissions as
{
"permissionName": "fd81b059-b046-414e-9da5-46a420c4a180",
"displayName": "Edge_user",
"id": "fd81b059-b046-414e-9da5-46a420c4a180",
"tags": [],
"subPermissions": [
"oai-pmh.all"
],
"childOf": [],
"grantedTo": [
"9fe45318-2657-4987-9541-4195987f2a46"
],
"mutable": true,
"visible": true,
"dummy": false,
"deprecated": false,
"metadata": {
"createdDate": "2022-01-05T21:18:19.892+00:00",
"createdByUserId": "7ee13708-2b32-4a2d-85ed-2d1a373b5762",
"updatedDate": "2022-01-26T14:38:25.067+00:00",
"updatedByUserId": "7ee13708-2b32-4a2d-85ed-2d1a373b5762"
}
}
The exception
2022-01-26T14:40:52,966 ERROR [vert.x-eventloop-thread-0] MarcWithHoldingsRequestHelper Error has been occurred at JsonParser while reading data from response while enriching instances. Message:Unexpected character ('A' (code 65)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
at [Source: UNKNOWN; line: 1, column: 2]
com.fasterxml.jackson.core.JsonParseException: Unexpected character ('A' (code 65)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
at [Source: UNKNOWN; line: 1, column: 2]
at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1851) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:707) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:632) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.json.async.NonBlockingJsonParser._startUnexpectedValue(NonBlockingJsonParser.java:946) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.json.async.NonBlockingJsonParser._startValue(NonBlockingJsonParser.java:664) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.json.async.NonBlockingJsonParser._startDocument(NonBlockingJsonParser.java:463) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.json.async.NonBlockingJsonParser.nextToken(NonBlockingJsonParser.java:201) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.parsetools.impl.JsonParserImpl.checkTokens(JsonParserImpl.java:185) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.parsetools.impl.JsonParserImpl.handle(JsonParserImpl.java:151) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.parsetools.impl.JsonParserImpl.handle(JsonParserImpl.java:42) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.ext.web.codec.impl.JsonStreamBodyCodec$1.write(JsonStreamBodyCodec.java:37) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.ext.web.codec.impl.JsonStreamBodyCodec$1.write(JsonStreamBodyCodec.java:22) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.ext.web.codec.impl.StreamingBodyCodec$1.write(StreamingBodyCodec.java:82) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.ext.web.codec.impl.StreamingBodyCodec$1.write(StreamingBodyCodec.java:60) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.streams.impl.PipeImpl.lambda$to$1(PipeImpl.java:81) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:96) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.http.impl.HttpEventHandler.handleChunk(HttpEventHandler.java:51) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.http.impl.HttpClientResponseImpl.handleChunk(HttpClientResponseImpl.java:239) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.http.impl.Http1xClientConnection$StreamImpl.lambda$new$0(Http1xClientConnection.java:380) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.streams.impl.InboundBuffer.handleEvent(InboundBuffer.java:240) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.streams.impl.InboundBuffer.write(InboundBuffer.java:130) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.http.impl.Http1xClientConnection$StreamImpl.handleChunk(Http1xClientConnection.java:583) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.impl.EventLoopContext.lambda$execute$2(EventLoopContext.java:72) ~[mod-oai-pmh-fat.jar:?]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) [mod-oai-pmh-fat.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) [mod-oai-pmh-fat.jar:?]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) [mod-oai-pmh-fat.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) [mod-oai-pmh-fat.jar:?]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [mod-oai-pmh-fat.jar:?]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [mod-oai-pmh-fat.jar:?]
at java.lang.Thread.run(Thread.java:829) [?:?]
2022-01-26T14:40:52,983 ERROR [vert.x-eventloop-thread-0] MarcWithHoldingsRequestHelper Cannot get batch of instances ids from database: Unexpected character ('A' (code 65)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
at [Source: UNKNOWN; line: 1, column: 2].
com.fasterxml.jackson.core.JsonParseException: Unexpected character ('A' (code 65)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
at [Source: UNKNOWN; line: 1, column: 2]
at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1851) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:707) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:632) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.json.async.NonBlockingJsonParser._startUnexpectedValue(NonBlockingJsonParser.java:946) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.json.async.NonBlockingJsonParser._startValue(NonBlockingJsonParser.java:664) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.json.async.NonBlockingJsonParser._startDocument(NonBlockingJsonParser.java:463) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.json.async.NonBlockingJsonParser.nextToken(NonBlockingJsonParser.java:201) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.parsetools.impl.JsonParserImpl.checkTokens(JsonParserImpl.java:185) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.parsetools.impl.JsonParserImpl.handle(JsonParserImpl.java:151) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.parsetools.impl.JsonParserImpl.handle(JsonParserImpl.java:42) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.ext.web.codec.impl.JsonStreamBodyCodec$1.write(JsonStreamBodyCodec.java:37) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.ext.web.codec.impl.JsonStreamBodyCodec$1.write(JsonStreamBodyCodec.java:22) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.ext.web.codec.impl.StreamingBodyCodec$1.write(StreamingBodyCodec.java:82) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.ext.web.codec.impl.StreamingBodyCodec$1.write(StreamingBodyCodec.java:60) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.streams.impl.PipeImpl.lambda$to$1(PipeImpl.java:81) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:96) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.http.impl.HttpEventHandler.handleChunk(HttpEventHandler.java:51) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.http.impl.HttpClientResponseImpl.handleChunk(HttpClientResponseImpl.java:239) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.http.impl.Http1xClientConnection$StreamImpl.lambda$new$0(Http1xClientConnection.java:380) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.streams.impl.InboundBuffer.handleEvent(InboundBuffer.java:240) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.streams.impl.InboundBuffer.write(InboundBuffer.java:130) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.http.impl.Http1xClientConnection$StreamImpl.handleChunk(Http1xClientConnection.java:583) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.impl.EventLoopContext.lambda$execute$2(EventLoopContext.java:72) ~[mod-oai-pmh-fat.jar:?]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) [mod-oai-pmh-fat.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) [mod-oai-pmh-fat.jar:?]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) [mod-oai-pmh-fat.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) [mod-oai-pmh-fat.jar:?]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [mod-oai-pmh-fat.jar:?]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [mod-oai-pmh-fat.jar:?]
at java.lang.Thread.run(Thread.java:829) [?:?]
2022-01-26T14:40:52,984 ERROR [vert.x-eventloop-thread-0] MarcWithHoldingsRequestHelper Get instances failed: Unexpected character ('A' (code 65)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
at [Source: UNKNOWN; line: 1, column: 2].
com.fasterxml.jackson.core.JsonParseException: Unexpected character ('A' (code 65)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
at [Source: UNKNOWN; line: 1, column: 2]
at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1851) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:707) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:632) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.json.async.NonBlockingJsonParser._startUnexpectedValue(NonBlockingJsonParser.java:946) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.json.async.NonBlockingJsonParser._startValue(NonBlockingJsonParser.java:664) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.json.async.NonBlockingJsonParser._startDocument(NonBlockingJsonParser.java:463) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.json.async.NonBlockingJsonParser.nextToken(NonBlockingJsonParser.java:201) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.parsetools.impl.JsonParserImpl.checkTokens(JsonParserImpl.java:185) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.parsetools.impl.JsonParserImpl.handle(JsonParserImpl.java:151) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.parsetools.impl.JsonParserImpl.handle(JsonParserImpl.java:42) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.ext.web.codec.impl.JsonStreamBodyCodec$1.write(JsonStreamBodyCodec.java:37) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.ext.web.codec.impl.JsonStreamBodyCodec$1.write(JsonStreamBodyCodec.java:22) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.ext.web.codec.impl.StreamingBodyCodec$1.write(StreamingBodyCodec.java:82) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.ext.web.codec.impl.StreamingBodyCodec$1.write(StreamingBodyCodec.java:60) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.streams.impl.PipeImpl.lambda$to$1(PipeImpl.java:81) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:96) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.http.impl.HttpEventHandler.handleChunk(HttpEventHandler.java:51) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.http.impl.HttpClientResponseImpl.handleChunk(HttpClientResponseImpl.java:239) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.http.impl.Http1xClientConnection$StreamImpl.lambda$new$0(Http1xClientConnection.java:380) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.streams.impl.InboundBuffer.handleEvent(InboundBuffer.java:240) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.streams.impl.InboundBuffer.write(InboundBuffer.java:130) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.http.impl.Http1xClientConnection$StreamImpl.handleChunk(Http1xClientConnection.java:583) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.impl.EventLoopContext.lambda$execute$2(EventLoopContext.java:72) ~[mod-oai-pmh-fat.jar:?]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) [mod-oai-pmh-fat.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) [mod-oai-pmh-fat.jar:?]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) [mod-oai-pmh-fat.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) [mod-oai-pmh-fat.jar:?]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [mod-oai-pmh-fat.jar:?]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [mod-oai-pmh-fat.jar:?]
at java.lang.Thread.run(Thread.java:829) [?:?]
2022-01-26T14:40:52,987 INFO [vert.x-eventloop-thread-0] LogUtil 10.42.10.116:58984 GET /oai/records verb=ListRecords&metadataPrefix=marc21_withholdings&apikey=eyJzIjoiUk9RN0VFS2Q0VGR1VTVweHh3NWYiLCJ0IjoidGFtdSIsInUiOiJlZGdldXNlciJ9 HTTP_1_1 500 174 2469 tid=tamu Internal Server Error
2022-01-26T14:40:52,987 ERROR [vert.x-eventloop-thread-0] MarcWithHoldingsRequestHelper Error has been occurred at JsonParser while reading data from response while enriching instances. Message:Unexpected character ('c' (code 99)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
at [Source: UNKNOWN; line: 1, column: 3]
com.fasterxml.jackson.core.JsonParseException: Unexpected character ('c' (code 99)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false')
at [Source: UNKNOWN; line: 1, column: 3]
at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1851) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:707) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:632) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.json.async.NonBlockingJsonParser._startUnexpectedValue(NonBlockingJsonParser.java:946) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.json.async.NonBlockingJsonParser._startValue(NonBlockingJsonParser.java:664) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.json.async.NonBlockingJsonParser._startDocument(NonBlockingJsonParser.java:463) ~[mod-oai-pmh-fat.jar:?]
at com.fasterxml.jackson.core.json.async.NonBlockingJsonParser.nextToken(NonBlockingJsonParser.java:201) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.parsetools.impl.JsonParserImpl.checkTokens(JsonParserImpl.java:185) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.parsetools.impl.JsonParserImpl.end(JsonParserImpl.java:171) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.ext.web.codec.impl.JsonStreamBodyCodec$1.end(JsonStreamBodyCodec.java:45) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.ext.web.codec.impl.StreamingBodyCodec$1.end(StreamingBodyCodec.java:95) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.streams.impl.PipeImpl.handleSuccess(PipeImpl.java:116) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.streams.impl.PipeImpl.lambda$to$2(PipeImpl.java:102) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.impl.future.FutureImpl$3.onSuccess(FutureImpl.java:124) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:62) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:179) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.impl.future.PromiseImpl.tryComplete(PromiseImpl.java:23) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:96) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:59) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.http.impl.HttpEventHandler.handleEnd(HttpEventHandler.java:76) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.http.impl.HttpClientResponseImpl.handleEnd(HttpClientResponseImpl.java:250) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.http.impl.Http1xClientConnection$StreamImpl.lambda$new$0(Http1xClientConnection.java:372) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.streams.impl.InboundBuffer.handleEvent(InboundBuffer.java:240) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.streams.impl.InboundBuffer.write(InboundBuffer.java:130) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.http.impl.Http1xClientConnection$StreamImpl.handleEnd(Http1xClientConnection.java:587) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.impl.EventLoopContext.lambda$execute$2(EventLoopContext.java:72) ~[mod-oai-pmh-fat.jar:?]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) [mod-oai-pmh-fat.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) [mod-oai-pmh-fat.jar:?]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) [mod-oai-pmh-fat.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) [mod-oai-pmh-fat.jar:?]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [mod-oai-pmh-fat.jar:?]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [mod-oai-pmh-fat.jar:?]
at java.lang.Thread.run(Thread.java:829) [?:?]
2022-01-26T14:40:52,988 ERROR [vert.x-eventloop-thread-0] ContextImpl Unhandled exception
java.lang.IllegalStateException: Result is already complete
at io.vertx.core.Promise.fail(Promise.java:90) ~[mod-oai-pmh-fat.jar:?]
at org.folio.oaipmh.processors.MarcWithHoldingsRequestHelper.lambda$enrichInstances$25(MarcWithHoldingsRequestHelper.java:463) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.parsetools.impl.JsonParserImpl.end(JsonParserImpl.java:174) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.ext.web.codec.impl.JsonStreamBodyCodec$1.end(JsonStreamBodyCodec.java:45) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.ext.web.codec.impl.StreamingBodyCodec$1.end(StreamingBodyCodec.java:95) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.streams.impl.PipeImpl.handleSuccess(PipeImpl.java:116) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.streams.impl.PipeImpl.lambda$to$2(PipeImpl.java:102) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.impl.future.FutureImpl$3.onSuccess(FutureImpl.java:124) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.impl.future.FutureBase.emitSuccess(FutureBase.java:62) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.impl.future.FutureImpl.tryComplete(FutureImpl.java:179) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.impl.future.PromiseImpl.tryComplete(PromiseImpl.java:23) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:96) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:59) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.http.impl.HttpEventHandler.handleEnd(HttpEventHandler.java:76) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.http.impl.HttpClientResponseImpl.handleEnd(HttpClientResponseImpl.java:250) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.http.impl.Http1xClientConnection$StreamImpl.lambda$new$0(Http1xClientConnection.java:372) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.streams.impl.InboundBuffer.handleEvent(InboundBuffer.java:240) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.streams.impl.InboundBuffer.write(InboundBuffer.java:130) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.http.impl.Http1xClientConnection$StreamImpl.handleEnd(Http1xClientConnection.java:587) ~[mod-oai-pmh-fat.jar:?]
at io.vertx.core.impl.EventLoopContext.lambda$execute$2(EventLoopContext.java:72) ~[mod-oai-pmh-fat.jar:?]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) [mod-oai-pmh-fat.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) [mod-oai-pmh-fat.jar:?]
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) [mod-oai-pmh-fat.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) [mod-oai-pmh-fat.jar:?]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [mod-oai-pmh-fat.jar:?]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [mod-oai-pmh-fat.jar:?]
at java.lang.Thread.run(Thread.java:829) [?:?]
Overview:
While working on 3.7.0 discovered when edge-oai-pmh makes request and the edge user is missing a permission required, a json parse stack trace is thrown.
Steps to Reproduce:
Log into some FOLIO environment with All Permissions
Remove a permission from edge user
make edge request to edge-oai-pmh /oai
Expected Results:
Log and error response indicating unauthorized and possible include required permission.
Actual Results:
Json parse stack trace and 500 Internal Server Error response.
Additional Information:
URL:
Interested parties:
Functional Verification: 1)Remove permission; 2)Verify that "MarcWithHoldingsRequestHelper Error has been occurred at JsonParser while reading data from response while enriching instances. Message:Unexpected character ('A' (code 65)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false') at [Source: UNKNOWN; line: 1, column: 2] com.fasterxml.jackson.core.JsonParseException: Unexpected character ('A' (code 65)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false'). - VK
Regression testing:
MMZ: The initial harvest has been run three times in the kiwi-bugfest environment after the hotfix was deployed on March 4th, March 5th and March 6th. Each harvest takes ~16 hours and harvests 8,057,158 records as reported in the bugfest channel. No regression found. Performance and consistency has been improved.
For the smoke test please use tests that are less taxing on the system:
C13784 List records in marc21_withholdings format with start and end date