A solution to this came to my mind just now. We can handle this by making
the DeploymentInterceptor aware of the DeploymentSynchronizer.

If the DeploymentInterceptor detects that a newly added artifact has been
added through an update done by the DepSync, it should refrain from
creating the metafiles. This is because, the assumption is there will be
corresponding metafiles for the newly added artifacts will also exist. If
the DeploymentInterceptor detects that the newly added artifact has been
created locally, and not yet committed by the DepSync, then it can go ahead
with creating local metafiles.

On Mon, Apr 23, 2012 at 12:13 PM, Kasun Gajasinghe <[email protected]> wrote:

>
> Hi,
> I've been looking at how the service metadata files propagate to other
> cluster nodes. I'm using SVN-based depsync. But I've faced to an issue.
> Here, what happens is that Deployment Synchronizer propagates the service
> archives to the other nodes. And then DeploymentInterceptor creates service
> metadata files in the master node. After that slave nodes' DI also creates
> service metafiles by themselves. This causes an issue when one node
> committed these metadata files, and another tried to checkout it because
> those have unversioned metadata files in their working copy.
>
> Following is the error I get for one metadata file named Version.xml.
>
> [2012-04-23 11:53:52,731] ERROR
> {org.wso2.carbon.deployment.synchronizer.subversion.SVNBasedArtifactRepository}
> -  Error while checking out or updating artifacts from the SVN repository
> org.tigris.subversion.svnclientadapter.SVNClientException:
> org.tigris.subversion.svnclientadapter.commandline.CmdLineException: svn:
> Failed to add file
> '/wso2/cluster-test/cluster-manager/wso2as-4.5.0-SNAPSHOT/repository/deployment/server/servicemetafiles/Version.xml':
> *an unversioned file of the same name already exists*
>
> at
> org.tigris.subversion.svnclientadapter.SVNClientException.wrapException(SVNClientException.java:93)
> at
> org.tigris.subversion.svnclientadapter.commandline.CmdLineClientAdapter.update(CmdLineClientAdapter.java:596)
>  at
> org.wso2.carbon.deployment.synchronizer.subversion.SVNBasedArtifactRepository.checkout(SVNBasedArtifactRepository.java:231)
> at
> org.wso2.carbon.deployment.synchronizer.internal.DeploymentSynchronizer.checkout(DeploymentSynchronizer.java:144)
>  at
> org.wso2.carbon.deployment.synchronizer.internal.DeploymentSynchronizerServiceImpl.update(DeploymentSynchronizerServiceImpl.java:59)
> at
> org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.doDeploymentSynchronization(CarbonDeploymentSchedulerTask.java:101)
>  at
> org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.run(CarbonDeploymentSchedulerTask.java:70)
> at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
>  at
> java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
> at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
>  at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180)
>  at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>  at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> at java.lang.Thread.run(Thread.java:662)
> Caused by:
> org.tigris.subversion.svnclientadapter.commandline.CmdLineException: svn:
> Failed to add file
> '/wso2/cluster-test/cluster-manager/wso2as-4.5.0-SNAPSHOT/repository/deployment/server/servicemetafiles/Version.xml':
> an unversioned file of the same name already exists
>
> at
> org.tigris.subversion.svnclientadapter.commandline.CommandLine.execString(CommandLine.java:239)
> at
> org.tigris.subversion.svnclientadapter.commandline.SvnCommandLine.update(SvnCommandLine.java:802)
>  at
> org.tigris.subversion.svnclientadapter.commandline.CmdLineClientAdapter.update(CmdLineClientAdapter.java:593)
> ... 14 more
> [2012-04-23 11:53:52,732] ERROR
> {org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask} -
>  Deployment synchronization for tenant 0 failed
> java.lang.RuntimeException:
> org.wso2.carbon.deployment.synchronizer.DeploymentSynchronizerException:
> Error while checking out or updating artifacts from the SVN repository
>  at
> org.wso2.carbon.deployment.synchronizer.internal.DeploymentSynchronizerServiceImpl.update(DeploymentSynchronizerServiceImpl.java:62)
> at
> org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.doDeploymentSynchronization(CarbonDeploymentSchedulerTask.java:101)
>  at
> org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.run(CarbonDeploymentSchedulerTask.java:70)
> at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
>  at
> java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
> at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
>  at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:180)
>  at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:204)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>  at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> at java.lang.Thread.run(Thread.java:662)
> Caused by:
> org.wso2.carbon.deployment.synchronizer.DeploymentSynchronizerException:
> Error while checking out or updating artifacts from the SVN repository
> at
> org.wso2.carbon.deployment.synchronizer.subversion.SVNBasedArtifactRepository.handleException(SVNBasedArtifactRepository.java:318)
>  at
> org.wso2.carbon.deployment.synchronizer.subversion.SVNBasedArtifactRepository.checkout(SVNBasedArtifactRepository.java:240)
> at
> org.wso2.carbon.deployment.synchronizer.internal.DeploymentSynchronizer.checkout(DeploymentSynchronizer.java:144)
>  at
> org.wso2.carbon.deployment.synchronizer.internal.DeploymentSynchronizerServiceImpl.update(DeploymentSynchronizerServiceImpl.java:59)
> ... 11 more
> Caused by: org.tigris.subversion.svnclientadapter.SVNClientException:
> org.tigris.subversion.svnclientadapter.commandline.CmdLineException: svn:
> Failed to add file
> '/wso2/cluster-test/cluster-manager/wso2as-4.5.0-SNAPSHOT/repository/deployment/server/servicemetafiles/Version.xml':
> an unversioned file of the same name already exists
>
> at
> org.tigris.subversion.svnclientadapter.SVNClientException.wrapException(SVNClientException.java:93)
> at
> org.tigris.subversion.svnclientadapter.commandline.CmdLineClientAdapter.update(CmdLineClientAdapter.java:596)
>  at
> org.wso2.carbon.deployment.synchronizer.subversion.SVNBasedArtifactRepository.checkout(SVNBasedArtifactRepository.java:231)
> ... 13 more
> Caused by:
> org.tigris.subversion.svnclientadapter.commandline.CmdLineException: svn:
> Failed to add file
> '/wso2/cluster-test/cluster-manager/wso2as-4.5.0-SNAPSHOT/repository/deployment/server/servicemetafiles/Version.xml':
> an unversioned file of the same name already exists
>
> at
> org.tigris.subversion.svnclientadapter.commandline.CommandLine.execString(CommandLine.java:239)
> at
> org.tigris.subversion.svnclientadapter.commandline.SvnCommandLine.update(SvnCommandLine.java:802)
>  at
> org.tigris.subversion.svnclientadapter.commandline.CmdLineClientAdapter.update(CmdLineClientAdapter.java:593)
> ... 14 more
>
>
> --
> *Kasun Gajasinghe*
> Software Engineer; WSO2 Inc.; http://wso2.com
>
> ,
> *email: **kasung AT spamfree wso2.com** cell: **+94 (77) 678-0813*
> *linked-in: *http://lk.linkedin.com/in/gajasinghe*
> *
>  *blog: **http://blog.kasunbg.org* <http://blog.kasunbg.org>
>
> *
> twitter: **http://twitter.com/kasunbg* <http://twitter.com/kasunbg>
>
> *
> *
>
>


-- 
*Afkham Azeez*
Director of Architecture; WSO2, Inc.; http://wso2.com
Member; Apache Software Foundation; http://www.apache.org/
* <http://www.apache.org/>**
email: **[email protected]* <[email protected]>* cell: +94 77 3320919
blog: **http://blog.afkham.org* <http://blog.afkham.org>*
twitter: **http://twitter.com/afkham_azeez*<http://twitter.com/afkham_azeez>
*
linked-in: **http://lk.linkedin.com/in/afkhamazeez*
*
*
*Lean . Enterprise . Middleware*
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to