bytechefhq / bytechefhq/bytechef
[improve]: Better Handle Missing Optional Features
- Dominant language
- Java
- Stars
- 1k
- Forks
- 170
- Avg merge
- 11h 25m
- Merged PRs (30d)
- 115
Description
### Improvement target
Application logs
### Improvement description
Application log contains ERROR statements for features, components and modules that are not required.
If something is not required good practice would be log missing optional feature with INFO or WARNING if feature is required but unable to initialize.
Example:
```java
2025-05-17T08:21:04.972Z INFO 1 --- [ main] .b.m.b.j.c.JmsMessageBrokerConfiguration : Message broker provider type enabled: jms
2025-05-17T08:21:09.157Z INFO 1 --- [ main] c.b.s.c.StaticResourcesWebConfiguration : Serving static web content at file:///opt/bytechef/client/
2025-05-17T08:21:13.635Z WARN 1 --- [ main] o.s.a.r.a.SpringAiRetryAutoConfiguration : Retry error. Retry count: 1, Exception: HTTP 401 - {_ "error": {_ "message": "Incorrect API key provided: ${bytech*************************key}. You can find your API key at https://platform.openai.com/account/api-keys.",_ "type": "invalid_request_error",_ "param": null,_ "code": "invalid_api_key"_ }_}_
org.springframework.ai.retry.NonTransientAiException: HTTP 401 - {
"error": {
"message": "Incorrect API key provided: ${bytech*************************key}. You can find your API key at https://platform.openai.com/account/api-keys.",
"type": "invalid_request_error",
"param": null,
"code": "invalid_api_key"
}
}
at org.springframework.ai.retry.autoconfigure.SpringAiRetryAutoConfiguration$2.handleError(SpringAiRetryAutoConfiguration.java:109)
at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:58)
at org.springframework.web.client.StatusHandler.lambda$fromErrorHandler$1(StatusHandler.java:71)
at org.springframework.web.client.StatusHandler.handle(StatusHandler.java:146)
at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.applyStatusHandlers(DefaultRestClient.java:831)
at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.lambda$readBody$4(DefaultRestClient.java:820)
at org.springframework.web.client.DefaultRestClient.readWithMessageConverters(DefaultRestClient.java:216)
at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.readBody(DefaultRestClient.java:819)
at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.lambda$toEntityInternal$2(DefaultRestClient.java:775)
at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.exchangeInternal(DefaultRestClient.java:579)
at org.springframework.web.client.DefaultRestClient$DefaultRequestBodyUriSpec.exchange(DefaultRestClient.java:533)
at org.springframework.web.client.RestClient$RequestHeadersSpec.exchange(RestClient.java:680)
at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.executeAndExtract(DefaultRestClient.java:814)
at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.toEntityInternal(DefaultRestClient.java:774)
at org.springframework.web.client.DefaultRestClient$DefaultResponseSpec.toEntity(DefaultRestClient.java:770)
at org.springframework.ai.openai.api.OpenAiApi.embeddings(OpenAiApi.java:294)
at org.springframework.ai.openai.OpenAiEmbeddingModel.lambda$call$1(OpenAiEmbeddingModel.java:168)
at org.springframework.retry.support.RetryTemplate.doExecute(RetryTemplate.java:357)
at org.springframework.retry.support.RetryTemplate.execute(RetryTemplate.java:230)
at org.springframework.ai.openai.OpenAiEmbeddingModel.lambda$call$3(OpenAiEmbeddingModel.java:168)
at io.micrometer.observation.Observation.observe(Observation.java:564)
at org.springframework.ai.openai.OpenAiEmbeddingModel.call(OpenAiEmbeddingModel.java:166)
at org.springframework.ai.embedding.EmbeddingModel.embed(EmbeddingModel.java:67)
at org.springframework.ai.embedding.EmbeddingModel.embed(EmbeddingModel.java:49)
at org.springframework.ai.embedding.AbstractEmbeddingModel.dimensions(AbstractEmbeddingModel.java:70)
at org.springframework.ai.embedding.AbstractEmbeddingModel.dimensions(AbstractEmbeddingModel.java:95)
at org.springframework.ai.vectorstore.pgvector.PgVectorStore.embeddingDimensions(PgVectorStore.java:489)
at org.springframework.ai.vectorstore.pgvector.PgVectorStore.afterPropertiesSet(PgVectorStore.java:442)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1865)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1814)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:607)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:529)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:371)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1221)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1187)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1122)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:987)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:318)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1362)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1351)
at com.bytechef.server.ServerApplication.main(ServerApplication.java:35)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102)
at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64)
at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:40)
2025-05-17T08:21:13.645Z WARN 1 --- [ main] o.s.a.v.pgvector.PgVectorStore : Failed to obtain the embedding dimensions from the embedding model and fall backs to default:1536
org.springframework.ai.retry.NonTransientAiException: HTTP 401 - {
"error": {
"message": "Incorrect API key provided: ${bytech*************************key}. You can find your API key at https://platform.openai.com/account/api-keys.",
"type": "invalid_request_error",
"param": null,
"code": "invalid_api_key"
}
}
at org.springframework.ai.retry.autoconfigure.SpringAiRetryAutoConfiguration$2.handleError(SpringAiRetryAutoConfiguration.java:109)
at or
```
Expected:
```java
2025-05-17T08:21:13.635Z WARN 1 --- [ main] o.s.a.r.a.SpringAiRetryAutoConfiguration : AI Feature Unavailable. Incorrect API key provided. You can find your API key at https://platform.openai.com/account/api-keys.
2025-05-17T08:21:13.645Z WARN 1 --- [ main] o.s.a.v.pgvector.PgVectorStore : Failed to obtain the embedding dimensions from the embedding model and fall backs to defaul```
### Observed Version
2.3.1
Contributor guide
Assessment
This issue has not been assessed yet.