enonic / xp

Enonic XP
https://enonic.com
GNU General Public License v3.0
201 stars 34 forks source link

Ignite - Port not released on shutdown #6399

Closed GlennRicaud closed 4 years ago

GlennRicaud commented 6 years ago

Reported by Rfo. After a shutdown and a restart in a same terminal, Ignite fails to bind TCP server socket (see exception below).

Works again when closing the terminal window

Exception stacktrace:

2018-07-02 13:39:58,256 ERROR com.enonic.xp.core.ignite - [com.enonic.xp.ignite.impl.IgniteCluster(62)] The activate method has thrown an exception
org.apache.ignite.IgniteException: Failed to start manager: GridManagerAdapter [enabled=true, name=org.apache.ignite.internal.managers.discovery.GridDiscoveryManager]
    at org.apache.ignite.internal.util.IgniteUtils.convertException(IgniteUtils.java:966)
    at org.apache.ignite.Ignition.start(Ignition.java:325)
    at com.enonic.xp.ignite.impl.IgniteCluster.activate(IgniteCluster.java:65)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:222)
    at org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:37)
    at org.apache.felix.scr.impl.helper.BaseMethod$Resolved.invoke(BaseMethod.java:615)
    at org.apache.felix.scr.impl.helper.BaseMethod.invoke(BaseMethod.java:499)
    at org.apache.felix.scr.impl.helper.ActivateMethod.invoke(ActivateMethod.java:295)
    at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:302)
    at org.apache.felix.scr.impl.manager.SingleComponentManager.createComponent(SingleComponentManager.java:113)
    at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:866)
    at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:833)
    at org.apache.felix.scr.impl.manager.SingleComponentManager.getService(SingleComponentManager.java:774)
    at org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:347)
    at org.apache.felix.framework.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:247)
    at org.apache.felix.framework.ServiceRegistry.getService(ServiceRegistry.java:343)
    at org.apache.felix.framework.Felix.getService(Felix.java:3692)
    at org.apache.felix.framework.BundleContextImpl.getService(BundleContextImpl.java:470)
    at org.apache.felix.scr.impl.manager.SingleRefPair.getServiceObject(SingleRefPair.java:72)
    at org.apache.felix.scr.impl.helper.BindMethod.getServiceObject(BindMethod.java:646)
    at org.apache.felix.scr.impl.manager.DependencyManager.getServiceObject(DependencyManager.java:2137)
    at org.apache.felix.scr.impl.manager.DependencyManager$MultipleDynamicCustomizer.prebind(DependencyManager.java:389)
    at org.apache.felix.scr.impl.manager.DependencyManager.prebind(DependencyManager.java:1457)
    at org.apache.felix.scr.impl.manager.AbstractComponentManager.collectDependencies(AbstractComponentManager.java:983)
    at org.apache.felix.scr.impl.manager.SingleComponentManager.getServiceInternal(SingleComponentManager.java:812)
    at org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:724)
    at org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:399)
    at org.apache.felix.scr.impl.config.ConfigurableComponentHolder.enableComponents(ConfigurableComponentHolder.java:676)
    at org.apache.felix.scr.impl.BundleComponentActivator.initialEnable(BundleComponentActivator.java:339)
    at org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:360)
    at org.apache.felix.scr.impl.Activator.access$000(Activator.java:53)
    at org.apache.felix.scr.impl.Activator$ScrExtension.start(Activator.java:260)
    at org.apache.felix.utils.extender.AbstractExtender.createExtension(AbstractExtender.java:259)
    at org.apache.felix.utils.extender.AbstractExtender.modifiedBundle(AbstractExtender.java:232)
    at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:482)
    at org.osgi.util.tracker.BundleTracker$Tracked.customizerModified(BundleTracker.java:415)
    at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:232)
    at org.osgi.util.tracker.BundleTracker$Tracked.bundleChanged(BundleTracker.java:444)
    at org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:913)
    at org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:834)
    at org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:516)
    at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4544)
    at org.apache.felix.framework.Felix.startBundle(Felix.java:2166)
    at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1365)
    at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.ignite.IgniteCheckedException: Failed to start manager: GridManagerAdapter [enabled=true, name=org.apache.ignite.internal.managers.discovery.GridDiscoveryManager]
    at org.apache.ignite.internal.IgniteKernal.startManager(IgniteKernal.java:1857)
    at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:1002)
    at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1909)
    at org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1652)
    at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1080)
    at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:600)
    at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:525)
    at org.apache.ignite.Ignition.start(Ignition.java:322)
    ... 48 common frames omitted
Caused by: org.apache.ignite.IgniteCheckedException: Failed to start SPI: TcpDiscoverySpi [addrRslvr=org.apache.ignite.configuration.BasicAddressResolver@2dac7972, sockTimeout=2000, ackTimeout=2000, marsh=JdkMarshaller [], reconCnt=10, maxAckTimeout=600000, forceSrvMode=false, clientReconnectDisabled=false]
    at org.apache.ignite.internal.managers.GridManagerAdapter.startSpi(GridManagerAdapter.java:300)
    at org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.start(GridDiscoveryManager.java:882)
    at org.apache.ignite.internal.IgniteKernal.startManager(IgniteKernal.java:1852)
    ... 55 common frames omitted
Caused by: org.apache.ignite.spi.IgniteSpiException: Failed to bind TCP server socket (possibly all ports in range are in use) [firstPort=47500, lastPort=47500, addr=/127.0.0.1]
    at org.apache.ignite.spi.discovery.tcp.ServerImpl$TcpServer.<init>(ServerImpl.java:5614)
    at org.apache.ignite.spi.discovery.tcp.ServerImpl.spiStart(ServerImpl.java:331)
    at org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.spiStart(TcpDiscoverySpi.java:1846)
    at org.apache.ignite.internal.managers.GridManagerAdapter.startSpi(GridManagerAdapter.java:297)
    ... 57 common frames omitted
2018-07-02 13:39:58,257 ERROR com.enonic.xp.core.ignite - [com.enonic.xp.ignite.impl.IgniteCluster(62)] Failed creating the component instance; see log for reason
2018-07-02 13:39:58,259 INFO  c.e.x.c.impl.ClusterManagerImpl - Adding cluster-provider: elasticsearch
2018-07-02 13:39:58,260 WARN  c.e.x.c.impl.ClusterManagerImpl - Waiting for cluster providers
2018-07-02 13:39:59,261 WARN  c.e.x.c.impl.ClusterManagerImpl - Waiting for cluster providers
2018-07-02 13:40:00,271 WARN  c.e.x.c.impl.ClusterManagerImpl - Waiting for cluster providers
2018-07-02 13:40:01,273 WARN  c.e.x.c.impl.ClusterManagerImpl - Waiting for cluster providers
^C2018-07-02 13:40:01,416 INFO  c.e.x.l.i.framework.FrameworkService - Stopping server...
2018-07-02 13:40:02,277 WARN  c.e.x.c.impl.ClusterManagerImpl - Waiting for cluster providers
RF0 commented 6 years ago

I was using dev mode on 6.15.0-RC1 (xp-distro repo) when experiencing this. Not able to reproduce every time, but probably worth looking into.

GlennRicaud commented 6 years ago

@RF0: Tried to reproduce on different machines and OS (MacOS 10.13, Ubuntu 16.04, Window Pro 10) without success. If it happens again can you try to wait a long time before trying again? Also if you have this problem on your machine, could you show me next time you pass. I will produce a custom Enonic XP version with a different way of stopping Ignite to see if it is better.

rymsha commented 4 years ago

Won't look into it #7805