Hi,
The way its was implemented is to clone the artifact repository ( a.k.a S2
Git repo) to a fixed directory (there is one for each tenant) every time
when there is a need to deploy an artifact.
However, suppose a situation users of a tenant trying to deploy multiple
artifacts in parallel.
What we observed during such scenario is that none of the artifacts get
committed (and pushed) to git repository. This means artifact deployment
fails for everyone of that tenant.
The most easiest may of fixing this is
1. atomically create an temporary directory
2. clone the git repository onto that directory
3. copy the new artifact to correct location ( - possibly replacing
existing artifact with the same name)
4. Git add -> git commit -> git push.
5. Delete the temporary directory.
Now this fix is already done (and some other bugs) with svn revision:
189685 and relevant issue is https://wso2.org/jira/browse/APPFAC-1630
HOWEVER, This will introduce a major problem because it always *clones the
entire git repository* each time an artifact is deployed. Given that in a
real world scenario this git repository can be comparatively big ( with
lots of artifacts already existing in the git repo).
One possible way to fix this problem would be to *serialize each deployment
request using a queue* ( which exists in Appfactory plugin we wrote for
jenkins). and switch back to keeping a fixed location to clone the git
repository ( - the previous scheme)
Couple of things we need to take into account when we do this:
1. Artifacts deployed by a tenant can end up in different runtimes.
E.g. Esb artifacts goes to ESB runtime while webapps, jaxrs, goes to
AS.
So we need to maintain directory per runtime (or application type).
Otherwise we will end up having web applications committed to a git
repository meant for ESB!
E.g. <tempdir>/war , <tempdir>/esb/, <tempdir>/php
2. Code surrounding Appfactory-Plugin can needs to be
re-factored/Improved.
3. Re-visit the logic surrounding the way we deploy ESB artifacts to
figure out are there any additional file types that needs to deploy (- and
there location). Currently it assumes only xml files.
Any thoughts?
--
Ramith Jayasinghe
Technical Lead
WSO2 Inc., http://wso2.com
lean.enterprise.middleware
E: [email protected]
_______________________________________________
Architecture mailing list
[email protected]
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture