java-client icon indicating copy to clipboard operation
java-client copied to clipboard

Latest java-client fails with IllegalStateException

Open jimshowalter opened this issue 1 year ago • 5 comments

Something in https://github.com/splitio/java-client/compare/4.13.0...4.13.1 causes this to happen in our tests:

SplitFetcherImp: RefreshableSplitFetcher failed: Problem fetching splitChanges since -1: java.lang.IllegalStateException: Could not retrieve splitChanges since -1; http return code 403

(The RefreshableSplitFetcher should be SplitFetcherImpl, as reported separately in https://github.com/splitio/java-client/issues/525.)

If we force the version to 4.13.0, the problem goes away.

jimshowalter avatar Dec 31 '24 22:12 jimshowalter

Hi @jimshowalter, could you please provide full debug logs? the 403 error means incorrect api key, so just want to see the whole request and the rest of debug lines.

Thanks Bilal

chillaq avatar Jan 10 '25 17:01 chillaq

Will try to get that to you today.

jimshowalter avatar Jan 10 '25 18:01 jimshowalter

The developer who ran into this problem is currently buried working to deadline on a product GA, but he'll try to get the information to you soon.

jimshowalter avatar Jan 13 '25 20:01 jimshowalter

Not sure how useful this is, but this is all of the logs:

2025-01-15 14:58:08,324 WARN  [SPLIT-Initialization-0] SplitHttpClient: Response status was: 403. Reason: Forbidden
2025-01-15 14:58:08,326 ERROR [SPLIT-Initialization-0] SplitFetcherImp: RefreshableSplitFetcher failed: Problem fetching splitChanges since -1: java.lang.IllegalStateException: Could not retrieve splitChanges since -1; http return code 403
2025-01-15 14:58:09,416 WARN  [SPLIT-Initialization-0] SplitHttpClient: Response status was: 403. Reason: Forbidden
2025-01-15 14:58:09,417 ERROR [SPLIT-Initialization-0] SplitFetcherImp: RefreshableSplitFetcher failed: Problem fetching splitChanges since -1: java.lang.IllegalStateException: Could not retrieve splitChanges since -1; http return code 403
2025-01-15 14:58:11,504 WARN  [SPLIT-Initialization-0] SplitHttpClient: Response status was: 403. Reason: Forbidden
2025-01-15 14:58:11,505 ERROR [SPLIT-Initialization-0] SplitFetcherImp: RefreshableSplitFetcher failed: Problem fetching splitChanges since -1: java.lang.IllegalStateException: Could not retrieve splitChanges since -1; http return code 403
2025-01-15 14:58:15,596 WARN  [SPLIT-Initialization-0] SplitHttpClient: Response status was: 403. Reason: Forbidden
2025-01-15 14:58:15,597 ERROR [SPLIT-Initialization-0] SplitFetcherImp: RefreshableSplitFetcher failed: Problem fetching splitChanges since -1: java.lang.IllegalStateException: Could not retrieve splitChanges since -1; http return code 403
2025-01-15 14:58:18,157 ERROR [main] SplitFactoryConfig: Failure to initialize Split connection
error_type: com.foo.bar.featureflip.exceptions.FooBarFeatureFlipException
error_message: Timeout during feature client creation: SDK was not ready in 10000 milliseconds
error_stack: com.foo.bar.util.splitio.SplitFactoryConfig.initSplitClient(SplitFactoryConfig.java:96)
        com.foo.bar.util.splitio.SplitFactoryConfig.initSplit(SplitFactoryConfig.java:67)
        com.foo.bar.util.splitio.SplitFactoryConfig.reloadConfig(SplitFactoryConfig.java:117)
        com.foo.bar.util.splitio.SplitFactoryConfig.<init>(SplitFactoryConfig.java:56)
        com.foo.bar.service.SpringConfig.splitFactoryConfig(SpringConfig.java:284)
        com.foo.bar.service.SpringConfig$$SpringCGLIB$$0.CGLIB$splitFactoryConfig$4(<generated>)
        com.foo.bar.service.SpringConfig$$SpringCGLIB$$FastClass$$1.invoke(<generated>)
        org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:258)
        org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:348)
        com.foo.bar.service.SpringConfig$$SpringCGLIB$$0.splitFactoryConfig(<generated>)
        java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
        java.base/java.lang.reflect.Method.invoke(Method.java:580)
        org.springframework.beans.factory.support.SimpleInstantiationStrategy.lambda$instantiate$0(SimpleInstantiationStrategy.java:171)
        org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiateWithFactoryMethod(SimpleInstantiationStrategy.java:88)
        org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:168)
        org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653)
        org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:645)
        org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1351)
        org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1181)
        org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563)
        org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)
        org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:336)
        org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:288)
        org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:334)
        org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
        org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
        org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1626)
        org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1514)
        org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:913)
        org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791)
        org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240)
        org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1371)
        org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1208)
        org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563)
        org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)
        org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:336)
        org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:288)
        org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:334)
        org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
        org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:254)
        org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1626)
        org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1514)
        org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:913)
        org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791)
        org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:240)
        org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1371)
        org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1208)
        org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:563)
        org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523)
        org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:336)
        org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:288)
        org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:334)
        org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
        org.springframework.beans.factory.support.DefaultListableBeanFactory.instantiateSingleton(DefaultListableBeanFactory.java:1122)
        org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingleton(DefaultListableBeanFactory.java:1093)
        org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:1030)
        org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:987)
        org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627)
        org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146)
        org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752)
        org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439)
        org.springframework.boot.SpringApplication.run(SpringApplication.java:318)
        org.springframework.boot.SpringApplication.run(SpringApplication.java:1361)
        org.springframework.boot.SpringApplication.run(SpringApplication.java:1350)
        com.foo.bar.ServiceApplication.main(ServiceApplication.java:29)
        java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
        java.base/java.lang.reflect.Method.invoke(Method.java:580)
        org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102)
        org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64)
        org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:40)

jimshowalter avatar Jan 15 '25 23:01 jimshowalter

Did something in 4.13.1 change how to authenticate?

jimshowalter avatar Jan 15 '25 23:01 jimshowalter

This magically healed itself in the latest version.

jimshowalter avatar Jun 08 '25 17:06 jimshowalter