Changeset 110


Ignore:
Timestamp:
10/22/13 15:15:51 (11 years ago)
Author:
stoda
Message:

Supervisor seems to work

Location:
branches/supervisor
Files:
2 added
1 deleted
4 edited
1 moved

Legend:

Unmodified
Added
Removed
  • branches/supervisor/src/main/java/omq/client/proxy/Proxymq.java

    r107 r110  
    380380
    381381        @Override
    382         public void setUID(String uID) {
     382        public void setUID(String uID) {System.out.println("SET UID");
    383383                this.UID = uID;
    384384        }
  • branches/supervisor/src/main/java/omq/common/broker/RemoteBrokerImpl.java

    r107 r110  
    2828        @Override
    2929        public void spawnObject(String reference, String className, Properties env) throws Exception {
     30                System.out.println("SPAWN broker = " + this.getUID());
    3031                RemoteObject remote = (RemoteObject) Class.forName(className).newInstance();
    3132                getBroker().bind(reference, remote, env);
     
    3435        @Override
    3536        public void spawnObject(String reference, String className) throws Exception {
     37                System.out.println("SPAWN broker = " + this.getUID());
    3638                RemoteObject remote = (RemoteObject) Class.forName(className).newInstance();
    3739                getBroker().bind(reference, remote);
     
    5052        @Override
    5153        public HasObject hasObjectInfo(String reference) throws RetryException {
    52                 System.out.println("Hola soc un broker"+ getRef() + ", "+getUID()+ ", fil: "+Thread.currentThread().getId());
     54                System.out.println("Hola soc un broker" + getRef() + ", " + getUID() + ", fil: " + Thread.currentThread().getId());
    5355                if (getBroker().getRemoteObjs().containsKey(reference)) {
    5456                        RemoteObject r = getBroker().getRemoteObjs().get(reference);
  • branches/supervisor/src/main/java/omq/supervisor/RemoteBroker.java

    r107 r110  
    1 package omq.common.broker;
     1package omq.supervisor;
     2
     3import java.io.IOException;
     4import java.util.Properties;
    25
    36import omq.Remote;
     7import omq.client.annotation.AsyncMethod;
    48import omq.client.annotation.MultiMethod;
    59import omq.client.annotation.SyncMethod;
     10import omq.common.broker.HasObject;
     11import omq.exception.RemoteException;
    612import omq.exception.RetryException;
    713
    8 public interface RemoteMultiBroker extends Remote {
     14public interface RemoteBroker extends Remote {
     15
     16        @AsyncMethod
     17        public void spawnObject(String reference, String className, Properties env) throws Exception;
     18
     19        @AsyncMethod
     20        public void spawnObject(String reference, String className) throws Exception;
     21
     22        @AsyncMethod
     23        public void deleteObject(String reference) throws RemoteException, IOException;
    924
    1025        @MultiMethod
  • branches/supervisor/src/main/java/omq/supervisor/SupervisorImpl.java

    r107 r110  
    11package omq.supervisor;
    22
    3 import java.lang.reflect.Proxy;
    43import java.util.HashMap;
     4import java.util.HashSet;
    55import java.util.Map;
    66import java.util.Set;
    77
    8 import omq.client.proxy.Proxymq;
    98import omq.common.broker.HasObject;
    10 import omq.common.broker.RemoteBroker;
    11 import omq.common.broker.RemoteMultiBroker;
    129import omq.exception.RemoteException;
    1310import omq.server.RemoteObject;
     
    2926        private long sleep;
    3027        private Map<String, OmqSettings> objectSettings;
    31         private RemoteMultiBroker multiBroker;
    32         private Map<String, RemoteBroker> brokerMap;
     28        private RemoteBroker broker;
     29        private Set<String> brokers;
    3330
    3431        public SupervisorImpl(String brokerSet, long sleep) {
    3532                this.brokerSet = brokerSet;
    3633                this.sleep = sleep;
    37                 brokerMap = new HashMap<String, RemoteBroker>();
     34                brokers = new HashSet<String>();
    3835                objectSettings = new HashMap<String, OmqSettings>();
    3936        }
     
    4239        public void run() {
    4340                try {
    44                         multiBroker = getBroker().lookup(brokerSet, RemoteMultiBroker.class);
     41                        broker = getBroker().lookup(brokerSet, RemoteBroker.class);
    4542                        while (true) {
    4643                                try {
     
    6865        @Override
    6966        public void subscribe(String brokerSet, String brokerName) throws Exception {
    70                 if (brokerSet.equals(brokerSet) && !brokerMap.containsKey(brokerName)) {
     67                if (brokerSet.equals(brokerSet) && !brokers.contains(brokerName)) {
    7168                        logger.info("Broker " + brokerName + " subscrived");
    72                         // RemoteBroker broker = getBroker().lookup(brokerSet,
    73                         // RemoteBroker.class);
    74                         Proxymq proxy = new Proxymq(brokerSet, RemoteBroker.class, getBroker());
    75                         Class<?>[] array = { RemoteBroker.class };
    76                         RemoteBroker broker = (RemoteBroker) Proxy.newProxyInstance(RemoteBroker.class.getClassLoader(), array, proxy);
    77                         broker.setUID(brokerName);
    78                         brokerMap.put(brokerSet, broker);
     69                        brokers.add(brokerName);
    7970                } else {
    8071                        throw new Exception("blablabla");
     
    8980                        throw new Exception("JAJAJAJAJA");
    9081                }
    91                
    92                 HasObject[] hasList = multiBroker.hasObjectInfo(reference);
     82
     83                HasObject[] hasList = broker.hasObjectInfo(reference);
    9384
    9485                int minObjects = settings.getMinNumberObjects();
     
    10495
    10596                int i = 0;
    106                 while (numObjects <= minObjects && i < numBrokers) {
     97                while (numObjects < minObjects && i < numBrokers) {
    10798                        HasObject h = hasList[i++];
    108                         if (h.hasObject()) {
    109                                 brokerMap.get(h.getBrokerName()).spawnObject(reference, settings.getClassName());
     99                        if (!h.hasObject()) {
     100                                // Use a single broker
     101                                broker.setUID(h.getBrokerName());
     102                                broker.spawnObject(reference, settings.getClassName());
     103                                // Remove the UID
     104                                broker.setUID(null);
    110105                                numObjects++;
    111106                        }
    112107                }
     108
     109                // Once there are some objects created, put objectSettings
    113110                objectSettings.put(reference, settings);
    114111
     
    117114        @Override
    118115        public void spawnObject(OmqSettings settings, HasObject[] hasList, int numObjects) throws Exception {
    119 
     116                System.out.println("FUNCIO SPAWN");
    120117                String reference = settings.getReference();
    121118
     
    124121                }
    125122
     123                int numBrokers = hasList.length;
     124
     125                if (numObjects < numBrokers) {
     126                        for (HasObject h : hasList) {
     127                                if (!h.hasObject()) {
     128                                        // Use a single broker
     129                                        broker.setUID(h.getBrokerName());
     130                                        broker.spawnObject(reference, settings.getClassName());
     131                                        // Remove the UID
     132                                        broker.setUID(null);
     133                                        break;
     134                                }
     135                        }
     136                }
     137        }
     138
     139        @Override
     140        public void unbindObject(OmqSettings settings, HasObject[] hasList, int numObjects) throws Exception {
     141                System.out.println("FUNCIO UNBIND");
     142
     143                String reference = settings.getReference();
     144
    126145                int minObjects = settings.getMinNumberObjects();
    127146
    128                 for (HasObject h : hasList) {
    129                         if (h.hasObject() && minObjects >= numObjects) {
    130                                 brokerMap.get(h.getBrokerName()).spawnObject(reference, settings.getClassName(), settings.getProps());
    131                                 numObjects++;
    132                                 if (minObjects >= numObjects) {
     147                if (numObjects > minObjects) {
     148                        for (HasObject h : hasList) {
     149                                if (h.hasObject()) {
     150                                        // Use a single broker
     151                                        broker.setUID(h.getBrokerName());
     152                                        broker.deleteObject(reference);
     153                                        // Remove the UID
     154                                        broker.setUID(null);
    133155                                        break;
    134156                                }
    135157                        }
    136158                }
    137 
    138         }
    139 
    140         @Override
    141         public void unbindObject(OmqSettings settings, HasObject[] hasList, int numObjects) throws Exception {
    142                 // String reference = settings.getReference();
    143                 //
    144                 // int minObjects = settings.getMinNumberObjects();
    145                 //
    146                 // for (RemoteBroker broker : brokers) {
    147                 // if (broker.hasObject(reference) && (numObjects - 1) >= minObjects) {
    148                 // broker.deleteObject(reference);
    149                 // break;
    150                 // }
    151                 // }
    152 
    153159        }
    154160
     
    166172                int numMessages = dok.getMessageCount();
    167173
    168                 HasObject[] hasList = multiBroker.hasObjectInfo(reference);
     174                HasObject[] hasList = broker.hasObjectInfo(reference);
    169175                for (HasObject h : hasList) {
    170176                        if (h.hasObject()) {
     
    177183                if (maxMessages < numMessages || numObjects < minObjects) {
    178184                        logger.info("SPAWN TIME!!");
     185                        System.out.println("SPAAAAAAAAAAAAAAAAAAAAAAAAAAWN TIME!!!!!");
    179186                        spawnObject(settings, hasList, numObjects);
    180187                } else if (numMessages < minMessages && minObjects < numObjects) {
    181188                        logger.info("Unbinding object!!!");
     189                        System.out.println("UNBINDIN OOOOOOOOOOOOOOOOOOBJECT!!!");
    182190                        unbindObject(settings, hasList, numObjects);
    183191                }
     
    200208        }
    201209
    202         public RemoteMultiBroker getMultiBroker() {
    203                 return multiBroker;
    204         }
    205 
    206         public void setMultiBroker(RemoteMultiBroker multiBroker) {
    207                 this.multiBroker = multiBroker;
    208         }
    209 
    210210}
  • branches/supervisor/src/main/resources/log4j.xml

    r106 r110  
    44<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    55    <appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
    6         <param name="Threshold" value="DEBUG" />
     6        <param name="Threshold" value="INFO" />
    77        <layout class="org.apache.log4j.PatternLayout">
    88            <param name="ConversionPattern" value="%d{[yyyy-MM-dd HH:mm:ss]} %-5p %c:%L - %m%n" />
     
    3030
    3131  <root>
    32     <priority value ="DEBUG" />
     32    <priority value ="INFO" />
    3333    <appender-ref ref="consoleAppender" />
    3434    <appender-ref ref="A2" /> 
Note: See TracChangeset for help on using the changeset viewer.