Lib issueshttps://community.opengroup.org/groups/osdu/platform/system/lib/-/issues2022-12-08T17:13:50Zhttps://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/issues/30Cursor search returns results even when version does not match.2022-12-08T17:13:50ZGregCursor search returns results even when version does not match.POST – Query With Cursor. Functionality working but defect.
For example, below request is to search "opendes:osdu:wellbore-master:0.2.0" with the cursor "2F8900678904A680D24593BC7D8BEEA5".
However, it is still returning the results wit...POST – Query With Cursor. Functionality working but defect.
For example, below request is to search "opendes:osdu:wellbore-master:0.2.0" with the cursor "2F8900678904A680D24593BC7D8BEEA5".
However, it is still returning the results with 0.2.0 even I change the version number of data, e.g. "opendes:osdu:wellbore-master:0.0.8"
{ "kind": "opendes:osdu:wellbore-master:0.2.0", "cursor": "2F8900678904A680D24593BC7D8BEEA5", "aggregateBy": "kind" }
It seems that the kind should not be required once you have the Cursor ID. Or, if it is required, the kind should need to be the same as the original query.M1 - Release 0.1Chris ZhangChris Zhanghttps://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/issues/29Get Group Members query parameters not working properly.2022-12-08T17:14:06ZGregGet Group Members query parameters not working properly.GET – Get Group Members. Functionality working but defects. Query parameters “limit” and “role” not working properly If query params optional,e.g., it should return all the members regardless of the role for the request URL {{osduonaws_b...GET – Get Group Members. Functionality working but defects. Query parameters “limit” and “role” not working properly If query params optional,e.g., it should return all the members regardless of the role for the request URL {{osduonaws_base_url}}/api/entitlements/v1/groups/data.testing.osduonaws-testing@opendes.shell.com/members?limit=100. Currently it only return the user with the role of OWNER If query params required, e.g., it should return error handling with the message like “required parameter xxx missing”. There is defect with either scenario. And it would make more sense to keep query params optional in this case.M1 - Release 0.1JoeRucha DeshpandeMatt WiseJoehttps://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/issues/28Notification service not integrated with core services.2021-01-25T21:11:23ZGregNotification service not integrated with core services.Notification service not integrated with core services.Notification service not integrated with core services.M1 - Release 0.1Chris ZhangChris Zhanghttps://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/issues/25Delete LegalTag response message is not correct.2022-09-27T13:50:36ZGregDelete LegalTag response message is not correct.DEL – Delete LegalTag. Functionality working but needs improvement. Need to improve the response as it is returning 204 No Content without any message regardless of whether the legal tag exists or not. If the Legal Tag does not exist, it...DEL – Delete LegalTag. Functionality working but needs improvement. Need to improve the response as it is returning 204 No Content without any message regardless of whether the legal tag exists or not. If the Legal Tag does not exist, it is expected to return 404 Not Found with the message like “Cannot delete a LegalTag that does not exist for given name xxx”M1 - Release 0.1Chris ZhangChris Zhanghttps://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/issues/24Inconsistent error handling across services.2022-09-27T14:19:25ZGregInconsistent error handling across services.Entitlements Service & Search Service. The response body is in JSON format. The attributes of “code”, “reason”, “message” are returned along with status code, e.g., 401 Unauthorized. Legal Service. The response body is in Text format wit...Entitlements Service & Search Service. The response body is in JSON format. The attributes of “code”, “reason”, “message” are returned along with status code, e.g., 401 Unauthorized. Legal Service. The response body is in Text format with no attributes of “code”, “reason”, “message” returned.M1 - Release 0.1Chris ZhangChris Zhanghttps://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/issues/23Create LegalTag Expiration date is not human readable.2021-01-23T20:12:58ZGregCreate LegalTag Expiration date is not human readable.POST – Create LegalTag. Functionality working but defect. The attribute of "expirationDate" in payload is “2222222222222”, which is not human-readable. Need to convert epoch time to human-readable date. The schema of “expirationDate” of ...POST – Create LegalTag. Functionality working but defect. The attribute of "expirationDate" in payload is “2222222222222”, which is not human-readable. Need to convert epoch time to human-readable date. The schema of “expirationDate” of the legal tag is in the format of “yyyy-mm-dd”, e.g.,"2040-06-02".M1 - Release 0.1Chris ZhangChris Zhanghttps://community.opengroup.org/osdu/platform/system/lib/cloud/azure/os-core-lib-azure/-/issues/200.13.0 Getting NoSuchMethodError at com.azure.storage.blob.specialized.BlobAs...2022-08-30T11:52:13ZTsvetelina Ivanova0.13.0 Getting NoSuchMethodError at com.azure.storage.blob.specialized.BlobAsyncClientBase.lambda$downloadStreamWithResponse$22When using version 0.13.0 we get exception NoSuchMethodError at com.azure.storage.blob.specialized.BlobAsyncClientBase.lambda$downloadStreamWithResponse$22 when try to read files from blob storage.
In version 0.13.0 a new version of azu...When using version 0.13.0 we get exception NoSuchMethodError at com.azure.storage.blob.specialized.BlobAsyncClientBase.lambda$downloadStreamWithResponse$22 when try to read files from blob storage.
In version 0.13.0 a new version of azure-storage-blob is introduced 12.13.0. In class BlobAsyncClientBase on line 1069 a call to FluxUtil.createRetriableDownloadFlux() is made.
In class FluxUtil method createRetriableDownloadFlux() does not exists. (This class is in library azure-core).
**Stack Trace:**
java.lang.NoSuchMethodError: com.azure.core.util.FluxUtil.createRetriableDownloadFlux(Ljava/util/function/Supplier;Ljava/util/function/BiFunction;IJ)Lreactor/core/publisher/Flux;
at com.azure.storage.blob.specialized.BlobAsyncClientBase.lambda$downloadStreamWithResponse$22(BlobAsyncClientBase.java:1069)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:113)
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:249)
at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74)
at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2398)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2194)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2068)
at reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:192)
at reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53)
at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:57)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:157)
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
at reactor.core.publisher.FluxDoOnEach$DoOnEachSubscriber.onNext(FluxDoOnEach.java:173)
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:151)
at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:120)
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79)
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:151)
at reactor.core.publisher.FluxDelaySubscription$DelaySubscriptionMainSubscriber.onNext(FluxDelaySubscription.java:189)
at reactor.core.publisher.SerializedSubscriber.onNext(SerializedSubscriber.java:99)
at reactor.core.publisher.SerializedSubscriber.onNext(SerializedSubscriber.java:99)
at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.onNext(FluxTimeout.java:180)
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)
at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:249)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:127)
at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:127)
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:151)
at reactor.core.publisher.SerializedSubscriber.onNext(SerializedSubscriber.java:99)
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onNext(FluxRetryWhen.java:174)
at reactor.core.publisher.Operators$MonoInnerProducerBase.complete(Operators.java:2664)
at reactor.core.publisher.MonoSingle$SingleSubscriber.onComplete(MonoSingle.java:180)
at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2400)
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onSubscribeInner(MonoFlatMapMany.java:150)
at reactor.core.publisher.MonoFlatMapMany$FlatMapManyMain.onNext(MonoFlatMapMany.java:189)
at reactor.core.publisher.SerializedSubscriber.onNext(SerializedSubscriber.java:99)
at reactor.core.publisher.FluxRetryWhen$RetryWhenMainSubscriber.onNext(FluxRetryWhen.java:174)
at reactor.core.publisher.MonoCreate$DefaultMonoSink.success(MonoCreate.java:165)
at reactor.netty.http.client.HttpClientConnect$HttpIOHandlerObserver.onStateChange(HttpClientConnect.java:414)
at reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:671)
at reactor.netty.resources.DefaultPooledConnectionProvider$DisposableAcquire.onStateChange(DefaultPooledConnectionProvider.java:201)
at reactor.netty.resources.DefaultPooledConnectionProvider$PooledConnection.onStateChange(DefaultPooledConnectionProvider.java:457)
at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:637)
at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:93)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:311)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:432)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1371)
at io.netty.handler.ssl.SslHandler.decodeNonJdkCompatible(SslHandler.java:1245)
at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1285)
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:507)
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:446)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.kqueue.AbstractKQueueStreamChannel$KQueueStreamUnsafe.readReady(AbstractKQueueStreamChannel.java:544)
at io.netty.channel.kqueue.AbstractKQueueChannel$AbstractKQueueUnsafe.readReady(AbstractKQueueChannel.java:381)
at io.netty.channel.kqueue.KQueueEventLoop.processReady(KQueueEventLoop.java:211)
at io.netty.channel.kqueue.KQueueEventLoop.run(KQueueEventLoop.java:289)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:748)M14 - Release 0.17https://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/issues/67inefficient/non-performant crs-conversions causing reliability/performance is...2023-06-21T07:54:16ZYurii Kondakovinefficient/non-performant crs-conversions causing reliability/performance issues on ingestion workflowWe are seeing reliability and performance issue because of inefficient/non-performant crs-conversions on ingestion workflow. If crs conversions takes long time (on Storage /batch API), then it slows down entire ingestion workflow.
There...We are seeing reliability and performance issue because of inefficient/non-performant crs-conversions on ingestion workflow. If crs conversions takes long time (on Storage /batch API), then it slows down entire ingestion workflow.
There is a need for setting a timeout for crs-conversion requests that run for more than a certain time. For the requests to crs-conversion-service currently java.net.HttpURLConnection class is used, which is only has connectionTimeout and readTimeout properties, that don't help us to set the timeout.
It is suggested to use apache CloseableHttpClient httpClient that has socketTimeout property.
core-common MR - https://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/merge_requests/213
storage MR - https://community.opengroup.org/osdu/platform/system/storage/-/merge_requests/712M19 - Release 0.22Yurii KondakovYurii Kondakovhttps://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/issues/72Error getting data from Redis on lost connection2023-09-18T07:26:13ZYurii Ruban [EPAM / GCP]Error getting data from Redis on lost connectionIn case of loss of connection between the service and Redis, the processing of requests to the service is delayed and an error of type
`Command timed out after 30 SECONDS` is received.
Redis (cache service) is a productivity tool. In c...In case of loss of connection between the service and Redis, the processing of requests to the service is delayed and an error of type
`Command timed out after 30 SECONDS` is received.
Redis (cache service) is a productivity tool. In case of a lost connection, delays in processing requests increase, and, in general, the service becomes unviable.
`entitlements-v2.app: An unknown error has occurred
AppException(error=AppError(code=500, reason=Internal Server Error, message=An unknown error has occurred, errors=null, debuggingInfo=null, originalException=com.lambdaworks.redis.RedisCommandTimeoutException: Command timed out after 30 SECONDS), originalException=com.lambdaworks.redis.RedisCommandTimeoutException: Command timed out after 30 SECONDS)
...
Caused by: com.lambdaworks.redis.RedisCommandTimeoutException: Command timed out after 30 SECONDS
`
I recommend adding Redis health checks.M20 - Release 0.23Yurii Ruban [EPAM / GCP]Yurii Ruban [EPAM / GCP]https://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/issues/78ADR: Strategy for Core-Common Migration to Spring 6 and Jakarta EE2024-03-26T11:39:59ZRustam Lotsmanenko (EPAM)rustam_lotsmanenko@epam.comADR: Strategy for Core-Common Migration to Spring 6 and Jakarta EE# ADR: Strategy for Core-Common Migration to Spring 6 and Jakarta EE
## Status
- [ ] Proposed
- [ ] Trialing
- [ ] Under review
- [ ] Approved
- [ ] Retired
## Context
Our current challenge revolves around the compatibility of Core-...# ADR: Strategy for Core-Common Migration to Spring 6 and Jakarta EE
## Status
- [ ] Proposed
- [ ] Trialing
- [ ] Under review
- [ ] Approved
- [ ] Retired
## Context
Our current challenge revolves around the compatibility of Core-Common with Spring 6 and Jakarta and the breaking changes caused by the Core-Common upgrade that will affect OSDU services that will keep using Spring 5 and Javax. The same issue is observed with CSP core-libs.
## Problem Statement
If we proceed with upgrading Core-Common to Spring 6 and Jakarta as is, services on Spring 5 won't be able to use the upgraded Core-Common. This also applies to CSP core-libs. Freezing the service with the old Core-Common is not a viable option.
Example of straightforward, not compatible migration: https://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/merge_requests/261
## Decision Options
**1. Fork of Core-Common**
Create a new branch or module within the same repository to maintain a second version of Core-Common. Two versions of Core-Common will have to be maintained simultaneously.
- Pros: Less initial development effort is required. Ability to add new breaking changes to Core-Common fork.
- Cons: This approach will require cherry-picking changes, potentially increasing maintenance overhead.
**2. Byte/Source Code Modifications during Build**
Modify code during the build process using plugins.
- Pros: Possibility of a smooth upgrade, no changes would be required for services that are still using Spring 5 and Javax.
- Cons: This workaround may introduce potential build and runtime issues, and its feasibility is uncertain. Requires a lot of initial effort to develop complex build configurations.
**3. Heavy Core-Common Refactoring**
Refactored Core-Common, 2 new modules with extracted affected code, 1 compatible with Spring 5 and Javax, and another for Spring 6 and Jakarta.
- Pros: Cleaner approach, compatibility will be guaranteed, lesser chance of unexpected issues.
- Cons: A lot of effort to refactor. Breaks the current flow, auto upgrades could be blocked, it may be required to switch libraries. Code duplicates are possible, so in further development, we may have to push changes into two modules.
## Decision
TBD
## Consequences
TBDM23 - Release 0.26Chad LeongChad Leonghttps://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/issues/77Increase timeout for storage service requests2024-02-01T12:51:10ZSudesh TagadpallewarIncrease timeout for storage service requestsWhen registering dataset using `/registerDataset` some users are getting 400 error. As per the Logs this request is timing out(with the error- **Unexpected error sending to URL http://storage/api/storage/v2/records METHOD PUT error java....When registering dataset using `/registerDataset` some users are getting 400 error. As per the Logs this request is timing out(with the error- **Unexpected error sending to URL http://storage/api/storage/v2/records METHOD PUT error java.net.SocketTimeoutException: Read timed out**) when it tries to upsertRecord in the Storage. We have found out that when dataset service is calling storage service and it is taking more than 5 seconds which results in a SocketTimeoutException. When creating `StorageService` instance using `StorageFactory`, new `HttpClient()` instance is used which has default timeout of 5 seconds. Instead of using new `HttpClient` instance `HttpClientHandler` instance should have been used which has 60 seconds timeout. This code is present in the core-common library. See attached image for reference![storage](/uploads/31cfbdb427cf9fc78168dc0fbc4e7f24/storage.JPG)https://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/issues/75Empty partition id causing 500 internal server error in partition feature fla...2023-10-26T10:37:15ZAbhishek PatilEmpty partition id causing 500 internal server error in partition feature flag implementationIf `featureFlag.strategy=dataPartition` and a user makes a API call with empty data-partition-id then a 500 Internal Server Error is returned. Ideally a 4xx error should be returned in such cases where user provide incorrect input.
http...If `featureFlag.strategy=dataPartition` and a user makes a API call with empty data-partition-id then a 500 Internal Server Error is returned. Ideally a 4xx error should be returned in such cases where user provide incorrect input.
https://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/blob/master/src/main/java/org/opengroup/osdu/core/common/feature/PartitionFeatureFlagImpl.java#L59
As per the above code, 500 internal server error is thrown because `partitionProvider.get(headers.getPartitionId())` will throw a PartitionException in case of empty data-partition-id.https://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/issues/74Absence of NotNull or NotEmpty checks for legal field in storage record causi...2023-10-05T10:22:32ZAbhishek PatilAbsence of NotNull or NotEmpty checks for legal field in storage record causing issuesThe legal field in storage record has no NotNull or NotEmpty validations for it.
https://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/blob/master/src/main/java/org/opengroup/osdu/core/common/model/storage/Recor...The legal field in storage record has no NotNull or NotEmpty validations for it.
https://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/blob/master/src/main/java/org/opengroup/osdu/core/common/model/storage/Record.java?ref_type=heads#L74
This is causing issue if a user try to create a storage record without passing legal in the request payload. In storage service, the legal field of record is accessed(for example [this](https://community.opengroup.org/osdu/platform/system/storage/-/blob/master/storage-core/src/main/java/org/opengroup/osdu/storage/service/IngestionServiceImpl.java?ref_type=heads#L397)) and if it's null, a null pointer exception is thrown which ultimately results in 500 Internal Server Error response.
Putting up NotNull/NotEmpty validations for legal will ensure that we throw 400 response with right message in case if legal is not passed in input request payload. Just like we have NotNull validation for acl in storage record (check [this](https://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/blob/master/src/main/java/org/opengroup/osdu/core/common/model/storage/Record.java?ref_type=heads#L69)), we can have same validation for legal too.https://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/issues/70Invalid data-partition-id will create 500 code with no Authorize message.2023-10-10T12:16:06ZBruce JinInvalid data-partition-id will create 500 code with no Authorize message.While making calls to OSDU services, such as `secret` and `storage` service, testers discover that if they put invalid symbols in `data_partition_id`, we will have 500 code, but with reason of Access Denied.
After investigation, we reali...While making calls to OSDU services, such as `secret` and `storage` service, testers discover that if they put invalid symbols in `data_partition_id`, we will have 500 code, but with reason of Access Denied.
After investigation, we realize the partition service did not consider the situation that user put invalid URI symbols like `@#$%` in data partition
id, which will make the `normalizeStringUrl` function have Java.Lang exception in this [UrlNormalizationUtil.java](https://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/blob/master/src/main/java/org/opengroup/osdu/core/common/util/UrlNormalizationUtil.java).
```
Caused by: java.lang.IllegalArgumentException: Malformed escape pair at index 57: http://os-partition:8080/api/partition/v1/partitions/osdu%
at java.net.URI.create(URI.java:852)
at org.opengroup.osdu.core.common.util.UrlNormalizationUtil.normalizeStringUrl(UrlNormalizationUtil.java:27)
```
This will generate a 500 code in entitlement service since the service will treat this error as a general error in [SpringExceptionMapper.java](handleGeneralException), instead a 400 code.
Also in Entitlements the error message is processed within [AuthorizationServiceImpl.java](https://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/blob/master/src/main/java/org/opengroup/osdu/core/common/entitlements/AuthorizationServiceImpl.java), so it will have `"Access denied", "The user is not authorized to perform this action"` error message.
Here is a MR that will handle the 500 code produced from `java.lang.IllegalArgumentException` https://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/merge_requests/219Bruce JinBruce Jinhttps://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/issues/68Core-common post migration TODOs (Powermock, module access)2023-06-28T14:57:27ZRustam Lotsmanenko (EPAM)rustam_lotsmanenko@epam.comCore-common post migration TODOs (Powermock, module access)- Unit test refactoring is required, to remove --add-opens params from build run args.
~~~
<argLine>--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED</argLine>
~~~
Tests failed without args:
~~~
Fail...- Unit test refactoring is required, to remove --add-opens params from build run args.
~~~
<argLine>--add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED</argLine>
~~~
Tests failed without args:
~~~
Failed tests:
shouldThrowExceptionWhenPropertyNotPresentInEnv(org.opengroup.osdu.core.common.partition.PartitionPropertyResolverTest)
shouldThrowExceptionWhenPropertyInMapNull(org.opengroup.osdu.core.common.partition.PartitionPropertyResolverTest)
shouldThrowExceptionWhenPropertyValueInMapNull(org.opengroup.osdu.core.common.partition.PartitionPropertyResolverTest)
shouldThrowExceptionWhenPropertyNotInMap(org.opengroup.osdu.core.common.partition.PartitionPropertyResolverTest)
Tests in error:
shouldNotThrowExceptionWhenPropertyValueInMapIsEmpty(org.opengroup.osdu.core.common.partition.PartitionPropertyResolverTest)
shouldNotThrowExceptionWhenEnvReturnEmptyVal(org.opengroup.osdu.core.common.partition.PartitionPropertyResolverTest)
shouldGetTypedProperties(org.opengroup.osdu.core.common.partition.PartitionPropertyResolverTest)
getPropertyValueFromEnv(org.opengroup.osdu.core.common.partition.PartitionPropertyResolverTest)
shouldThrowExceptionWhenEnvReturnNull(org.opengroup.osdu.core.common.partition.PartitionPropertyResolverTest)
getPropertyValueFromMapValue(org.opengroup.osdu.core.common.partition.PartitionPropertyResolverTest)
~~~
- Powermock dependency removal is highly recommended, Powermock not getting updates to work with Java 17, and has conflicts with Mockito:
~~~
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-core</artifactId>
<version>2.0.9</version>
<scope>test</scope>
</dependency>
~~~https://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/issues/64Spring configuration related to Feature flag should be optional2023-01-30T11:37:15ZRustam Lotsmanenko (EPAM)rustam_lotsmanenko@epam.comSpring configuration related to Feature flag should be optionalIt is possible that some OSDU services may not use Partition service, Unit service as an example. But the configuration of the recently merged code https://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/merge_requ...It is possible that some OSDU services may not use Partition service, Unit service as an example. But the configuration of the recently merged code https://community.opengroup.org/osdu/platform/system/lib/core/os-core-common/-/merge_requests/189 requires PARTITION_API env variable mandatorily. It will be better to change the configuration to make it optional, instead of bringing this variable to each service, no matter if Partition is used or not.
~~~
Exception encountered during context initialization - cancelling refresh attempt:
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'featureFlagConfig':
Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException:
Could not resolve placeholder 'PARTITION_API' in value "${PARTITION_API}"
~~~Rustam Lotsmanenko (EPAM)rustam_lotsmanenko@epam.comRiabokon Stanislav(EPAM)[GCP]Rustam Lotsmanenko (EPAM)rustam_lotsmanenko@epam.comhttps://community.opengroup.org/osdu/platform/system/lib/cloud/azure/os-core-lib-azure/-/issues/28Improve performance on CosmosStore pageable query method2022-09-28T15:48:40ZRafael FreireImprove performance on CosmosStore pageable query methodCurrently, CosmosStore has a queryItemsPage which interact with a BlockingIterable object twice per call. This object uses a Thread-sleep blocking way to iterate through page results causing a slow performance for heavy queries. Its impl...Currently, CosmosStore has a queryItemsPage which interact with a BlockingIterable object twice per call. This object uses a Thread-sleep blocking way to iterate through page results causing a slow performance for heavy queries. Its implementation can be improved by substituting the check then use style for a for-each approachRafael FreireRafael Freirehttps://community.opengroup.org/osdu/platform/system/lib/cloud/azure/os-core-lib-azure/-/issues/24Make system token generation more robust2022-08-23T15:11:30ZArsen GrigoryanMake system token generation more robust**Summary**: There was a problem in generating a credential to access partition service from cached secret because of rotation.
The Service principal is used to access Partition service for retrieving partition-specific credentials to E...**Summary**: There was a problem in generating a credential to access partition service from cached secret because of rotation.
The Service principal is used to access Partition service for retrieving partition-specific credentials to ECK.
Java service reads environment variable once at start-up. If service principal is changed (rotated) after service startup, service is unable to access Partition service. Change of service principal requires restart of service (restart of all pods) to force re-read of service principal value. This causes unnecessary down-time (returning errors or permission failures back to client).
**Proposed solution**: Service must be more robust to pick up new service principal value when old value fails. The token generation should attempt to retrieve the key from source if generation returns 401 after using the cached secret.https://community.opengroup.org/osdu/platform/system/lib/cloud/azure/os-core-lib-azure/-/issues/18Version Incompatibility with azure blob storage library in multiple services2022-07-11T19:53:59Zharshit aggarwalVersion Incompatibility with azure blob storage library in multiple servicesMultiple services (storage, legal known) are facing issues after upgrading to latest core lib version due to failures while connecting with blob store
Potential issue seems to be recent version upgrade in blob libraries
https://communi...Multiple services (storage, legal known) are facing issues after upgrading to latest core lib version due to failures while connecting with blob store
Potential issue seems to be recent version upgrade in blob libraries
https://community.opengroup.org/osdu/platform/system/lib/cloud/azure/os-core-lib-azure/-/merge_requests/175/diffs#442292b8a7efeabbe4cc176709b833b1792140ec
cc: @kibattulHarshit SaxenaHarshit Saxenahttps://community.opengroup.org/osdu/platform/system/lib/cloud/azure/os-core-lib-azure/-/issues/17Issue in Publisher Facade2022-01-21T09:59:41ZAbhishek Kumar (SLB)Issue in Publisher FacadeServices using Publisher Fascare from this MR.
They would fail with below error:
```
***************************
APPLICATION FAILED TO START
***************************
Description:
Field pubSubAttributesBuilder in org.opengroup.osdu....Services using Publisher Fascare from this MR.
They would fail with below error:
```
***************************
APPLICATION FAILED TO START
***************************
Description:
Field pubSubAttributesBuilder in org.opengroup.osdu.azure.publisherFacade.EventGridPublisher required a bean of type 'org.opengroup.osdu.azure.publisherFacade.models.PubSubAttributesBuilder' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'org.opengroup.osdu.azure.publisherFacade.models.PubSubAttributesBuilder' in your configuration.
```
**Root cause:**
Autowiring beans which are not declared as Spring bean:<br>
`@Autowired
private PubSubAttributesBuilder pubSubAttributesBuilder;
`
<br>
`
@Lazy
@Builder
public class PubSubAttributesBuilder {
`
**Solution:**
Remove unused reference of `private PubSubAttributesBuilder pubSubAttributesBuilder` from `src/main/java/org/opengroup/osdu/azure/publisherFacade/EventGridPublisher.java` & `src/main/java/org/opengroup/osdu/azure/publisherFacade/ServiceBusPublisher.java`Nikhil Singh[MicroSoft]Nikhil Singh[MicroSoft]