Skip to content

Commit

Permalink
Distributed Session Management #7529
Browse files Browse the repository at this point in the history
  • Loading branch information
rymsha committed Oct 23, 2019
1 parent b89661c commit e1fb8ad
Show file tree
Hide file tree
Showing 13 changed files with 312 additions and 153 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
package com.enonic.xp.ignite.impl;

import java.util.Hashtable;

import org.apache.ignite.Ignite;
import org.apache.ignite.Ignition;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Deactivate;
import org.osgi.service.component.annotations.Reference;

import com.enonic.xp.cluster.ClusterConfig;
import com.enonic.xp.ignite.impl.config.ConfigurationFactory;
import com.enonic.xp.ignite.impl.config.IgniteSettings;

import static org.apache.ignite.IgniteSystemProperties.IGNITE_NO_ASCII;
import static org.apache.ignite.IgniteSystemProperties.IGNITE_NO_SHUTDOWN_HOOK;
import static org.apache.ignite.IgniteSystemProperties.IGNITE_PERFORMANCE_SUGGESTIONS_DISABLED;
import static org.apache.ignite.IgniteSystemProperties.IGNITE_TROUBLESHOOTING_LOGGER;
import static org.apache.ignite.IgniteSystemProperties.IGNITE_UPDATE_NOTIFIER;

@Component(immediate = true, configurationPid = "com.enonic.xp.ignite")
public class IgniteActivator
{
private Ignite ignite;

private ClusterConfig clusterConfig;

private ServiceRegistration<Ignite> igniteReg;

@SuppressWarnings("unused")
@Activate
public void activate( final BundleContext context, final IgniteSettings igniteSettings )
{
if ( clusterConfig.isEnabled() )
{
adjustLoggingVerbosity();

final IgniteConfiguration igniteConfig = ConfigurationFactory.create().
clusterConfig( clusterConfig ).
igniteConfig( igniteSettings ).
bundleContext( context ).
build().
execute();

System.setProperty( IGNITE_NO_SHUTDOWN_HOOK, "true" );

final Thread thread = Thread.currentThread();
final ClassLoader classLoader = thread.getContextClassLoader();
try
{
thread.setContextClassLoader( Ignite.class.getClassLoader() );
ignite = Ignition.start( igniteConfig );
}
finally
{
thread.setContextClassLoader( classLoader );
}
igniteReg = context.registerService( Ignite.class, ignite, new Hashtable<>() );
}
}

@SuppressWarnings("unused")
@Deactivate
public void deactivate()
{
if ( ignite != null )
{
igniteReg.unregister();
ignite.close();
}
}

@SuppressWarnings("unused")
@Reference
public void setClusterConfig( final ClusterConfig clusterConfig )
{
this.clusterConfig = clusterConfig;
}

private static void adjustLoggingVerbosity()
{
System.setProperty( IGNITE_NO_ASCII, "false" );
System.setProperty( IGNITE_PERFORMANCE_SUGGESTIONS_DISABLED, "true" );
System.setProperty( IGNITE_UPDATE_NOTIFIER, "false" );
System.setProperty( IGNITE_TROUBLESHOOTING_LOGGER, "false" );
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
import java.util.Hashtable;

import org.apache.ignite.Ignite;
import org.apache.ignite.Ignition;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;
import org.osgi.service.component.annotations.Activate;
Expand All @@ -15,73 +13,34 @@
import org.slf4j.LoggerFactory;

import com.enonic.xp.cluster.Cluster;
import com.enonic.xp.cluster.ClusterConfig;
import com.enonic.xp.cluster.ClusterHealth;
import com.enonic.xp.cluster.ClusterId;
import com.enonic.xp.cluster.ClusterNode;
import com.enonic.xp.cluster.ClusterNodes;
import com.enonic.xp.ignite.impl.config.ConfigurationFactory;
import com.enonic.xp.ignite.impl.config.IgniteSettings;

import static org.apache.ignite.IgniteSystemProperties.IGNITE_NO_ASCII;
import static org.apache.ignite.IgniteSystemProperties.IGNITE_NO_SHUTDOWN_HOOK;
import static org.apache.ignite.IgniteSystemProperties.IGNITE_PERFORMANCE_SUGGESTIONS_DISABLED;
import static org.apache.ignite.IgniteSystemProperties.IGNITE_TROUBLESHOOTING_LOGGER;
import static org.apache.ignite.IgniteSystemProperties.IGNITE_UPDATE_NOTIFIER;

@Component(immediate = true, configurationPid = "com.enonic.xp.ignite")
@Component(immediate = true)
public class IgniteCluster
implements Cluster
{
private static final Logger LOG = LoggerFactory.getLogger( IgniteCluster.class );

private Ignite ignite;

private ServiceRegistration<Ignite> igniteReg;

private ServiceRegistration<IgniteAdminClient> igniteAdminClientReg;

private ClusterConfig clusterConfig;
private Ignite ignite;

@SuppressWarnings("unused")
@Activate
public void activate( final BundleContext context, final IgniteSettings igniteSettings )
public void activate( final BundleContext context )
{
adjustLoggingVerbosity();

final IgniteConfiguration igniteConfig = ConfigurationFactory.create().
clusterConfig( clusterConfig ).
igniteConfig( igniteSettings ).
bundleContext( context ).
build().
execute();

System.setProperty( IGNITE_NO_SHUTDOWN_HOOK, "true" );

final Thread thread = Thread.currentThread();
final ClassLoader classLoader = thread.getContextClassLoader();
try
{
thread.setContextClassLoader( Ignite.class.getClassLoader() );
ignite = Ignition.start( igniteConfig );
}
finally
{
thread.setContextClassLoader( classLoader );
}
igniteReg = context.registerService( Ignite.class, ignite, new Hashtable<>() );
// Register admin-client to use in e.g reporting
igniteAdminClientReg =
context.registerService( IgniteAdminClient.class, new IgniteAdminClientImpl( this.ignite ), new Hashtable<>() );
igniteAdminClientReg = context.registerService( IgniteAdminClient.class, new IgniteAdminClientImpl( ignite ), new Hashtable<>() );
}

@SuppressWarnings("unused")
@Deactivate
public void deactivate()
{
igniteReg.unregister();
igniteAdminClientReg.unregister();
ignite.close();
}

@Override
Expand Down Expand Up @@ -126,13 +85,13 @@ private ClusterNodes doGetNodes()
@Override
public void enable()
{
// Ignore. Ignite Cluster should be always enabled
// Ignore. Ignite Cluster should be always enabled if Ignite exists
}

@Override
public void disable()
{
// Ignore. Ignite Cluster should be always enabled
// Ignore. Ignite Cluster should be always enabled if Ignite exists
}

@Override
Expand All @@ -143,16 +102,8 @@ public boolean isEnabled()

@SuppressWarnings("unused")
@Reference
public void setClusterConfig( final ClusterConfig clusterConfig )
{
this.clusterConfig = clusterConfig;
}

private static void adjustLoggingVerbosity()
public void setIgnite( final Ignite ignite )
{
System.setProperty( IGNITE_NO_ASCII, "false" );
System.setProperty( IGNITE_PERFORMANCE_SUGGESTIONS_DISABLED, "true" );
System.setProperty( IGNITE_UPDATE_NOTIFIER, "false" );
System.setProperty( IGNITE_TROUBLESHOOTING_LOGGER, "false" );
this.ignite = ignite;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,10 @@ public JaxRsComponent addingService( final ServiceReference<JaxRsComponent> refe
}

final JaxRsComponent component = this.context.getService( reference );
add( component );
if ( component != null )
{
add( component );
}
return component;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,13 @@
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.CopyOnWriteArrayList;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;

import org.osgi.framework.ServiceReference;

import com.google.common.collect.Lists;

import com.enonic.xp.web.dispatch.DispatchConstants;
import com.enonic.xp.web.impl.dispatch.mapping.ResourceDefinition;

Expand All @@ -32,8 +31,8 @@ public abstract class ResourcePipelineImpl<T extends ResourceDefinition<?>>
ResourcePipelineImpl()
{
this.map = new HashMap<>();
this.list = Lists.newCopyOnWriteArrayList();
this.resourceQueue = Lists.newCopyOnWriteArrayList();
this.list = new CopyOnWriteArrayList<>();
this.resourceQueue = new CopyOnWriteArrayList<>();
}

@Override
Expand Down
Loading

0 comments on commit e1fb8ad

Please sign in to comment.