bytechefhq / bytechefhq/bytechef

[improve]: Better Handle Missing Optional Features

Open
#2,588 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.