Hi Sathwik, The database is already shared. For avoiding the race condition in deploying, I use the master-slave configuration. There I introduce a new table contains md5sum and package name in the database. I think it's not need to use a replicated file system as each node can deploy the package at run time observing that table.
Thank you. On 27 March 2015 at 15:13, sudharma subasinghe <suba...@cse.mrt.ac.lk> wrote: > Hi Sathwik, > > Now I got the idea. Thanks for the information. I'll consider the point. > > Thank you. > > On 27 March 2015 at 14:34, Sathwik B P <sathwik...@gmail.com> wrote: > >> Hi Sudharma, >> >> This is not about storing in the database. >> >> When a deployment is initiated to ODE, the process artifacts are first >> stored in the file system (under WEB-INF/processes folder is the default >> configuration). Then a deployment poller scans for new files on the file >> store and invokes the bpel compiler to create the java object model from >> the bpel file (we refer it as OModel) with a file name ending with *.cbp* >> on the file system. Based on this object model, data is populated in the >> database. Remember that the whole model is not stored in the database. So >> on a restart of the machine hosting ODE, the deployment poller will check >> for this *.CBP* file and load into memory. As a process instance is >> created >> the activities is taken from this model and fed into the JaCOB which is >> ODE's VPU. >> >> So I am basically talking about this file system where the process >> artifacts will be stored. >> >> Today this resides locally on the machine where ODE war is deployed. Think >> about in a cluster. Where would you suggest to have this file system. >> >> regards, >> sathwik >> >> On Fri, Mar 27, 2015 at 2:08 PM, sudharma subasinghe < >> suba...@cse.mrt.ac.lk> >> wrote: >> >> > Hi Sathwik, >> > >> > Thank you for your feedback. I agree with you about the single point of >> > failure. I think in the Hazelcast cluster when the database goes down, >> > writes in the cache are queued in a log file so the writes can be >> persisted >> > in the database once it is backed up. Am I right? >> > >> > Thank you. >> > >> > On 27 March 2015 at 13:27, Sathwik B P <sathwik...@gmail.com> wrote: >> > >> > > Hi Sudharma, >> > > >> > > It's a good proposal :) >> > > >> > > I have one piece information to provide you. As you must be aware that >> > ODE >> > > stores it's deployment artifacts on a file system. >> > > In a cluster environment this file system should either be accessible >> to >> > > all the nodes or we need a distributed/replicated file system. >> > > >> > > Though i would recommend using a replicated file system more than a >> > shared >> > > file system. A shared file system would either be on a separate box on >> > the >> > > cluster and its single point of failure. >> > > By using a replicated file system store we can provide maximum cluster >> > > availability. >> > > >> > > What do you think Tammo. >> > > >> > > regards, >> > > sathwik >> > > >> > > On Fri, Mar 27, 2015 at 10:16 AM, sudharma subasinghe < >> > > suba...@cse.mrt.ac.lk >> > > > wrote: >> > > >> > > > Hi Tammo, >> > > > >> > > > Thank you for the feedback. I'll complete the proposal as your >> comment. >> > > > >> > > > Thank you. >> > > > >> > > > On 27 March 2015 at 04:45, Tammo van Lessen <tvanles...@gmail.com> >> > > wrote: >> > > > >> > > > > Hi Sudharma, >> > > > > >> > > > > very good proposal. A minor comment on the paragraph about the >> > > conflicts >> > > > > during deployment: There is already a marker file for deployed >> > > processes, >> > > > > so it wont happen that a node tries to deploy a process that is >> > already >> > > > > known to the database, even it has changed. The race condition >> that >> > > needs >> > > > > to be avoided by the clustering implementation is that two node >> take >> > up >> > > > > newly added processes at the very same time. >> > > > > >> > > > > Could you please add a short paragraph about your availabilty and >> how >> > > > much >> > > > > time you can commit for GSOC this summer? I'd love to also see a >> > > > > deliverable that allows us to easily test ODE in a clustered >> setup, >> > > e.g. >> > > > > using docker-compose. Would that fit into the "Testing and >> develop" >> > > time >> > > > > slot? >> > > > > >> > > > > Thanks, >> > > > > Tammo >> > > > > >> > > > > On Thu, Mar 26, 2015 at 5:26 PM, sudharma subasinghe < >> > > > > suba...@cse.mrt.ac.lk> >> > > > > wrote: >> > > > > >> > > > > > Hi Tammo, >> > > > > > >> > > > > > I drafted the proposal.This is the link for Google doc. It >> would be >> > > > great >> > > > > > if you can give a feedback on this. >> > > > > > >> > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> https://docs.google.com/document/d/1H7cLekwUr2juNX2DFzgqq5FEkHZPDtFkHKz0aLWiB2k/edit?usp=sharing >> > > > > > >> > > > > > Thank you. >> > > > > > >> > > > > > On 26 March 2015 at 21:35, Tammo van Lessen < >> tvanles...@gmail.com> >> > > > > wrote: >> > > > > > >> > > > > > > Hi Sudharma, >> > > > > > > >> > > > > > > yes. Regarding 3) it is in particular the isolation of process >> > > > > instances. >> > > > > > > There must be a load balancer in front of ODE, and the lock >> is to >> > > > avoid >> > > > > > the >> > > > > > > case where node one is processing a process instance and node >> two >> > > > > > receives >> > > > > > > a message for the same process instance and starts processing >> as >> > > > well. >> > > > > > > >> > > > > > > Looking forward to your proposal. >> > > > > > > >> > > > > > > Thanks, >> > > > > > > Tammo >> > > > > > > >> > > > > > > On Thu, Mar 26, 2015 at 4:52 PM, sudharma subasinghe < >> > > > > > > suba...@cse.mrt.ac.lk> >> > > > > > > wrote: >> > > > > > > >> > > > > > > > Hi Tammo, >> > > > > > > > >> > > > > > > > Thank you for reply. I went through the thread in jira >> which is >> > > > > > referring >> > > > > > > > this issue. I extracted few ideas from there. As I think >> > > > > implementation >> > > > > > > > should contain following points. >> > > > > > > > >> > > > > > > > 1) Support cluster awareness in deploying phase >> > > > > > > > 2) Improve the ODE's scheduler >> > > > > > > > 3) Implement a distributed lock to avoid concurrent >> > modification >> > > in >> > > > > > > cluster >> > > > > > > > >> > > > > > > > I am drafting a proposal including those points. I'll send >> it >> > for >> > > > > your >> > > > > > > > review soon. >> > > > > > > > >> > > > > > > > Thank you. >> > > > > > > > >> > > > > > > > On 26 March 2015 at 18:49, Tammo van Lessen < >> > > tvanles...@gmail.com> >> > > > > > > wrote: >> > > > > > > > >> > > > > > > > > Hi, >> > > > > > > > > >> > > > > > > > > ODE is originally designed to be run in a clustered >> fashion, >> > > > > however >> > > > > > it >> > > > > > > > has >> > > > > > > > > never been implemented in ODE. The goal would be to >> > integrate a >> > > > > > > > clustering >> > > > > > > > > framework like Hazelcast in order to add this >> functionality. >> > > > > > > > > >> > > > > > > > > The main integration points are the ODE scheduler and the >> > > process >> > > > > > > store. >> > > > > > > > > The scheduler is already capable to handle several nodes >> but >> > > > needs >> > > > > > the >> > > > > > > > > integration to know if cluster nodes are still present. >> The >> > API >> > > > > > > currently >> > > > > > > > > anticipates a heart beat model, with Hazelcast this might >> > need >> > > to >> > > > > be >> > > > > > > > > changed or adapted. The other part is the process store, >> > which >> > > > > > > implements >> > > > > > > > > the (hot-)deployment that is filesystem based. Under the >> > > > assumption >> > > > > > > that >> > > > > > > > a >> > > > > > > > > distributed filesystem is used, the cluster implementation >> > > needs >> > > > to >> > > > > > > take >> > > > > > > > > care that only one single node (the master) is taking >> care of >> > > new >> > > > > > > > > deployments, just in order to avoid multiple nodes doing >> the >> > > same >> > > > > > thing >> > > > > > > > in >> > > > > > > > > parallel. Then there is also one lock that needs to be >> > > > distributed, >> > > > > > > > either >> > > > > > > > > using database locks or a distributed lock (e.g. from >> > > hazelcast). >> > > > > > > > > >> > > > > > > > > Addtional requirements would be the integration with our >> > config >> > > > > file >> > > > > > so >> > > > > > > > > that a cluster (and its nodes) can be configured as well >> as >> > > some >> > > > > > basic >> > > > > > > > > monitoring. Also a basic test environment, e.g. based on >> > Docker >> > > > > would >> > > > > > > be >> > > > > > > > > very good to verify the approach. >> > > > > > > > > >> > > > > > > > > So I guess the steps would be: 1. Research to find a >> suitable >> > > > > cluster >> > > > > > > > > framework (I think Hazelcast would be a good fit) and >> getting >> > > > > > familiar >> > > > > > > > with >> > > > > > > > > ODE and this framework. 2. Identify the integration >> points in >> > > > ODE. >> > > > > 3. >> > > > > > > > Based >> > > > > > > > > on the chosen framework, develop approaches to serve these >> > > > > > integration >> > > > > > > > > points (We need leader election for the store, a >> distributed >> > > lock >> > > > > for >> > > > > > > the >> > > > > > > > > runtime and the information whether nodes are joining or >> > > leaving >> > > > > the >> > > > > > > > > cluster to be able to reschedule tasks from lost nodes) >> along >> > > > with >> > > > > a >> > > > > > > > > distributed setup to test. 4. Develop and test, 5. Test. >> > > > > > > > > >> > > > > > > > > For questions regarding the integration points please feel >> > free >> > > > to >> > > > > > ask >> > > > > > > > > here, I can give you some pointers. >> > > > > > > > > >> > > > > > > > > HTH, >> > > > > > > > > Tammo >> > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> > > > > > > > > On Tue, Mar 24, 2015 at 5:03 AM, sudharma subasinghe < >> > > > > > > > > suba...@cse.mrt.ac.lk> >> > > > > > > > > wrote: >> > > > > > > > > >> > > > > > > > > > Hi, >> > > > > > > > > > >> > > > > > > > > > I am interested in this project as I have enough basic >> > > > knowledge >> > > > > > > about >> > > > > > > > > > apache axis2, apache ODE, WS-BPEL and I am currently >> > studying >> > > > > > those. >> > > > > > > > So I >> > > > > > > > > > appreciate if you can provide more details on project. >> > > > > > > > > > Thank you >> > > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> > > > > > > > > >> > > > > > > > > -- >> > > > > > > > > Tammo van Lessen - http://www.taval.de >> > > > > > > > > >> > > > > > > > >> > > > > > > >> > > > > > > >> > > > > > > >> > > > > > > -- >> > > > > > > Tammo van Lessen - http://www.taval.de >> > > > > > > >> > > > > > >> > > > > >> > > > > >> > > > > >> > > > > -- >> > > > > Tammo van Lessen - http://www.taval.de >> > > > > >> > > > >> > > >> > >> > >