ff4j / ff4j-spring-boot-starter-parent

A spring boot starter for FF4J (Feature Flipping For Java)
Apache License 2.0
31 stars 26 forks source link

Web API: Springboot 2.1.0 issue #26

Closed jtonnelier closed 5 years ago

jtonnelier commented 5 years ago

Hi,

FF4J version: 1.7.3 Spring Version: 5.1.2-RELEASE Springboot Version: 2.1.0-RELEASE

After upgrade my project to springboot 2.1.0-RELEASE, FF4J web api seems not longer to be mapped by spring... It's work with 2.0.6-RELEASE.

I use the config describe here: https://gist.github.com/paul58914080/d8c9d4263438eb06545ffa8eedd2aac1

Can you fix it, or ff4j is abandoned?

paul58914080 commented 5 years ago

Hello,

Can you please share your pom or gradle dependency.

The project is not abandoned.

For the latest spring boot dependency we have already started work on it @ https://github.com/paul58914080/ff4j-spring-boot-starter-parent. I would have to move it to this organisation and release it as part of v2.

jtonnelier commented 5 years ago

Hi @paul58914080, Ok, glad to see FF4J is maintained.

You cand find below my pom dependencies and properties associated:

``

11 ${jdk.version} ${jdk.version} UTF-8 UTF-8 @{project.version} 9.0.12 ${project.artifactId} ${project.version} ${maven.build.timestamp} dd/MM/yyyy HH:mm:ss 5.1.2.RELEASE 2.1.0.RELEASE 3.4 1.7.3 2.9.0 2.10.4 2.9.4 4.12 1.10.19 2.5.1 3.8.0 3.1.0 2.22.0 2.22.1 3.0.1 3.0.0 5.1 org.apache.maven.plugins maven-compiler-plugin ${compiler.plugin.version} ${jdk.version} org.apache.maven.plugins maven-jar-plugin ${jar.plugin.version} org.sonarsource.scanner.maven sonar-maven-plugin ${sonar.maven.plugin} org.apache.maven.plugins maven-surefire-plugin ${surefire.plugin.version} org.apache.maven.plugins maven-failsafe-plugin ${failsafe.plugin.version} org.apache.maven.plugins maven-javadoc-plugin ${javadoc.plugin.version} org.apache.cxf cxf-wadl2java-plugin ${cxf-wadl2java.plugin.version} net.alchim31.maven scala-maven-plugin ${scala.plugin.version} io.gatling gatling-maven-plugin ${gatling.plugin.version} org.codehaus.mojo build-helper-maven-plugin ${build-helper.plugin.version} org.springframework spring-beans ${spring.framework.version} org.springframework spring-context ${spring.framework.version} org.springframework spring-context-support ${spring.framework.version} org.springframework spring-core ${spring.framework.version} org.springframework spring-expression ${spring.framework.version} org.springframework spring-web ${spring.framework.version} org.springframework spring-aop ${spring.framework.version} org.springframework spring-test ${spring.framework.version} test org.springframework.boot spring-boot-starter-web ${spring.boot.version} org.springframework.boot spring-boot-starter-cache ${spring.boot.version} org.springframework.boot spring-boot-starter-logging ${spring.boot.version} org.springframework.boot spring-boot-starter-tomcat ${spring.boot.version} org.springframework.boot spring-boot-loader ${spring.boot.version} org.springframework.boot spring-boot-actuator ${spring.boot.version} org.springframework.boot spring-boot-starter-test ${spring.boot.version} test org.apache.tomcat.embed tomcat-embed-core ${tomcat.version} org.apache.tomcat.embed tomcat-embed-el ${tomcat.version} org.apache.tomcat.embed tomcat-embed-logging-juli ${tomcat.version} org.apache.tomcat.embed tomcat-embed-jasper ${tomcat.version} org.apache.tomcat.embed tomcat-embed-websocket ${tomcat.version} org.apache.commons commons-lang3 ${commons-lang3.version} org.ff4j ff4j-spring-boot-web-api ${ff4j.version} org.ff4j ff4j-web ${ff4j.version} org.ff4j ff4j-store-redis ${ff4j.version} redis.clients jedis ${jedis.version} net.sf.ehcache ehcache ${ehcache.version} com.fasterxml.jackson.core jackson-databind ${jackson.databind.version} junit junit ${junit.version} test org.mockito mockito-all ${mockito.version} test com.github.tomakehurst wiremock ${wiremock.version} com.fasterxml.jackson.core jackson-annotations

``

clun commented 5 years ago

rude....ff4j is still going, thanks Paul. Are we condemned to run behind Pivotal for free, Spring-boot 2.0.6 has been released on october 16th 2018.

jtonnelier commented 5 years ago

I don't want to hurt anyone.... I just see FF4J versions are less frequently... I use FF4J for a "big account" and I love it (I recommend it on every project now)! So I need to be sure this library is always maintained, this is my job, I hope you understand my question.

Yeah I know is complicated to follow spring / springboot release... The new branch 2.1.x is the first one with Java 11 Support. We work on upgrade Java 8 -> 11, and this is why wa try to use FF4J with springboot 2.1.0.

Thanks for all your work guys :smile:

clun commented 5 years ago

That's true less versions at the moment and the reason is active development for v2.

SPOILERS What if you could setup ff4j in your spring-boot application.yaml file ?:

ff4j:
  autocreate: true
  audit:      true

  features:
    - uid: AwesomeFeature
      enable: true

    - uid: first
      enable: true
      description: description
      groupName: GRP1
...

https://github.com/ff4j/ff4j/blob/2.0.RC1/ff4j-utils-yaml/src/test/resources/test-ff4j-parser.yml

What about some support of JDK8

 Feature f2 = new Feature(F2)
            // Fluent API
            .enable(true).group(GRP1).description("description")
            .addProperty(new PropertyDouble("ppdouble", 12.5))
            .addProperty(new PropertyBoolean("ppboolean", true))
            .addProperty(new PropertyString("ppstring", "hello"))
            // Multi valued properties
            .addProperty(new PropertyListInt("ppListInt", 12,13,14))
            .addProperty(new PropertyLogLevel("myLogLevel",LogLevel.DEBUG))
            .addProperty(new PropertyInt("digitValue", 1).addFixedValues(0,1,2,3))
            .addProperty(new PropertyString("regionIdentifier", "NA").addFixedValues("NA", "APAC", "EMEA"))
             // Multiple Strategie
            .addToggleStrategy(new PonderationToggleStrategy(1));
//Crud repository, spring-data like  
RepositoryFeatures store = new RepositoryFeaturesInMemory();
store.save(f2);
Optional<Feature > f = store.find(F2);

Thank you for your support !

jtonnelier commented 5 years ago

Ok I don't understand you work on a V2, this is a very good news for us!!

And this new features are awesome! Great work!!

So I need to wait FF4J V2 or you can fix it on 1.6.x FF4J? (It's just a question for my information)

clun commented 5 years ago

We are still fixing v1.x => We 'll try our best, will depend on backward compatibility of Spring-Boot.

paul58914080 commented 5 years ago

Hi,

FF4J version: 1.7.3 Spring Version: 5.1.2-RELEASE Springboot Version: 2.1.0-RELEASE

After upgrade my project to springboot 2.1.0-RELEASE, FF4J web api seems not longer to be mapped by spring... It's work with 2.0.6-RELEASE.

I use the config describe here: https://gist.github.com/paul58914080/d8c9d4263438eb06545ffa8eedd2aac1

Can you fix it, or ff4j is abandoned?

I have tried this dependency with a sample project and it seems to be working perfectly fine.

I am unable to duplicate the issue you are facing.

Looking at your pom dependency it seems like you have a huge list of dependency that seems to be redundant with spring-boot's dependency.

Can you provide me a gist of what issue you are facing and the steps to re-produce it.

jtonnelier commented 5 years ago

I test this sample project with JDK11 and this is my console output:

2018-11-27 17:57:13.988 INFO 9068 --- [ main] org.ff4j.sample.Application : Starting Application on **** with PID 9068 (D:\tmp\ff4j-spring-boot-sample-master\target\classes started by jtonneli in D:\tmp\ff4j-spring-boot-sample-master) 2018-11-27 17:57:13.996 INFO 9068 --- [ main] org.ff4j.sample.Application : No active profile set, falling back to default profiles: default 2018-11-27 17:57:16.163 INFO 9068 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'FF4JConfiguration' of type [org.ff4j.sample.config.FF4JConfiguration$$EnhancerBySpringCGLIB$$48f4d9e] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2018-11-27 17:57:16.314 INFO 9068 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'getFF4j' of type [org.ff4j.FF4j] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) 2018-11-27 17:57:17.275 INFO 9068 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) 2018-11-27 17:57:17.311 INFO 9068 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2018-11-27 17:57:17.311 INFO 9068 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/9.0.12 2018-11-27 17:57:17.369 INFO 9068 --- [ main] o.a.catalina.core.AprLifecycleListener : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [D:\devhome\app\jdk-11.0.1\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;D:\devhome\app\jdk-11.0.1\bin;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files\TortoiseSVN\bin;D:\SNCFCOM\tools\PHP;D:\devhome\app\apache-maven-3.1.1\bin;C:\Program Files\TortoiseGit\bin;C:\Program Files\TortoiseHg\;D:\devhome\app\nodejs\;C:\Program Files\Git\cmd;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Microsoft VS Code\bin;C:\Users\jtonneli\AppData\Roaming\npm;C:\Program Files (x86)\Microsoft VS Code\bin;C:\Users\jtonneli\AppData\Local\Programs\Fiddler;.] 2018-11-27 17:57:17.702 INFO 9068 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2018-11-27 17:57:17.703 INFO 9068 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 3655 ms 2018-11-27 17:57:17.741 INFO 9068 --- [ main] o.s.b.w.servlet.ServletRegistrationBean : Servlet dispatcherServlet mapped to [/] 2018-11-27 17:57:17.746 INFO 9068 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*] 2018-11-27 17:57:17.747 INFO 9068 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*] 2018-11-27 17:57:17.747 INFO 9068 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'formContentFilter' to: [/*] 2018-11-27 17:57:17.747 INFO 9068 --- [ main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*] 2018-11-27 17:57:18.698 INFO 9068 --- [ main] pertySourcedRequestMappingHandlerMapping : Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity<springfox.documentation.spring.web.json.Json> springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)] 2018-11-27 17:57:18.885 INFO 9068 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 2018-11-27 17:57:19.138 INFO 9068 --- [ main] d.s.w.p.DocumentationPluginsBootstrapper : Context refreshed 2018-11-27 17:57:19.157 INFO 9068 --- [ main] d.s.w.p.DocumentationPluginsBootstrapper : Found 1 custom documentation plugin(s) 2018-11-27 17:57:19.287 INFO 9068 --- [ main] s.d.s.w.s.ApiListingReferenceScanner : Scanning for api listing references 2018-11-27 17:57:20.870 INFO 9068 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '' 2018-11-27 17:57:20.876 INFO 9068 --- [ main] org.ff4j.sample.Application : Started Application in 10.757 seconds (JVM running for 12.512)

As you can see, Spring mapping not show all routes created by FF4J normally, and FF4J API is not accessible.

paul58914080 commented 5 years ago

I don't see a problem.I have deployed the same in heroku

ff4j-api

PS: The app will be in sleep mode when not accessed (last 30 mins). So if you are not getting a response immediately, I suggest you to wait until the app gets booted to wake up.

Why you don't see logs : https://stackoverflow.com/a/53512134/5416694

paul58914080 commented 5 years ago

@jtonnelier I plan to close this as I don't find this to be an issue.

You can still re-open if you have more details of how to re-produce, in case you have any issue.

dvelopp commented 5 years ago

@paul58914080, ff4j is amazing! We use it on many projects. However, currently, we faced problems with Spring Boot 2 and ff4j. Do you have any updates regarding when you will be able to release the fix for Spring Boot 2?

paul58914080 commented 5 years ago

Hello @dvelopp , I have already moved it to spring boot 2 https://github.com/paul58914080/ff4j-spring-boot-starter-parent but I have to move it to this repository with v2 branch. I will move it during this week. For my understanding I would like to know what are the issues that you faced ?

@clun any tentative dates when v2 is going to be released ?

dvelopp commented 5 years ago

@paul58914080 , It's quite difficult for me now to check but I remember that it was very similar to this one https://github.com/ff4j/ff4j/issues/305

dvelopp commented 5 years ago

@paul58914080 , hello, any updates on releasing spring boot 2 support?

paul58914080 commented 5 years ago

@dvelopp I am waiting for @clun updates.

I am thinking of having the ff4j-spring-boot-starter decoupled from this repository. @clun what is your opinion ?

paul58914080 commented 5 years ago

@dvelopp good news.

Started with the movement https://github.com/ff4j/ff4j-spring-boot-starter-parent.

Will try to release a RC (ReleaseCanditate) version within this week.

paul58914080 commented 5 years ago

Hello,

Please use the latest release i.e. 1.8.

The sample project has also be updated.

Please note: With the release of 1.8 the support of web console auto-configuration is not supported. How I have demonstrated the usage in the sample

paul58914080 commented 5 years ago

Fixed with https://github.com/ff4j/ff4j-spring-boot-starter-parent/releases/tag/1.8