[jboss-svn-commits] JBL Code SVN: r34137 - in labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid: drools-grid-distributed-api/src/main/java/org/drools/grid/distributed and 11 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Jul 23 09:25:23 EDT 2010
Author: salaboy21
Date: 2010-07-23 09:25:22 -0400 (Fri, 23 Jul 2010)
New Revision: 34137
Added:
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/resources/SLAKsessions.drl
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/SLAKsessions.drl
Removed:
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/resources/org/drools/SLAKsessions.drl
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/org/drools/SLAKsessions.drl
Modified:
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/ExecutionNodeService.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DirectoryLookupProviderGridClient.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DirectoryNodeServiceGridClient.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/RioDirectoryConnector.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/pom.xml
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DirectoryNodeServiceImpl.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DistributedConnectionDirectory.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/resources/org/drools/directoryNodeService.groovy
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/pom.xml
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/impl/ExecutionNodeServiceImpl.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/strategies/GetMinimalKsessionNodes.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/resources/org/drools/executionNodeService.groovy
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/java/org/drools/grid/distributed/ExecutionNodeBaseTest.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/java/org/drools/grid/distributed/ITGridExecutionTest.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/org/drools/executionNodeServiceTest.groovy
Log:
adding Rio Support for rules that scale execution Nodes
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/ExecutionNodeService.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/ExecutionNodeService.java 2010-07-23 13:04:41 UTC (rev 34136)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-api/src/main/java/org/drools/grid/ExecutionNodeService.java 2010-07-23 13:25:22 UTC (rev 34137)
@@ -14,8 +14,6 @@
*/
public interface ExecutionNodeService extends GenericNodeConnector{
public Message write(Message msg) throws ConnectorException, RemoteException;
- double getLoad() throws ConnectorException;
- void setLoad(double load) throws ConnectorException;
double getKsessionCounter() throws ConnectorException, RemoteException;
void incrementKsessionCounter() throws ConnectorException, RemoteException;
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DirectoryLookupProviderGridClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DirectoryLookupProviderGridClient.java 2010-07-23 13:04:41 UTC (rev 34136)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DirectoryLookupProviderGridClient.java 2010-07-23 13:25:22 UTC (rev 34137)
@@ -36,7 +36,7 @@
import org.drools.grid.internal.MessageSession;
import org.drools.grid.internal.commands.LookupCommand;
import org.drools.grid.internal.commands.RegisterCommand;
-import org.drools.grid.remote.GenericConnectorFactory;
+import org.drools.grid.GenericConnectorFactory;
/**
*
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DirectoryNodeServiceGridClient.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DirectoryNodeServiceGridClient.java 2010-07-23 13:04:41 UTC (rev 34136)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/DirectoryNodeServiceGridClient.java 2010-07-23 13:25:22 UTC (rev 34137)
@@ -36,7 +36,7 @@
* @author salaboy
*/
public class DirectoryNodeServiceGridClient implements DirectoryNodeService {
- private GenericNodeConnector client;
+ private RioDirectoryConnector client;
public DirectoryNodeServiceGridClient(GenericNodeConnector connector, GenericConnection connection) {
@@ -46,11 +46,13 @@
public void register(String executorId, String resourceId) throws ConnectorException, RemoteException {
- throw new UnsupportedOperationException("Not supported yet.");
+ System.out.println("xxxxxxxxxxxxxxxxxxxxRegistering in client!!!!!");
+ client.register(executorId, resourceId);
}
public void register(String executorId, GenericNodeConnector resourceConnector) throws ConnectorException, RemoteException {
- throw new UnsupportedOperationException("Not supported yet.");
+ System.out.println("xxxxxxxxxxxxxxxxxxxxRegistering in client222222222!!!!!");
+ client.register(executorId, resourceConnector);
}
public void unregister(String executorId) throws ConnectorException, RemoteException {
@@ -58,15 +60,15 @@
}
public GenericNodeConnector lookup(String resourceId) throws ConnectorException, RemoteException {
- throw new UnsupportedOperationException("Not supported yet.");
+ return client.lookup(resourceId);
}
public String lookupId(String resourceId) throws ConnectorException, RemoteException {
- throw new UnsupportedOperationException("Not supported yet.");
+ return client.lookupId(resourceId);
}
public void registerKBase(String kbaseId, String resourceId) throws ConnectorException, RemoteException {
- throw new UnsupportedOperationException("Not supported yet.");
+ client.registerKBase(kbaseId, resourceId);
}
public void registerKBase(String kbaseId, KnowledgeBase kbase) throws ConnectorException, RemoteException {
@@ -78,15 +80,15 @@
}
public KnowledgeBase lookupKBase(String kbaseId) throws ConnectorException, RemoteException {
- throw new UnsupportedOperationException("Not supported yet.");
+ return client.lookupKBase(kbaseId);
}
public Map<String, String> getExecutorsMap() throws ConnectorException, RemoteException {
- throw new UnsupportedOperationException("Not supported yet.");
+ return client.getExecutorsMap();
}
public Map<String, String> getKBasesMap() throws ConnectorException, RemoteException {
- throw new UnsupportedOperationException("Not supported yet.");
+ return client.getKBasesMap();
}
public void dispose() throws ConnectorException, RemoteException {
@@ -114,11 +116,11 @@
}
public NodeConnectionType getNodeConnectionType() throws ConnectorException, RemoteException {
- throw new UnsupportedOperationException("Not supported yet.");
+ return client.getNodeConnectionType();
}
public ConnectorType getConnectorType() {
- throw new UnsupportedOperationException("Not supported yet.");
+ return client.getConnectorType();
}
public int getSessionId() {
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/RioDirectoryConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/RioDirectoryConnector.java 2010-07-23 13:04:41 UTC (rev 34136)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-api/src/main/java/org/drools/grid/distributed/RioDirectoryConnector.java 2010-07-23 13:25:22 UTC (rev 34137)
@@ -2,7 +2,9 @@
import java.net.SocketAddress;
import java.rmi.RemoteException;
+import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
+import org.drools.KnowledgeBase;
import org.drools.SystemEventListener;
import org.drools.grid.ConnectorException;
@@ -16,7 +18,7 @@
import org.drools.grid.GridConnection;
public class RioDirectoryConnector
- implements GenericNodeConnector {
+ implements GenericNodeConnector, DirectoryNodeService {
protected final String name;
protected AtomicInteger counter;
@@ -107,4 +109,52 @@
public AtomicInteger getCounter() {
throw new UnsupportedOperationException("Not supported yet.");
}
+
+ public void register(String executorId, String resourceId) throws ConnectorException, RemoteException {
+ this.directoryNode.register(executorId, resourceId);
+ }
+
+ public void register(String executorId, GenericNodeConnector resourceConnector) throws ConnectorException, RemoteException {
+ this.directoryNode.register(executorId, resourceConnector);
+ }
+
+ public void unregister(String executorId) throws ConnectorException, RemoteException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public GenericNodeConnector lookup(String resourceId) throws ConnectorException, RemoteException {
+ return this.directoryNode.lookup(resourceId);
+ }
+
+ public String lookupId(String resourceId) throws ConnectorException, RemoteException {
+ return this.directoryNode.lookupId(resourceId);
+ }
+
+ public void registerKBase(String kbaseId, String resourceId) throws ConnectorException, RemoteException {
+ this.directoryNode.registerKBase(kbaseId, resourceId);
+ }
+
+ public void registerKBase(String kbaseId, KnowledgeBase kbase) throws ConnectorException, RemoteException {
+ this.directoryNode.registerKBase(kbaseId, kbase);
+ }
+
+ public void unregisterKBase(String kbaseId) throws ConnectorException, RemoteException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public KnowledgeBase lookupKBase(String kbaseId) throws ConnectorException, RemoteException {
+ return this.directoryNode.lookupKBase(kbaseId);
+ }
+
+ public Map<String, String> getExecutorsMap() throws ConnectorException, RemoteException {
+ return this.directoryNode.getExecutorsMap();
+ }
+
+ public Map<String, String> getKBasesMap() throws ConnectorException, RemoteException {
+ return this.directoryNode.getKBasesMap();
+ }
+
+ public void dispose() throws ConnectorException, RemoteException {
+ this.directoryNode.dispose();
+ }
}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/pom.xml
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/pom.xml 2010-07-23 13:04:41 UTC (rev 34136)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/pom.xml 2010-07-23 13:25:22 UTC (rev 34137)
@@ -13,8 +13,28 @@
<packaging>oar</packaging>
<dependencies>
+
+ <!-- Drools Runtime -->
<dependency>
<groupId>org.drools</groupId>
+ <artifactId>drools-api</artifactId>
+
+ </dependency>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-core</artifactId>
+
+ </dependency>
+
+ <dependency>
+ <groupId>org.drools</groupId>
+ <artifactId>drools-compiler</artifactId>
+
+ </dependency>
+
+ <dependency>
+ <groupId>org.drools</groupId>
<artifactId>drools-grid-api</artifactId>
<version>5.1.0.SNAPSHOT</version>
</dependency>
@@ -55,11 +75,13 @@
<version>4.8.1</version>
<scope>test</scope>
</dependency>
-
-
-
+ <dependency>
+ <groupId>net.jini</groupId>
+ <artifactId>jsk-lib</artifactId>
+ <version>2.1</version>
+ <type>jar</type>
+ </dependency>
</dependencies>
-
<build>
<plugins>
<plugin>
@@ -75,7 +97,7 @@
<!--in>org.rioproject.gnostic</in-->
</ins>
<topclasses>
- <!--topclass>org.drools.grid.ExecutionNodeService</topclass-->
+ <topclass>org.drools.grid.ExecutionNodeService</topclass>
<topclass>org.drools.grid.DirectoryNodeService</topclass>
<topclass>org.drools.grid.distributed.RioNodeConnector</topclass>
<topclass>org.drools.grid.distributed.util.IDEntry</topclass>
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DirectoryNodeServiceImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DirectoryNodeServiceImpl.java 2010-07-23 13:04:41 UTC (rev 34136)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DirectoryNodeServiceImpl.java 2010-07-23 13:25:22 UTC (rev 34137)
@@ -2,7 +2,6 @@
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
-
package org.drools.distributed.directory.impl;
import java.rmi.RemoteException;
@@ -25,19 +24,15 @@
import org.drools.grid.GenericNodeConnector;
import org.drools.grid.internal.MessageResponseHandler;
-
/**
*
* @author salaboy
*/
-public class DirectoryNodeServiceImpl implements DirectoryNodeService{
+public class DirectoryNodeServiceImpl implements DirectoryNodeService {
private String id;
-
private Map<String, String> directoryMap = new HashMap<String, String>();
-
private Map<String, String> kbaseDirectoryMap = new HashMap<String, String>();
-
private Iterable<ExecutionNodeService> executionNodes;
public DirectoryNodeServiceImpl() {
@@ -45,85 +40,79 @@
this.id = "Distributed:Directory";
}
-
@Override
public String getId() {
return id;
}
-
-
+
@Override
- public void register(String sessionId, String nodeServiceId) throws ConnectorException, RemoteException {
- //System.out.println("Registering: "+ sessionId + " -- "+nodeServiceId);
+ public void register(String sessionId, String nodeServiceId) throws ConnectorException, RemoteException {
+
directoryMap.put(sessionId, nodeServiceId);
- for(ExecutionNodeService node : executionNodes){
- if(node.getId().equals(nodeServiceId)){
+
+ for (ExecutionNodeService node : executionNodes) {
+
+ if (node.getId().equals(nodeServiceId)) {
+
node.incrementKsessionCounter();
}
}
}
-
@Override
public GenericNodeConnector lookup(String sessionId) throws ConnectorException, RemoteException {
ExecutionNodeService nodeService = null;
- String sessionServiceId = (String)directoryMap.get(sessionId);
- //System.out.println("Registry = "+ directoryMap.toString());
- //System.out.println("Nodes Services = "+nodeServices);
- for(ExecutionNodeService ss : executionNodes){
- //System.out.println("Session Service id = "+ss.getId() + "needs to match with ="+sessionServiceId);
- if(ss.getId().equals(sessionServiceId)){
+ String sessionServiceId = (String) directoryMap.get(sessionId);
+
+ for (ExecutionNodeService ss : executionNodes) {
+
+ if (ss.getId().equals(sessionServiceId)) {
nodeService = ss;
}
- }
+ }
return nodeService;
}
-
public void setExecutionNodes(Iterable<ExecutionNodeService> executionNodes) {
this.executionNodes = executionNodes;
}
@Override
public void registerKBase(String kbaseId, String nodeServiceId) throws ConnectorException {
- //System.out.println("Registering KnowledgeBase = "+kbaseId +" -in NS=" +nodeServiceId);
+
kbaseDirectoryMap.put(kbaseId, nodeServiceId);
}
@Override
- public KnowledgeBase lookupKBase(String kbaseId) throws ConnectorException, RemoteException{
+ public KnowledgeBase lookupKBase(String kbaseId) throws ConnectorException, RemoteException {
ExecutionNodeService executionNode = null;
- String execNodeId = (String)kbaseDirectoryMap.get(kbaseId);
- //System.out.println("Kbase Registry = "+ kbaseDirectoryMap.toString());
- //System.out.println("Session Services = "+nodeService);
- for(ExecutionNodeService ns : executionNodes){
- //System.out.println("Node Service id = "+ns.getId() + "needs to match with ="+nodeServiceId);
- if(ns.getId().equals(execNodeId)){
+ String execNodeId = (String) kbaseDirectoryMap.get(kbaseId);
+
+ for (ExecutionNodeService ns : executionNodes) {
+
+ if (ns.getId().equals(execNodeId)) {
executionNode = ns;
}
}
- //System.out.println("Node Service = "+nodeService);
-
+
+
try {
//@TODO: This is a bad hack.. I need to improve this a lot
- Message msg = executionNode.write(new Message(999,1000,false, new KnowledgeContextResolveFromContextCommand( new GetKnowledgeBaseCommand(), null, kbaseId, null, null)));
- //System.out.println("MSG returned by nodeService = "+msg);
+ Message msg = executionNode.write(new Message(999, 1000, false, new KnowledgeContextResolveFromContextCommand(new GetKnowledgeBaseCommand(), null, kbaseId, null, null)));
+
if (msg.getPayload() instanceof KnowledgeBase) {
- //System.out.println("Kbase in the payload: "+(KnowledgeBase)msg.getPayload());
- return (KnowledgeBase)msg.getPayload();
+ return (KnowledgeBase) msg.getPayload();
}
return null;
- } catch ( Exception e ) {
- throw new RuntimeException( "Unable to execute message",
- e );
+ } catch (Exception e) {
+ throw new RuntimeException("Unable to execute message",
+ e);
}
}
-
-
@Override
- public Map<String, String> getExecutorsMap() throws ConnectorException{
+ public Map<String, String> getExecutorsMap() throws ConnectorException {
return directoryMap;
}
@@ -152,8 +141,6 @@
// do nothing, we don't need disconnect in distributed environments
}
-
-
@Override
public GenericConnection getConnection() {
throw new UnsupportedOperationException("Not supported yet.");
@@ -200,14 +187,12 @@
}
@Override
- public AtomicInteger getCounter() {
+ public void write(Message msg, MessageResponseHandler responseHandler) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
- public void write(Message msg, MessageResponseHandler responseHandler) {
+ public AtomicInteger getCounter() {
throw new UnsupportedOperationException("Not supported yet.");
}
-
-
}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DistributedConnectionDirectory.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DistributedConnectionDirectory.java 2010-07-23 13:04:41 UTC (rev 34136)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DistributedConnectionDirectory.java 2010-07-23 13:25:22 UTC (rev 34137)
@@ -17,9 +17,13 @@
package org.drools.distributed.directory.impl;
import java.io.Serializable;
+import java.rmi.RemoteException;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.drools.grid.ConnectorException;
import org.drools.grid.ConnectorType;
import org.drools.grid.DirectoryNodeService;
import org.drools.grid.GenericConnection;
@@ -51,7 +55,14 @@
public void init() {
- services.put(DirectoryNodeService.class, new DirectoryNodeServiceGridClient(connector, connection) );
+ try {
+ System.out.println("???????????????>>>>>>>>>>>>Initializing DirectoryNodeService Grid!!!!" + connector.getId());
+ services.put(DirectoryNodeService.class, new DirectoryNodeServiceGridClient(connector, connection));
+ } catch (ConnectorException ex) {
+ Logger.getLogger(DistributedConnectionDirectory.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (RemoteException ex) {
+ Logger.getLogger(DistributedConnectionDirectory.class.getName()).log(Level.SEVERE, null, ex);
+ }
}
public Set<Class<?>> getServicesKeys() {
@@ -63,11 +74,11 @@
}
public void setConnector(GenericNodeConnector connector) {
- //not needed
+ this.connector = connector;
}
public void setConnection(GenericConnection connection) {
- //not needed
+ this.connection = connection;
}
public ConnectorType getConnectorType() {
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/resources/org/drools/directoryNodeService.groovy
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/resources/org/drools/directoryNodeService.groovy 2010-07-23 13:04:41 UTC (rev 34136)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/resources/org/drools/directoryNodeService.groovy 2010-07-23 13:25:22 UTC (rev 34137)
@@ -17,6 +17,8 @@
/* Declares the artifacts required for deployment. Note the 'dl'
* classifier used for the 'download' jar */
+ artifact id:'service-dir', 'org.drools:drools-grid-distributed-dir-rio:5.1.0.SNAPSHOT'
+ artifact id:'service-dir-dl', 'org.drools:drools-grid-distributed-dir-rio:dl:5.1.0.SNAPSHOT'
artifact id:'service', 'org.drools:drools-grid-distributed-rio:5.1.0.SNAPSHOT'
artifact id:'service-dl', 'org.drools:drools-grid-distributed-rio:dl:5.1.0.SNAPSHOT'
@@ -28,10 +30,10 @@
service(name: 'DirectoryNodeService') {
interfaces {
classes 'org.drools.grid.DirectoryNodeService'
- artifact ref:'service-dl'
+ artifact ref:'service-dir-dl'
}
implementation(class:'org.drools.grid.distributed.impl.DirectoryNodeServiceImpl') {
- artifact ref:'service'
+ artifact ref:'service-dir'
}
association (name:'ExecutionNodeService', type:'uses', property:'executionNodes')
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/pom.xml
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/pom.xml 2010-07-23 13:04:41 UTC (rev 34136)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/pom.xml 2010-07-23 13:25:22 UTC (rev 34137)
@@ -105,7 +105,7 @@
</ins>
<topclasses>
<topclass>org.drools.grid.ExecutionNodeService</topclass>
- <topclass>org.drools.grid.generic.DirectoryNodeService</topclass>
+ <topclass>org.drools.grid.DirectoryNodeService</topclass>
<topclass>org.drools.grid.distributed.RioNodeConnector</topclass>
<topclass>org.drools.grid.distributed.util.IDEntry</topclass>
<topclass>org.drools.grid.distributed.command.NewStatefulKnowledgeSessionGridCommand</topclass>
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/impl/ExecutionNodeServiceImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/impl/ExecutionNodeServiceImpl.java 2010-07-23 13:04:41 UTC (rev 34136)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/impl/ExecutionNodeServiceImpl.java 2010-07-23 13:25:22 UTC (rev 34137)
@@ -19,6 +19,8 @@
import java.rmi.RemoteException;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicInteger;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import org.drools.SystemEventListener;
import org.drools.SystemEventListenerFactory;
@@ -36,43 +38,39 @@
import org.drools.grid.GridConnection;
import org.drools.grid.distributed.DistributedConnectionNode;
import org.drools.grid.distributed.util.IDEntry;
-
import org.rioproject.core.jsb.ServiceBeanContext;
import org.rioproject.watch.CounterWatch;
-import org.rioproject.watch.GaugeWatch;
/**
*
* @author salaboy
*/
-public class ExecutionNodeServiceImpl implements ExecutionNodeService {
+ public class ExecutionNodeServiceImpl implements ExecutionNodeService {
private GenericMessageHandler handler;
private String id;
- private GaugeWatch loadWatch;
- private CounterWatch ksessionCounter;
+
+ private CounterWatch ksessionCounter;
private Long instanceID;
public ExecutionNodeServiceImpl() {
- this.id = "Distributed:Node:"+UUID.randomUUID().toString();
+ this.id = "Distributed:Node:" + UUID.randomUUID().toString();
handler = new GenericMessageGridHandlerImpl(new NodeData(), SystemEventListenerFactory.getSystemEventListener());
}
public ExecutionNodeServiceImpl(NodeData data,
SystemEventListener systemEventListener) {
- handler = new GenericMessageGridHandlerImpl(data, systemEventListener);
+ handler = new GenericMessageGridHandlerImpl(data, systemEventListener);
}
@Override
- public Message write(Message msg) {
+ public Message write(Message msg) throws ConnectorException, RemoteException {
BlockingGenericIoWriter blockingWriter = new BlockingGenericIoWriter();
try {
handler.messageReceived(blockingWriter, msg);
- } catch (Exception e) {
-
- //throw new RemoteException(e.getMessage());
+ } catch (Exception ex) {
+ Logger.getLogger(ExecutionNodeServiceImpl.class.getName()).log(Level.SEVERE, null, ex);
}
-
return blockingWriter.getMessage();
}
@@ -88,12 +86,9 @@
public void setServiceBeanContext(ServiceBeanContext context) {
context.addAttribute(new IDEntry(this.id));
- loadWatch = new GaugeWatch("load");
ksessionCounter = new CounterWatch("ksessionCounter");
- context.getWatchRegistry().register(loadWatch);
context.getWatchRegistry().register(ksessionCounter);
- instanceID = context.getServiceBeanConfig().getInstanceID();
-
+ this.instanceID = context.getServiceBeanConfig().getInstanceID();
}
@Override
@@ -107,48 +102,16 @@
-
@Override
- public double getLoad() {
- return loadWatch.getLastCalculableValue();
- }
-
-
- @Override
- public void setLoad(double load) {
- double last = loadWatch.getLastCalculableValue();
- loadWatch.addValue(load);
- boolean verified = loadWatch.getLastCalculableValue() == load;
- if (!verified)
- System.err.println(System.currentTimeMillis() + " "+
- "---> ["+instanceID+"] was [" + loadWatch.getLastCalculableValue() +
- "], SET FAILED [" + load + "] " +
- "breached=" +
- loadWatch.getThresholdManager().getThresholdCrossed());
- else
- System.err.println(System.currentTimeMillis() + " "+
- "---> ["+instanceID+"] Load now [" + load + "] " +
- "breached=" +
- loadWatch.getThresholdManager().getThresholdCrossed());
- }
-
-
- @Override
- public double getKsessionCounter() {
+ public double getKsessionCounter() throws ConnectorException, RemoteException {
return ksessionCounter.getLastCalculableValue();
}
-
@Override
- public void incrementKsessionCounter() {
+ public void incrementKsessionCounter() throws ConnectorException, RemoteException {
double last = ksessionCounter.getLastCalculableValue();
ksessionCounter.increment();
- System.err.println(System.currentTimeMillis() + " "+
- "---> ["+instanceID+"] was [" + ksessionCounter.getLastCalculableValue() +
- "], " +
- "breached=" +
- ksessionCounter.getThresholdManager().getThresholdCrossed());
}
@@ -159,16 +122,16 @@
@Override
public void disconnect() throws ConnectorException {
- // do nothing
+ // do nothing
}
@Override
- public GenericConnection getConnection() {
+ public GenericConnection getConnection() {
return new GridConnection();
}
@Override
- public NodeConnectionType getNodeConnectionType() throws ConnectorException {
+ public NodeConnectionType getNodeConnectionType() throws ConnectorException {
return new DistributedConnectionNode();
}
@@ -186,8 +149,4 @@
public AtomicInteger getCounter() {
throw new UnsupportedOperationException("Not supported yet.");
}
-
-
-
-
}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/strategies/GetMinimalKsessionNodes.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/strategies/GetMinimalKsessionNodes.java 2010-07-23 13:04:41 UTC (rev 34136)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/strategies/GetMinimalKsessionNodes.java 2010-07-23 13:25:22 UTC (rev 34137)
@@ -40,7 +40,11 @@
for (GenericNodeConnector nodeConnector : connectors) {
try {
Double currentCounter = null;
- currentCounter = ((ExecutionNodeService) nodeConnector).getKsessionCounter();
+ try {
+ currentCounter = ((ExecutionNodeService) nodeConnector).getKsessionCounter();
+ } catch (RemoteException ex) {
+ Logger.getLogger(GetMinimalKsessionNodes.class.getName()).log(Level.SEVERE, null, ex);
+ }
if (min == null) {
min = currentCounter;
selectedConnector = nodeConnector;
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/resources/SLAKsessions.drl
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/resources/SLAKsessions.drl (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/resources/SLAKsessions.drl 2010-07-23 13:25:22 UTC (rev 34137)
@@ -0,0 +1,28 @@
+package org.rioproject.gnostic;
+
+
+import org.rioproject.watch.Calculable;
+
+
+global org.rioproject.gnostic.DeployedServiceContext context;
+
+
+declare Calculable
+ @role(event)
+ @timestamp(when)
+end
+
+
+
+rule "1 ksession == scale"
+when
+ Calculable(id == "ksessionCounter", value >= 1 ) from entry-point "calculables-stream"
+then
+ int serviceCount = context.getServiceCount("ExecutionNodeService", "executionNodeService");
+ if(serviceCount < 5) {
+
+ context.increment("ExecutionNodeService", "executionNodeService");
+ } else {
+ System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Have "+serviceCount+" ExecutionNodeServices");
+ }
+end
\ No newline at end of file
Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/resources/org/drools/SLAKsessions.drl
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/resources/org/drools/SLAKsessions.drl 2010-07-23 13:04:41 UTC (rev 34136)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/resources/org/drools/SLAKsessions.drl 2010-07-23 13:25:22 UTC (rev 34137)
@@ -1,40 +0,0 @@
-package org.rioproject.gnostic;
-
-import org.rioproject.system.measurable.cpu.CalculableCPU;
-import org.rioproject.system.measurable.memory.CalculableMemory;
-import org.rioproject.gnostic.test.TestService;
-import org.rioproject.gnostic.test.TestService.Status;
-
-global org.rioproject.gnostic.DeployedServiceContext context;
-
-
-declare Calculable
- @role(event)
- @timestamp(when)
-end
-
-declare CalculableCPU
- @role(event)
- @timestamp(when)
-end
-
-declare CalculableMemory
- @role(event)
- @timestamp(when)
-end
-
-
-rule "1 ksession == scale"
-when
- // $cpu : Number(doubleValue > 0.02)
- // from accumulate(CalculableCPU($value : value) over window:time(1m)
- // from entry-point "calculables-stream", average($value))
- // $mem : Number(doubleValue > 0.1)
- // from accumulate(CalculableMemory($value : value) over window:time(1m)
- // from entry-point "calculables-stream", average($value))
- Calculable(id == "ksessionCounter", value == 1 ) from entry-point "calculables-stream"
-then
- System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Scaling!!");
- // context.increment("ExecutionNodeService", "executionNodeService");
-
-end
\ No newline at end of file
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/resources/org/drools/executionNodeService.groovy
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/resources/org/drools/executionNodeService.groovy 2010-07-23 13:04:41 UTC (rev 34136)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/resources/org/drools/executionNodeService.groovy 2010-07-23 13:25:22 UTC (rev 34137)
@@ -6,10 +6,12 @@
deployment(name:'executionNodeService', debug: 'true') {
- logging {
- logger 'org.rioproject.resolver', Level.ALL
- logger 'org.rioproject.associsations' , Level.ALL
- }
+ //logging {
+ // logger 'org.rioproject.resolver', Level.FINEST
+ // logger 'org.rioproject.associations' , Level.FINEST
+ // logger 'org.rioproject.gnostic', Level.FINEST
+
+ //}
/* Configuration for the discovery group that the service should join.
* This first checks if the org.rioproject.groups property is set, if not
* the user name is used */
@@ -34,10 +36,6 @@
artifact ref:'service'
}
-
-
-
-
maintain 2
}
@@ -47,7 +45,8 @@
resource 'SLAKsessions'
ruleClassPath 'org.drools:drools-grid-distributed-rio:5.1.0.SNAPSHOT'
serviceFeed(name: "ExecutionNodeService") {
- watches "ksessionCounter, ${SystemWatchID.SYSTEM_CPU}, ${SystemWatchID.JVM_MEMORY}"
+ watches "ksessionCounter"
+ //, ${SystemWatchID.SYSTEM_CPU}, ${SystemWatchID.JVM_MEMORY}"
}
}
}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/java/org/drools/grid/distributed/ExecutionNodeBaseTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/java/org/drools/grid/distributed/ExecutionNodeBaseTest.java 2010-07-23 13:04:41 UTC (rev 34136)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/java/org/drools/grid/distributed/ExecutionNodeBaseTest.java 2010-07-23 13:25:22 UTC (rev 34137)
@@ -227,6 +227,12 @@
System.out.println("registering a session!!!!!!!");
node.get(DirectoryLookupFactoryService.class).register( "ksession1",
ksession );
+ node.get(DirectoryLookupFactoryService.class).register( "ksession2",
+ ksession );
+ node.get(DirectoryLookupFactoryService.class).register( "ksession3",
+ ksession );
+ node.get(DirectoryLookupFactoryService.class).register( "ksession4",
+ ksession );
System.out.println("Lookup ksession1!!!!!!!!!!!!!");
ExecutionResults results = node.get(DirectoryLookupFactoryService.class).lookup( "ksession1" ).execute( new FireAllRulesCommand( "fired" ) );
@@ -235,7 +241,7 @@
System.out.println("TEst ENDED =========>");
}
@Test
- public void twoSessionsIntoDifferentSessionServices() throws RemoteException, ConnectorException{
+ public void twoSessionsIntoDifferentSessionServices() throws RemoteException, ConnectorException, InterruptedException{
StaticIncrementalNodeSelectionStrategy.counter = 0;
String str = "";
str += "package org.drools \n";
@@ -311,6 +317,11 @@
}
+ @Test
+ public void justwait() throws RemoteException, ConnectorException, InterruptedException{
+ Thread.sleep(10000);
+ }
+
// @Test
// public void scalingUp(){
// for(int i=1; i<5; i++) {
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/java/org/drools/grid/distributed/ITGridExecutionTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/java/org/drools/grid/distributed/ITGridExecutionTest.java 2010-07-23 13:04:41 UTC (rev 34136)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/java/org/drools/grid/distributed/ITGridExecutionTest.java 2010-07-23 13:25:22 UTC (rev 34137)
@@ -1,5 +1,7 @@
package org.drools.grid.distributed;
+import java.rmi.RemoteException;
+import java.util.List;
import org.drools.grid.ConnectorException;
import org.drools.grid.ExecutionNodeService;
import org.drools.grid.AcceptorService;
@@ -11,9 +13,10 @@
-
import org.junit.Before;
import org.junit.runner.RunWith;
+import org.rioproject.gnostic.Gnostic;
+import org.rioproject.sla.RuleMap;
import org.rioproject.test.RioTestRunner;
import org.rioproject.test.SetTestManager;
import org.rioproject.test.TestManager;
@@ -34,8 +37,10 @@
//
DirectoryNodeService directoryService = (DirectoryNodeService) testManager.waitForService(DirectoryNodeService.class);
Assert.assertNotNull(directoryService);
-// Gnostic service = (Gnostic)testManager.waitForService(Gnostic.class);
+ Gnostic gnostic = (Gnostic)testManager.waitForService(Gnostic.class);
//
+ waitForRule(gnostic, "SLAKsessions");
+
connection.addDirectoryNode(directoryService);
ExecutionNodeService executionNode = (ExecutionNodeService) testManager.waitForService(ExecutionNodeService.class);
@@ -58,4 +63,39 @@
public void tearDown() throws ConnectorException {
connection.dispose();
}
+
+ private void waitForRule(Gnostic g, String rule) {
+ Throwable thrown = null;
+ long t0 = System.currentTimeMillis();
+ try {
+ while (!hasRule(g.get(), rule)) {
+ sleep(500);
+ }
+ } catch (RemoteException e) {
+ e.printStackTrace();
+ thrown = e;
+ }
+ Assert.assertNull(thrown);
+ System.out.println("Rule loaded in " + (System.currentTimeMillis() - t0) + " millis");
+ }
+
+ private boolean hasRule(List<RuleMap> ruleMaps, String rule) {
+ boolean hasRule = false;
+ for (RuleMap ruleMap : ruleMaps) {
+ System.out.println("===> rule: " + ruleMap.getRuleDefinition().getResource());
+ if (ruleMap.getRuleDefinition().getResource().indexOf(rule) != -1) {
+ hasRule = true;
+ break;
+ }
+ }
+ return hasRule;
+ }
+ public static void sleep(long l) {
+ try {
+ Thread.sleep(l);
+ } catch (InterruptedException e) {
+
+ }
+ }
+
}
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/SLAKsessions.drl
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/SLAKsessions.drl (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/SLAKsessions.drl 2010-07-23 13:25:22 UTC (rev 34137)
@@ -0,0 +1,28 @@
+package org.rioproject.gnostic;
+
+
+import org.rioproject.watch.Calculable;
+
+
+global org.rioproject.gnostic.DeployedServiceContext context;
+
+
+declare Calculable
+ @role(event)
+ @timestamp(when)
+end
+
+
+
+rule "1 ksession == scale"
+when
+ Calculable(id == "ksessionCounter", value >= 1 ) from entry-point "calculables-stream"
+then
+ int serviceCount = context.getServiceCount("ExecutionNodeService", "executionNodeService");
+ if(serviceCount < 5) {
+
+ context.increment("ExecutionNodeService", "executionNodeService");
+ } else {
+ System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Have "+serviceCount+" ExecutionNodeServices");
+ }
+end
\ No newline at end of file
Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/org/drools/SLAKsessions.drl
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/org/drools/SLAKsessions.drl 2010-07-23 13:04:41 UTC (rev 34136)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/org/drools/SLAKsessions.drl 2010-07-23 13:25:22 UTC (rev 34137)
@@ -1,40 +0,0 @@
-package org.rioproject.gnostic;
-
-import org.rioproject.system.measurable.cpu.CalculableCPU;
-import org.rioproject.system.measurable.memory.CalculableMemory;
-import org.rioproject.gnostic.test.TestService;
-import org.rioproject.gnostic.test.TestService.Status;
-
-global org.rioproject.gnostic.DeployedServiceContext context;
-
-
-declare Calculable
- @role(event)
- @timestamp(when)
-end
-
-declare CalculableCPU
- @role(event)
- @timestamp(when)
-end
-
-declare CalculableMemory
- @role(event)
- @timestamp(when)
-end
-
-
-rule "1 ksession == scale"
-when
- // $cpu : Number(doubleValue > 0.02)
- // from accumulate(CalculableCPU($value : value) over window:time(1m)
- // from entry-point "calculables-stream", average($value))
- // $mem : Number(doubleValue > 0.1)
- // from accumulate(CalculableMemory($value : value) over window:time(1m)
- // from entry-point "calculables-stream", average($value))
- Calculable(id == "ksessionCounter", value == 1 ) from entry-point "calculables-stream"
-then
- System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Scaling!!");
- // context.increment("ExecutionNodeService", "executionNodeService");
-
-end
\ No newline at end of file
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/org/drools/executionNodeServiceTest.groovy
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/org/drools/executionNodeServiceTest.groovy 2010-07-23 13:04:41 UTC (rev 34136)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/test/resources/org/drools/executionNodeServiceTest.groovy 2010-07-23 13:25:22 UTC (rev 34137)
@@ -6,10 +6,11 @@
deployment(name:'executionNodeService', debug: 'true') {
- logging {
- logger 'org.rioproject.resolver', Level.ALL
- logger 'org.rioproject.associsations' , Level.ALL
- }
+ //logging {
+ //logger 'org.rioproject.resolver', Level.FINEST
+ //logger 'org.rioproject.associations' , Level.FINEST
+ //logger 'org.rioproject.gnostic', Level.FINEST
+ //}
/* Configuration for the discovery group that the service should join.
* This first checks if the org.rioproject.groups property is set, if not
* the user name is used */
@@ -36,10 +37,6 @@
artifact ref:'service'
}
-
-
-
-
maintain 2
}
service(name: 'DirectoryNodeService') {
@@ -61,7 +58,8 @@
resource 'SLAKsessions'
ruleClassPath 'org.drools:drools-grid-distributed-rio:5.1.0.SNAPSHOT'
serviceFeed(name: "ExecutionNodeService") {
- watches "ksessionCounter, ${SystemWatchID.SYSTEM_CPU}, ${SystemWatchID.JVM_MEMORY}"
+ watches "ksessionCounter"
+ //, ${SystemWatchID.SYSTEM_CPU}, ${SystemWatchID.JVM_MEMORY}"
}
}
}
More information about the jboss-svn-commits
mailing list