Hi Sudharma, Can you contribute your code as patch and attach it to the JIRA ODE-563.
You could create the patch file in this way. git diff master ODECluster > cluster_patch1.patch Make sure all your changes are available in the patch. regards, sathwik On Wed, Jun 17, 2015 at 12:51 PM, sudharma subasinghe <suba...@cse.mrt.ac.lk > wrote: > Hi Sathwik, > > I modified the code as you explained. You can go through the code by > following link. > https://github.com/Subasinghe/ode/tree/ODECluster > > It would be helpful if you can provide a feedback on this. > > Thank you. > > On 10 June 2015 at 12:39, sudharma subasinghe <suba...@cse.mrt.ac.lk> > wrote: > > > Hi Sathwik, > > > > I tried to implement your logic also. Following is the link for committed > > code upto now. > > https://github.com/Subasinghe/ode/tree/ODECluster > > > > I used info msgs to debugging as it can be observed easily in console. > > When releasing the lock acquired by poller or web service the state is > set > > to false as in my code. But sometimes it is set to true and at that time > > second server's value is also true. Following is the related log for > each > > server. > > > > Server 1 > > 02:12:02,957 INFO [DeploymentPoller] Trying to access the lock for > > MagicSession > > 02:12:02,962 INFO [HazelcastClusterImpl] ThreadID:63 duLocked value for > > MagicSession file after locking: true > > 02:12:03,838 INFO [BpelServerImpl] Registered process { > > http://ode/bpel/unit-test}MagicSessionMain-3. > > 02:12:04,015 INFO [BpelServerImpl] Registered process { > > http://ode/bpel/responder}MagicSessionResponder-3. > > 02:12:04,015 INFO [DeploymentPoller] Deployment of artifact MagicSession > > successful: [{http://ode/bpel/unit-test}MagicSessionMain-3, { > > http://ode/bpel/responder}MagicSessionResponder-3] > > 02:12:04,015 INFO [DeploymentPoller] Trying to release the lock for > > MagicSession > > 02:12:04,017 INFO [HazelcastClusterImpl] ThreadID:63 duLocked value for > > MagicSession file after unlocking: true > > > > Server 2 > > 02:12:03,119 INFO [DeploymentPoller] Trying to access the lock for > > MagicSession > > 02:12:04,017 INFO [HazelcastClusterImpl] ThreadID:61 duLocked value for > > MagicSession file after locking: true > > 02:12:04,017 INFO [DeploymentPoller] Trying to release the lock for > > MagicSession > > 02:12:04,019 INFO [HazelcastClusterImpl] ThreadID:61 duLocked value for > > MagicSession file after unlocking: false > > > > Is this possible? But there were not any conflicts while deploying. It > > worked perfectly. > > > > Thank you > > > > > > On 7 June 2015 at 11:10, sudharma subasinghe <suba...@cse.mrt.ac.lk> > > wrote: > > > >> Hi Sathwik, > >> > >> I will concern your approach. Thank you for your effort. > >> > >> On 6 June 2015 at 18:43, Sathwik B P <sathwik...@gmail.com> wrote: > >> > >>> I have attached to the JIRA > >>> https://issues.apache.org/jira/browse/ODE-563 > >>> > >>> On Sat, Jun 6, 2015 at 5:55 PM, sudharma subasinghe < > >>> suba...@cse.mrt.ac.lk> > >>> wrote: > >>> > >>> > Hi Sathwik, > >>> > > >>> > I can't find the attached document. Please kind be enough to resend > it. > >>> > > >>> > On 6 June 2015 at 15:42, Sathwik B P <sathwik...@gmail.com> wrote: > >>> > > >>> > > Refer this one as I have corrected the numbering of steps. > >>> > > > >>> > > On Sat, Jun 6, 2015 at 3:33 PM, Sathwik B P <sathwik...@gmail.com> > >>> > wrote: > >>> > > > >>> > >> Hi Sudharma/Tammo, > >>> > >> > >>> > >> Kindly review attached document on my proposed approach. Let me > >>> know if > >>> > >> you have any concerns or doubts on it. > >>> > >> > >>> > >> regards, > >>> > >> sathwik > >>> > >> > >>> > >> On Fri, Jun 5, 2015 at 6:56 PM, Sathwik B P <sathwik...@gmail.com > > > >>> > wrote: > >>> > >> > >>> > >>> find response inline > >>> > >>> > >>> > >>> On Wed, Jun 3, 2015 at 10:22 PM, sudharma subasinghe < > >>> > >>> suba...@cse.mrt.ac.lk> wrote: > >>> > >>> > >>> > >>>> Hi, > >>> > >>>> > >>> > >>>> Sorry for the late reply. I was trying to achieve a proper > >>> solution. > >>> > >>>> Following is my approach. > >>> > >>>> > >>> > >>>> 1) I elected master node for deploying purpose. So when a master > >>> node > >>> > >>>> goes > >>> > >>>> down hazelcast will elect the next oldest node for master. > >>> > >>>> > >>> > >>> > >>> > >>> Perfect > >>> > >>> > >>> > >>> > >>> > >>>> 2) ODEServer can identify whether clustering is enabled or not > by > >>> > >>>> getting > >>> > >>>> the property value in ode-axis2.properties file. So I introduced > >>> new > >>> > >>>> property called "ode-axis2.hazelcast.clustering.enabled". If > >>> there is > >>> > no > >>> > >>>> clustering enabled server will work as it is. If clustering is > >>> > enabled, > >>> > >>>> cluster will be initialized. > >>> > >>>> > >>> > >>> > >>> > >>> Perfect > >>> > >>> > >>> > >>> > >>> > >>>> 3) In manual deployment its responsibility is taken by the > >>> > >>>> DeploymentPoller. So I give the deployment capability to master > >>> node,s > >>> > >>>> poller by setting "isDeploymentFromODEFileSystemAllowed()" to > >>> true.So > >>> > >>>> others will not be able to go into check() method in > >>> DeploymentPoller. > >>> > >>>> So > >>> > >>>> deployment will be done by only the master node. > >>> > >>>> > >>> > >>> > >>> > >>> Perfect > >>> > >>> > >>> > >>> > >>> > >>>> > >>> > >>>> 4) In DeploymentWebService, I had to consider few cases.If the > >>> deploy > >>> > >>>> request goes to the master node, it will deploy the process > >>> through > >>> > web > >>> > >>>> service.Others pollers will not go into check() method as they > >>> are not > >>> > >>>> masters. So master can continue without any involvement of > others. > >>> > >>>> > >>> > >>>> > >>> > >>> Perfect > >>> > >>> > >>> > >>> > >>> > >>>> 5) If the deploy request goes to a slave node, it will do up to > >>> file > >>> > >>>> creation in the file system.Slave will be stopped at that point. > >>> As > >>> > only > >>> > >>>> master poller is checking, master can continue from created > files > >>> in > >>> > the > >>> > >>>> file system. > >>> > >>>> > >>> > >>> > >>> > >>> DeploymentWebService provides synchronous operations. The > >>> status of > >>> > >>> the operation should be communicated to the calling client in the > >>> same > >>> > call. > >>> > >>> DeploymentPoller is a backend thread that goes over each and > >>> every > >>> > >>> directory under the Deployment directory checking for any changes > >>> to > >>> > >>> deploy.xml in existing processes and deploy newly added > processes. > >>> This > >>> > >>> process is sequential and time consuming. As the process > >>> directories > >>> > >>> grows, so does the time taken for execution of the thread. > >>> > >>> > >>> > >>> Since the request is on a slave node and the processing is > >>> done on > >>> > >>> master node, how do you check for the completion of the > >>> > >>> deployment/undeployment of processes and respond back to the > client > >>> > since > >>> > >>> the web service call is a synchronous operation. As > >>> DeploymentPoller is > >>> > >>> taking a lot of time in processing, your request will time out > >>> right. > >>> > >>> > >>> > >>> > >>> > >>>> > >>> > >>>> 6) But there was problem with _deploymentUnits in > >>> ProcessStoreImpl. > >>> > Each > >>> > >>>> _deploymentUnits stores only what its server has deployed. So > >>> think, > >>> > >>>> that a > >>> > >>>> master node goes down another master node appears.But its > >>> > >>>> __deploymentUnits > >>> > >>>> does not have dus which has deployed by the earlier master node. > >>> Hence > >>> > >>>> it > >>> > >>>> will not be able retire earlier version of the process which is > >>> > >>>> deployed by > >>> > >>>> previous master. So there will two process which are in "ACTIVE" > >>> state > >>> > >>> > >>> > >>> > >>> > >>>> 7) To avoid this, I add the ODEServer as an Observer to check > >>> when a > >>> > new > >>> > >>>> master is electing, then load all the deployment units out of > the > >>> > >>>> store. So > >>> > >>>> new master node can have all the dus and can retire appropriate > >>> > version. > >>> > >>>> Usually loadAll() is called at the server start-up time. But > >>> there is > >>> > no > >>> > >>>> other way to solve this. I tried to use Hazelcast IMap to store > >>> all > >>> > dus > >>> > >>>> among all nodes. But it wasn't success as du is not serializable > >>> > >>>> object. > >>> > >>>> > >>> > >>> > >>> > >>>> 8) I figured out that we do not need send cluster message to > >>> others as > >>> > >>>> all > >>> > >>>> the dus' data are persisted to the shared DB. So each node can > >>> take > >>> > the > >>> > >>>> du > >>> > >>>> and retrieve necessary data using already implemented methods in > >>> > Process > >>> > >>>> Store. > >>> > >>>> > >>> > >>>> 9) But there is an another problem.The axis2 service > >>> corresponding to > >>> > a > >>> > >>>> deployed process does not appear on all nodes of the cluster. > >>> That is > >>> > >>>> because each server add du which is deployed by it to the > process > >>> > >>>> store.That is why I had use loadAll() when masters are changing. > >>> How > >>> > to > >>> > >>>> solve this? > >>> > >>>> > >>> > >>> > >>> > >>> I do appriciate your efforts in understanding the > >>> implmentation and > >>> > >>> changes that need to be done. You are bang on it. > >>> > >>> fireEvent(..) is the method that triggers process activation > >>> and > >>> > >>> necessary service creation. > >>> > >>> > >>> > >>> > >>> > >>> But with this given apporach from steps 6 to 8, ODE cannot > have > >>> > >>> atleast 2 Active servers for Load balancing. You are > concentrating > >>> on > >>> > only > >>> > >>> one active node that will do deployments and cater to process > >>> > invocations. > >>> > >>> We should also think about scaling ODE to multiple servers to > >>> > handle > >>> > >>> load. > >>> > >>> > >>> > >>> What do you think. > >>> > >>> > >>> > >>> > >>> > >>>> Thank you, > >>> > >>>> Sudharma > >>> > >>>> > >>> > >>>> On 2 June 2015 at 08:51, Sathwik B P <sathwik...@gmail.com> > >>> wrote: > >>> > >>>> > >>> > >>>> > Sudharma, > >>> > >>>> > > >>> > >>>> > Any updates? > >>> > >>>> > > >>> > >>>> > regards, > >>> > >>>> > sathwik > >>> > >>>> > > >>> > >>>> > On Fri, May 29, 2015 at 5:26 PM, Sathwik B P < > >>> sathwik...@gmail.com> > >>> > >>>> wrote: > >>> > >>>> > > >>> > >>>> > > Sudharma, > >>> > >>>> > > > >>> > >>>> > > Can you elaborate on your option 1). > >>> > >>>> > > > >>> > >>>> > > Response to your option 2). > >>> > >>>> > > > >>> > >>>> > > Process Store is the component that handles process > >>> metadata, > >>> > >>>> > > compilation and deployment in ODE. Integration layers in ODE > >>> > >>>> (Axis2, JBI) > >>> > >>>> > > use the process store. > >>> > >>>> > > Future implementations of IL for ODE will also use the > >>> process > >>> > >>>> store. > >>> > >>>> > > We should not be thinking of moving the process store > >>> > functionality > >>> > >>>> to > >>> > >>>> > the > >>> > >>>> > > integration layers. > >>> > >>>> > > > >>> > >>>> > > > >>> > >>>> > > On Thu, May 28, 2015 at 9:33 PM, sudharma subasinghe < > >>> > >>>> > > suba...@cse.mrt.ac.lk> wrote: > >>> > >>>> > > > >>> > >>>> > >> Hi, > >>> > >>>> > >> > >>> > >>>> > >> I understood the problem within dynamic master/slave > >>> > >>>> configuration. In > >>> > >>>> > my > >>> > >>>> > >> approach, when a deployment request is routed to a slave > node > >>> > >>>> there will > >>> > >>>> > >> not be a deployment. I suggest two options to avoid it. > >>> > >>>> > >> 1) Have static master/slave configuration only for deploy > >>> process > >>> > >>>> > >> > >>> > >>>> > > 2) Modify the deployment web service to complie and verify > the > >>> > >>>> process > >>> > >>>> > and > >>> > >>>> > >> then copy it to the deploy folder irrespective of whether > >>> its a > >>> > >>>> master > >>> > >>>> > or > >>> > >>>> > >> slave, then deployment poller should take care of the > >>> deployment > >>> > >>>> > >> > >>> > >>>> > >> > >>> > >>>> > > > >>> > >>>> > >> > >>> > >>>> > >> On 28 May 2015 at 14:43, Sathwik B P <sathwik...@gmail.com > > > >>> > wrote: > >>> > >>>> > >> > >>> > >>>> > >> > Sudharma, > >>> > >>>> > >> > > >>> > >>>> > >> > We definitely need a master/slave in the hazelcast > cluster. > >>> > This > >>> > >>>> is > >>> > >>>> > >> > probably needed for the job migration in the Scheduler to > >>> > >>>> migrate the > >>> > >>>> > >> jobs > >>> > >>>> > >> > associated with a down node. Let hold on this topic for > >>> future > >>> > >>>> > >> discussion. > >>> > >>>> > >> > > >>> > >>>> > >> > Going by the explanation where the master/slave nodes > have > >>> > >>>> certain > >>> > >>>> > >> > predefined tasks to perform is perfectly fine. > >>> > >>>> > >> > > >>> > >>>> > >> > I have this scenario, > >>> > >>>> > >> > > >>> > >>>> > >> > I am using HAProxy as my load balancer and configured 3 > >>> nodes > >>> > in > >>> > >>>> the > >>> > >>>> > >> > cluster. > >>> > >>>> > >> > > >>> > >>>> > >> > Node1 - Active > >>> > >>>> > >> > Node2 - Active > >>> > >>>> > >> > Node3 - Backup > >>> > >>>> > >> > > >>> > >>>> > >> > Load balancing algorithm: RoundRobin > >>> > >>>> > >> > > >>> > >>>> > >> > A Backup node (Node3) is one which the load balancer will > >>> not > >>> > >>>> route > >>> > >>>> > >> > requests to, until one of the Active node i.e either > Node1 > >>> or > >>> > >>>> Node2 > >>> > >>>> > has > >>> > >>>> > >> > gone down. > >>> > >>>> > >> > > >>> > >>>> > >> > All these 3 nodes are also part of the hazelcast cluster > as > >>> > well. > >>> > >>>> > >> > > >>> > >>>> > >> > In the hazelcast cluster, assume Node1 is elected as the > >>> > >>>> leader/master > >>> > >>>> > >> and > >>> > >>>> > >> > Node2,Node3 as slaves. > >>> > >>>> > >> > > >>> > >>>> > >> > I initiate the deploy operation on the > DeploymentWebService > >>> > >>>> which the > >>> > >>>> > >> load > >>> > >>>> > >> > balancer routes it to one of the Active nodes in the > >>> cluster, > >>> > >>>> lets say > >>> > >>>> > >> it's > >>> > >>>> > >> > the Node1. Since Node1 is also the master in the > hazelcast > >>> > >>>> cluster, > >>> > >>>> > >> > deployment is a success. > >>> > >>>> > >> > > >>> > >>>> > >> > I initiate another deploy operation on the > >>> DeploymentWebService > >>> > >>>> which > >>> > >>>> > >> the > >>> > >>>> > >> > load balancer routes it to the next active node which is > >>> Node2. > >>> > >>>> Since > >>> > >>>> > >> Node2 > >>> > >>>> > >> > is a slave in the Hazelcast cluster, What happens to the > >>> > >>>> deployment? > >>> > >>>> > >> > > >>> > >>>> > >> > regards, > >>> > >>>> > >> > sathwik > >>> > >>>> > >> > > >>> > >>>> > >> > On Wed, May 27, 2015 at 10:55 PM, sudharma subasinghe < > >>> > >>>> > >> > suba...@cse.mrt.ac.lk > >>> > >>>> > >> > > wrote: > >>> > >>>> > >> > > >>> > >>>> > >> > > Hi, > >>> > >>>> > >> > > > >>> > >>>> > >> > > I will explain my approach as much as possible. The > >>> oldest > >>> > >>>> node in > >>> > >>>> > the > >>> > >>>> > >> > > hazelcast cluster is elected as the master node. In the > >>> > >>>> failure of > >>> > >>>> > the > >>> > >>>> > >> > > master node, next oldest node will be elected as the > >>> master > >>> > >>>> node. > >>> > >>>> > This > >>> > >>>> > >> > > master-slave configuration is just for deployment. When > >>> the > >>> > >>>> > hazelcast > >>> > >>>> > >> > > cluster elected the master node, that node becomes a > >>> master > >>> > >>>> node for > >>> > >>>> > >> > > deploying process. So it will do the deploying > >>> artifacts. If > >>> > >>>> you > >>> > >>>> > want > >>> > >>>> > >> to > >>> > >>>> > >> > > get the idea of electing master node please refer the > >>> code > >>> > >>>> which I > >>> > >>>> > >> have > >>> > >>>> > >> > > located in the github. ( > >>> > >>>> > >> > > https://github.com/Subasinghe/ode/tree/ode_clustering) > >>> > >>>> > >> > > > >>> > >>>> > >> > > I identified separated actions which should be followed > >>> by > >>> > the > >>> > >>>> > master > >>> > >>>> > >> and > >>> > >>>> > >> > > salve nodes. > >>> > >>>> > >> > > Actions which are followed by master node only > >>> > >>>> > >> > > 1) create deployment unit > >>> > >>>> > >> > > 2) set the version nu to deployment unit > >>> > >>>> > >> > > 3) compile deployment unit > >>> > >>>> > >> > > 4) scan deployment unit > >>> > >>>> > >> > > 5) retire previous versions > >>> > >>>> > >> > > Master node and slave nodes should create _processes > >>> which > >>> > >>>> stores > >>> > >>>> > >> > > ProcessConfImpl > >>> > >>>> > >> > > Only master node will write the version nu to database, > >>> > create > >>> > >>>> > >> .deployed > >>> > >>>> > >> > > file > >>> > >>>> > >> > > > >>> > >>>> > >> > > So there are some actions which should be followed only > >>> by > >>> > >>>> master > >>> > >>>> > node > >>> > >>>> > >> > > while other actions should be followed by all the > >>> nodes.The > >>> > >>>> idea of > >>> > >>>> > >> > having > >>> > >>>> > >> > > a master node is deploying artifacts and avoid others > >>> from > >>> > >>>> writing > >>> > >>>> > the > >>> > >>>> > >> > > version nu to database. > >>> > >>>> > >> > > Whether a node is active or passive, all nodes should > do > >>> the > >>> > >>>> > >> > > deployment.Master > >>> > >>>> > >> > > and slaves will follow necessary actions as in above. > >>> > >>>> > >> > > > >>> > >>>> > >> > > > >>> > >>>> > >> > > > >>> > >>>> > >> > > > >>> > >>>> > >> > > > >>> > >>>> > >> > > On 27 May 2015 at 15:49, Sathwik B P < > >>> sathwik...@gmail.com> > >>> > >>>> wrote: > >>> > >>>> > >> > > > >>> > >>>> > >> > > > Nandika, > >>> > >>>> > >> > > > > >>> > >>>> > >> > > > I very well understand what you have put across, but > >>> it's > >>> > >>>> > secondary > >>> > >>>> > >> to > >>> > >>>> > >> > me > >>> > >>>> > >> > > > now. > >>> > >>>> > >> > > > > >>> > >>>> > >> > > > Sudharma, > >>> > >>>> > >> > > > My primary concern is to understand at a high level > the > >>> > >>>> deployment > >>> > >>>> > >> > > > architecture and how would master-slave configuration > >>> fit > >>> > >>>> in. Are > >>> > >>>> > >> there > >>> > >>>> > >> > > any > >>> > >>>> > >> > > > restrictions imposed by the in-progress design? > >>> > >>>> > >> > > > > >>> > >>>> > >> > > > Firstly, how would ODE process deployment work under > >>> these > >>> > >>>> cluster > >>> > >>>> > >> > > > configurations? > >>> > >>>> > >> > > > > >>> > >>>> > >> > > > Sample Cluster configurations: A load balancer is > >>> > >>>> frontending the > >>> > >>>> > >> > > servers. > >>> > >>>> > >> > > > 1) Cluster consisting of 2 nodes all Active-Active. > >>> > >>>> > >> > > > 2) Cluster consisting of 2 nodes Active-Passive. > >>> > >>>> > >> > > > 3) Cluster with 2+ nodes with additional nodes either > >>> in > >>> > >>>> Active or > >>> > >>>> > >> > > Passive. > >>> > >>>> > >> > > > > >>> > >>>> > >> > > > regards, > >>> > >>>> > >> > > > sathwik > >>> > >>>> > >> > > > > >>> > >>>> > >> > > > > >>> > >>>> > >> > > > > >>> > >>>> > >> > > > > >>> > >>>> > >> > > > > >>> > >>>> > >> > > > > >>> > >>>> > >> > > > > >>> > >>>> > >> > > > On Wed, May 27, 2015 at 3:04 PM, Nandika Jayawardana > < > >>> > >>>> > >> > jayaw...@gmail.com > >>> > >>>> > >> > > > > >>> > >>>> > >> > > > wrote: > >>> > >>>> > >> > > > > >>> > >>>> > >> > > > > Hi Sathwik, > >>> > >>>> > >> > > > > > >>> > >>>> > >> > > > > According to my understanding, in the clustering > >>> > scenario, > >>> > >>>> the > >>> > >>>> > >> master > >>> > >>>> > >> > > > node > >>> > >>>> > >> > > > > should perform all the deployment actions and the > >>> slave > >>> > >>>> nodes > >>> > >>>> > also > >>> > >>>> > >> > need > >>> > >>>> > >> > > > to > >>> > >>>> > >> > > > > perform some deployment actions. For example, the > >>> slave > >>> > >>>> nodes > >>> > >>>> > also > >>> > >>>> > >> > > should > >>> > >>>> > >> > > > > handle the process ACTIVATED event so that the > >>> process > >>> > >>>> > >> configuration > >>> > >>>> > >> > is > >>> > >>>> > >> > > > > added to the engine and necessary web services are > >>> > created > >>> > >>>> so > >>> > >>>> > that > >>> > >>>> > >> > when > >>> > >>>> > >> > > > the > >>> > >>>> > >> > > > > load balancer send requests to any node in the > >>> cluster, > >>> > it > >>> > >>>> is > >>> > >>>> > >> ready > >>> > >>>> > >> > to > >>> > >>>> > >> > > > > accept those requests. > >>> > >>>> > >> > > > > > >>> > >>>> > >> > > > > Regards > >>> > >>>> > >> > > > > Nandika > >>> > >>>> > >> > > > > > >>> > >>>> > >> > > > > > >>> > >>>> > >> > > > > > >>> > >>>> > >> > > > > > >>> > >>>> > >> > > > > On Wed, May 27, 2015 at 12:30 PM, Sathwik B P < > >>> > >>>> > >> sathwik...@gmail.com> > >>> > >>>> > >> > > > > wrote: > >>> > >>>> > >> > > > > > >>> > >>>> > >> > > > > > Sudharma, > >>> > >>>> > >> > > > > > > >>> > >>>> > >> > > > > > Where are you going to configure the > >>> master-slaves, is > >>> > >>>> it in > >>> > >>>> > the > >>> > >>>> > >> > web > >>> > >>>> > >> > > > > > application level or at the load balancer? > >>> > >>>> > >> > > > > > > >>> > >>>> > >> > > > > > regards, > >>> > >>>> > >> > > > > > sathwik > >>> > >>>> > >> > > > > > > >>> > >>>> > >> > > > > > On Tue, May 26, 2015 at 7:42 PM, sudharma > >>> subasinghe < > >>> > >>>> > >> > > > > > suba...@cse.mrt.ac.lk> > >>> > >>>> > >> > > > > > wrote: > >>> > >>>> > >> > > > > > > >>> > >>>> > >> > > > > > > Hi Tammo, > >>> > >>>> > >> > > > > > > > >>> > >>>> > >> > > > > > > Can you suggest the best method from these to > >>> > >>>> implement? As > >>> > >>>> > >> > first I > >>> > >>>> > >> > > > > > > suggested the master-slaves scenario I think it > >>> is > >>> > >>>> easy to > >>> > >>>> > >> > > implement > >>> > >>>> > >> > > > > than > >>> > >>>> > >> > > > > > > distributed lock scenario. However if you can > >>> suggest > >>> > >>>> one > >>> > >>>> > from > >>> > >>>> > >> > > these > >>> > >>>> > >> > > > > two, > >>> > >>>> > >> > > > > > > then I can think about it. > >>> > >>>> > >> > > > > > > > >>> > >>>> > >> > > > > > > Thank you > >>> > >>>> > >> > > > > > > > >>> > >>>> > >> > > > > > > On 21 May 2015 at 12:40, Sathwik B P < > >>> > >>>> sathwik...@gmail.com> > >>> > >>>> > >> > wrote: > >>> > >>>> > >> > > > > > > > >>> > >>>> > >> > > > > > > > With respect to the hotdeployment, > >>> > >>>> > >> > > > > > > > > >>> > >>>> > >> > > > > > > > We can drop the deployment archive onto the > >>> > >>>> deployment > >>> > >>>> > >> folder. > >>> > >>>> > >> > > > Since > >>> > >>>> > >> > > > > > the > >>> > >>>> > >> > > > > > > > DeploymentPoller are acquiring the > distributed > >>> lock > >>> > >>>> for > >>> > >>>> > the > >>> > >>>> > >> > > > > > > DeploymentUnit, > >>> > >>>> > >> > > > > > > > only one of the nodes will get the lock and > >>> > initiate > >>> > >>>> the > >>> > >>>> > >> > > > deployment. > >>> > >>>> > >> > > > > > > > DeploymentPollers on other nodes will fail in > >>> > >>>> acquiring > >>> > >>>> > the > >>> > >>>> > >> > lock > >>> > >>>> > >> > > > and > >>> > >>>> > >> > > > > > > hence > >>> > >>>> > >> > > > > > > > will silently ignore it. > >>> > >>>> > >> > > > > > > > > >>> > >>>> > >> > > > > > > > On Thu, May 21, 2015 at 12:30 PM, Sathwik B > P < > >>> > >>>> > >> > > > sathwik...@gmail.com> > >>> > >>>> > >> > > > > > > > wrote: > >>> > >>>> > >> > > > > > > > > >>> > >>>> > >> > > > > > > > > Hi Tammo, > >>> > >>>> > >> > > > > > > > > > >>> > >>>> > >> > > > > > > > > The distributed lock acquisition on the > >>> > >>>> DeploymentUnit > >>> > >>>> > >> should > >>> > >>>> > >> > > be > >>> > >>>> > >> > > > > > added > >>> > >>>> > >> > > > > > > to > >>> > >>>> > >> > > > > > > > > both DeploymentWebService and > >>> DeploymentPoller. > >>> > >>>> > >> > > > > > > > > > >>> > >>>> > >> > > > > > > > > When a deployment operation is initiated > >>> through > >>> > >>>> the > >>> > >>>> > >> > > > > > > > DeploymentWebService, > >>> > >>>> > >> > > > > > > > > The load balancer routes it to any of the > >>> > available > >>> > >>>> > nodes. > >>> > >>>> > >> > > > > > > > > > >>> > >>>> > >> > > > > > > > > On the routed node, the > DeploymentWebService > >>> > >>>> acquires > >>> > >>>> > the > >>> > >>>> > >> > > > > Distributed > >>> > >>>> > >> > > > > > > > > lock. On the remaining nodes the > >>> DeploymentPoller > >>> > >>>> will > >>> > >>>> > >> try to > >>> > >>>> > >> > > > > acquire > >>> > >>>> > >> > > > > > > the > >>> > >>>> > >> > > > > > > > > distributed lock and will not get it and > >>> hence > >>> > will > >>> > >>>> > >> silently > >>> > >>>> > >> > > > ignore > >>> > >>>> > >> > > > > > it. > >>> > >>>> > >> > > > > > > > > > >>> > >>>> > >> > > > > > > > > Once the routed node completes the > >>> deployment, it > >>> > >>>> will > >>> > >>>> > >> > release > >>> > >>>> > >> > > > the > >>> > >>>> > >> > > > > > > lock. > >>> > >>>> > >> > > > > > > > > This way we don't have to stall the > >>> > >>>> DeploymentPoller in > >>> > >>>> > >> other > >>> > >>>> > >> > > > > nodes. > >>> > >>>> > >> > > > > > > > > > >>> > >>>> > >> > > > > > > > > Does it answer the concerns? > >>> > >>>> > >> > > > > > > > > > >>> > >>>> > >> > > > > > > > > > >>> > >>>> > >> > > > > > > > > Now, if we give the responsibility of > >>> identifying > >>> > >>>> the > >>> > >>>> > >> master > >>> > >>>> > >> > > node > >>> > >>>> > >> > > > > to > >>> > >>>> > >> > > > > > > the > >>> > >>>> > >> > > > > > > > > hazelcast, how do we plan to intimate the > >>> load > >>> > >>>> balancer > >>> > >>>> > to > >>> > >>>> > >> > > change > >>> > >>>> > >> > > > > > it's > >>> > >>>> > >> > > > > > > > > configuration about the master node? > >>> > >>>> > >> > > > > > > > > Assuming there are 3 nodes in the cluster, > >>> > >>>> > >> > > > > > > > > node1 -master > >>> > >>>> > >> > > > > > > > > node2 - slave > >>> > >>>> > >> > > > > > > > > node3 - slave > >>> > >>>> > >> > > > > > > > > > >>> > >>>> > >> > > > > > > > > Node1 goes down, the LB will promote Node2 > as > >>> > >>>> master > >>> > >>>> > node, > >>> > >>>> > >> > but > >>> > >>>> > >> > > > > > > hazelcast > >>> > >>>> > >> > > > > > > > > might promote Node3 as master node. They > are > >>> out > >>> > of > >>> > >>>> > sync. > >>> > >>>> > >> > > > > > > > > > >>> > >>>> > >> > > > > > > > > Is this argument valid? > >>> > >>>> > >> > > > > > > > > > >>> > >>>> > >> > > > > > > > > regards, > >>> > >>>> > >> > > > > > > > > sathwik > >>> > >>>> > >> > > > > > > > > > >>> > >>>> > >> > > > > > > > > On Wed, May 20, 2015 at 1:51 PM, Tammo van > >>> > Lessen < > >>> > >>>> > >> > > > > > > tvanles...@gmail.com> > >>> > >>>> > >> > > > > > > > > wrote: > >>> > >>>> > >> > > > > > > > > > >>> > >>>> > >> > > > > > > > >> Hi Sudharma, > >>> > >>>> > >> > > > > > > > >> > >>> > >>>> > >> > > > > > > > >> what do you expect from the "other nodes > >>> > >>>> deployment"? > >>> > >>>> > >> > > > Compilation > >>> > >>>> > >> > > > > is > >>> > >>>> > >> > > > > > > not > >>> > >>>> > >> > > > > > > > >> needed since the CBP file is written to > the > >>> > >>>> (shared) > >>> > >>>> > FS. > >>> > >>>> > >> > > > > > Registration > >>> > >>>> > >> > > > > > > is > >>> > >>>> > >> > > > > > > > >> also not needed, since it is done via the > >>> shared > >>> > >>>> > >> database. > >>> > >>>> > >> > So > >>> > >>>> > >> > > > the > >>> > >>>> > >> > > > > > only > >>> > >>>> > >> > > > > > > > >> thing that might be needed is to tell the > >>> engine > >>> > >>>> that > >>> > >>>> > >> there > >>> > >>>> > >> > > is a > >>> > >>>> > >> > > > > new > >>> > >>>> > >> > > > > > > > >> deployment. I'd need to check that. If > this > >>> is > >>> > >>>> needed, > >>> > >>>> > I > >>> > >>>> > >> > > revert > >>> > >>>> > >> > > > my > >>> > >>>> > >> > > > > > > last > >>> > >>>> > >> > > > > > > > >> statement, then it is perhaps better to > just > >>> > send > >>> > >>>> an > >>> > >>>> > >> event > >>> > >>>> > >> > > over > >>> > >>>> > >> > > > > > > > Hazelcast > >>> > >>>> > >> > > > > > > > >> to all nodes that the deployment has > >>> changed. > >>> > >>>> > >> > > > > > > > >> > >>> > >>>> > >> > > > > > > > >> Best, > >>> > >>>> > >> > > > > > > > >> Tammo > >>> > >>>> > >> > > > > > > > >> > >>> > >>>> > >> > > > > > > > >> On Wed, May 20, 2015 at 10:13 AM, sudharma > >>> > >>>> subasinghe < > >>> > >>>> > >> > > > > > > > >> suba...@cse.mrt.ac.lk > >>> > >>>> > >> > > > > > > > >> > wrote: > >>> > >>>> > >> > > > > > > > >> > >>> > >>>> > >> > > > > > > > >> > Hi Tammo, > >>> > >>>> > >> > > > > > > > >> > > >>> > >>>> > >> > > > > > > > >> > The master node writes meta data. But > >>> runtime > >>> > >>>> > >> information > >>> > >>>> > >> > > must > >>> > >>>> > >> > > > > be > >>> > >>>> > >> > > > > > > > >> available > >>> > >>>> > >> > > > > > > > >> > in all nodes.Since the folder is shared, > >>> all > >>> > >>>> nodes > >>> > >>>> > will > >>> > >>>> > >> > see > >>> > >>>> > >> > > > the > >>> > >>>> > >> > > > > > > > >> > availability of a new process. My idea > is > >>> for > >>> > >>>> master > >>> > >>>> > >> node > >>> > >>>> > >> > to > >>> > >>>> > >> > > > > write > >>> > >>>> > >> > > > > > > the > >>> > >>>> > >> > > > > > > > >> meta > >>> > >>>> > >> > > > > > > > >> > data and other nodes to just read the > meta > >>> > data > >>> > >>>> and > >>> > >>>> > >> load > >>> > >>>> > >> > > > > > process.So > >>> > >>>> > >> > > > > > > we > >>> > >>>> > >> > > > > > > > >> need > >>> > >>>> > >> > > > > > > > >> > a small delay between master node > >>> deployment > >>> > and > >>> > >>>> > other > >>> > >>>> > >> > nodes > >>> > >>>> > >> > > > > > > > deployment. > >>> > >>>> > >> > > > > > > > >> > > >>> > >>>> > >> > > > > > > > >> > Is there anyway to set the delay between > >>> > master > >>> > >>>> node > >>> > >>>> > >> and > >>> > >>>> > >> > > > slaves > >>> > >>>> > >> > > > > > > until > >>> > >>>> > >> > > > > > > > >> > master node finish the deployment? > >>> > >>>> > >> > > > > > > > >> > > >>> > >>>> > >> > > > > > > > >> > Thank you > >>> > >>>> > >> > > > > > > > >> > Sudharma > >>> > >>>> > >> > > > > > > > >> > > >>> > >>>> > >> > > > > > > > >> > > >>> > >>>> > >> > > > > > > > >> > On 20 May 2015 at 13:01, Tammo van > Lessen > >>> < > >>> > >>>> > >> > > > tvanles...@gmail.com > >>> > >>>> > >> > > > > > > >>> > >>>> > >> > > > > > > > wrote: > >>> > >>>> > >> > > > > > > > >> > > >>> > >>>> > >> > > > > > > > >> > > Hi Sathwik, > >>> > >>>> > >> > > > > > > > >> > > > >>> > >>>> > >> > > > > > > > >> > > On Wed, May 20, 2015 at 6:40 AM, > >>> Sathwik B > >>> > P < > >>> > >>>> > >> > > > > > > sathwik...@gmail.com> > >>> > >>>> > >> > > > > > > > >> > wrote: > >>> > >>>> > >> > > > > > > > >> > > > >>> > >>>> > >> > > > > > > > >> > > > Sudharma/Tammo, > >>> > >>>> > >> > > > > > > > >> > > > > >>> > >>>> > >> > > > > > > > >> > > > 1) How do we plan to decide which is > >>> the > >>> > >>>> master > >>> > >>>> > >> node > >>> > >>>> > >> > in > >>> > >>>> > >> > > > the > >>> > >>>> > >> > > > > > > > cluster? > >>> > >>>> > >> > > > > > > > >> > > > > >>> > >>>> > >> > > > > > > > >> > > > >>> > >>>> > >> > > > > > > > >> > > I think the easiest approach is to > >>> always > >>> > >>>> elect the > >>> > >>>> > >> > oldest > >>> > >>>> > >> > > > > node > >>> > >>>> > >> > > > > > in > >>> > >>>> > >> > > > > > > > the > >>> > >>>> > >> > > > > > > > >> > > cluster to be the master. AFAIK > >>> Hazelcast > >>> > can > >>> > >>>> > easily > >>> > >>>> > >> > asked > >>> > >>>> > >> > > > for > >>> > >>>> > >> > > > > > > this > >>> > >>>> > >> > > > > > > > >> > > information. > >>> > >>>> > >> > > > > > > > >> > > > >>> > >>>> > >> > > > > > > > >> > > > >>> > >>>> > >> > > > > > > > >> > > > >>> > >>>> > >> > > > > > > > >> > > > 2) Don't we need to stall the > >>> Deployment > >>> > >>>> Pollers > >>> > >>>> > in > >>> > >>>> > >> > the > >>> > >>>> > >> > > > > slave > >>> > >>>> > >> > > > > > > > nodes? > >>> > >>>> > >> > > > > > > > >> > > > > >>> > >>>> > >> > > > > > > > >> > > > > >>> > >>>> > >> > > > > > > > >> > > Absolutely. > >>> > >>>> > >> > > > > > > > >> > > > >>> > >>>> > >> > > > > > > > >> > > Suggestion: > >>> > >>>> > >> > > > > > > > >> > > > I am not sure whether do we need > >>> > >>>> Master-SLaves. > >>> > >>>> > Why > >>> > >>>> > >> > not > >>> > >>>> > >> > > > give > >>> > >>>> > >> > > > > > > every > >>> > >>>> > >> > > > > > > > >> node > >>> > >>>> > >> > > > > > > > >> > > in > >>> > >>>> > >> > > > > > > > >> > > > the cluster the same status > >>> > (Active-Active). > >>> > >>>> > >> > > > > > > > >> > > > > >>> > >>>> > >> > > > > > > > >> > > > When a new deployment is made, the > >>> load > >>> > >>>> balancer > >>> > >>>> > >> can > >>> > >>>> > >> > > push > >>> > >>>> > >> > > > it > >>> > >>>> > >> > > > > > to > >>> > >>>> > >> > > > > > > > any > >>> > >>>> > >> > > > > > > > >> of > >>> > >>>> > >> > > > > > > > >> > > the > >>> > >>>> > >> > > > > > > > >> > > > available nodes. That node will > >>> probably > >>> > >>>> acquire > >>> > >>>> > a > >>> > >>>> > >> > > > > distributed > >>> > >>>> > >> > > > > > > > lock > >>> > >>>> > >> > > > > > > > >> on > >>> > >>>> > >> > > > > > > > >> > > the > >>> > >>>> > >> > > > > > > > >> > > > deployment unit and acts as master > for > >>> > that > >>> > >>>> > >> > deployment. > >>> > >>>> > >> > > > This > >>> > >>>> > >> > > > > > > > ensures > >>> > >>>> > >> > > > > > > > >> > > > optimum usage of the cluster nodes. > >>> > >>>> Probably no > >>> > >>>> > >> static > >>> > >>>> > >> > > > > > > > >> configuration of > >>> > >>>> > >> > > > > > > > >> > > > Master-Slave in the load balancer > nor > >>> in > >>> > the > >>> > >>>> > >> > hazelcast. > >>> > >>>> > >> > > > > > > > >> > > > > >>> > >>>> > >> > > > > > > > >> > > > >>> > >>>> > >> > > > > > > > >> > > But this would not allow to have the > >>> > >>>> hotdeployment > >>> > >>>> > >> via > >>> > >>>> > >> > > > > > filesystem > >>> > >>>> > >> > > > > > > > >> still > >>> > >>>> > >> > > > > > > > >> > > enabled, right? > >>> > >>>> > >> > > > > > > > >> > > > >>> > >>>> > >> > > > > > > > >> > > Best, > >>> > >>>> > >> > > > > > > > >> > > Tammo > >>> > >>>> > >> > > > > > > > >> > > > >>> > >>>> > >> > > > > > > > >> > > > >>> > >>>> > >> > > > > > > > >> > > -- > >>> > >>>> > >> > > > > > > > >> > > Tammo van Lessen - > http://www.taval.de > >>> > >>>> > >> > > > > > > > >> > > > >>> > >>>> > >> > > > > > > > >> > > >>> > >>>> > >> > > > > > > > >> > >>> > >>>> > >> > > > > > > > >> > >>> > >>>> > >> > > > > > > > >> > >>> > >>>> > >> > > > > > > > >> -- > >>> > >>>> > >> > > > > > > > >> Tammo van Lessen - http://www.taval.de > >>> > >>>> > >> > > > > > > > >> > >>> > >>>> > >> > > > > > > > > > >>> > >>>> > >> > > > > > > > > > >>> > >>>> > >> > > > > > > > > >>> > >>>> > >> > > > > > > > >>> > >>>> > >> > > > > > > >>> > >>>> > >> > > > > > >>> > >>>> > >> > > > > >>> > >>>> > >> > > > >>> > >>>> > >> > > >>> > >>>> > >> > >>> > >>>> > > > >>> > >>>> > > > >>> > >>>> > > >>> > >>>> > >>> > >>> > >>> > >>> > >>> > >> > >>> > > > >>> > > >>> > >> > >> > > >