eureka client closed abnormal BeanCreationNotAllowedException

BeanCreationNotAllowedException

It can be easily reproduced with Boot 2.0.4 or 1.5.14 (ie Spring Cloud Edgware.SR4 or Finchley.SR1)

 

(1)    public synchronized void shutdown() {
(2)        if (isShutdown.compareAndSet(false, true)) {
(3)            logger.info("Shutting down DiscoveryClient ...");
(4)
(5)            if (statusChangeListener != null && applicationInfoManager != null) {
(6)                applicationInfoManager.unregisterStatusChangeListener(statusChangeListener.getId());
(7)            }

the reason:

 

Let's recap:

  • DiscoveryClient.shutdown() is invoked during the application context shutdown/close process
  • DiscoveryClient needs to unregister from the ApplicationInfoManager
  • applicationInfoManager is refresh-scoped, its target must be resolved for every method invocation
  • the resolution fails with a BeanCreationNotAllowedException because the BeanFactory is in closing state.

Summarized: applicationInfoManager is refreshscoped bean, bean calls every reload, rebuild service during the shutdown bean, causes the exception, then restored in subsequent editions.

Repair submit:  https://github.com/spring-cloud/spring-cloud-netflix/commit/0c3fbc34f6b906bbe5ffc0a6ac5900357b67c72a

 

 

 

Published 20 original articles · won praise 0 · views 10000 +

Guess you like

Origin blog.csdn.net/u011248560/article/details/103868959