spring-cloud / spring-cloud-vault

Configuration Integration with HashiCorp Vault
http://cloud.spring.io/spring-cloud-vault/
Apache License 2.0
270 stars 151 forks source link

Fail to hande event LeaseListener when using spring config import #643

Open juriohacc opened 2 years ago

juriohacc commented 2 years ago

Describe the bug I cannot subscribe to a event LeaseListener from SecretLeaseContainer since Im loading vault properties with spring cloud config. When Spring cloud vault emit the event about lease, my handler is not executed, the listeners of the class SecretLeaseEventPublisher does not contains my subscription.

Spring boot : 2.6.7 Spring Cloud : 2021.0.1

I have added the dependency spring-cloud-starter-bootstrap, and i use bootstrap.yml file for spring cloud vault configuration

Sample

The class with the subscription

  @Slf4j
  @Configuration
  public class CustomLeasingHandlerConfig  {

    @Autowired
    private SecretLeaseContainer leaseContainer; 

    @PostConstruct
    private void postConstruct() { 
        leaseContainer.addLeaseListener( (event) -> { 
            log.info("Event lease listener source : {} and event class : {}",event.getSource(), event.getClass());
    });
}

This does not work (my listener is never executed)

The application configuration

spring:
    config:
        import:
            - vault://s3/3000922?prefix=s.
            - vault://secret/app/dev/test

If I remove this configuration, i don't have any problems.

For example, this is working but i couldn't add specific vault secret engine as the last configuration :

The application configuration

spring:
    config:
        import:
            - vault://

Is the spring config compatible with spring cloud vault module about the management of SecretLeaseContainer and listeners? It's like if i couldn't use the same secretleasecontainer in my config and spring cloud Config