[ 
https://issues.apache.org/jira/browse/IGNITE-6803?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16698922#comment-16698922
 ] 

Anton Kalashnikov commented on IGNITE-6803:
-------------------------------------------

I have saw changes but I didn't catch what was fixed. Reproducer works the same 
as before and after the changes. I see two reasons of it: It was fixed in other 
task because this task is too old or reproducer is incorrect.
If you just want to merge this reproducer I actually do not mind with it but I 
have some notes:
# Please actualize java doc for all tasks(LocalUseServiceTask, 
GarUseServiceTask, GarDelegatingTask) because it is copy-past now from 
GarHelloWorldTask.
# Replace assert by assertTrue or something like this.
# Move stopAllGrids() to afterTest method
# Remove or explain using of delayOnNewOrUpdatedFile

> UriDeploymentSpi affects execution of other tasks, including Ignite internals
> -----------------------------------------------------------------------------
>
>                 Key: IGNITE-6803
>                 URL: https://issues.apache.org/jira/browse/IGNITE-6803
>             Project: Ignite
>          Issue Type: Bug
>    Affects Versions: 2.2
>            Reporter: Ilya Kasnacheev
>            Assignee: Alexey Goncharuk
>            Priority: Major
>             Fix For: 2.8
>
>         Attachments: tc.png
>
>
> From the maillist:
> http://apache-ignite-users.70518.x6.nabble.com/Code-deployment-throught-UriDeploumentSpi-tt17807.html
> In our project we need to deploy custom compute tasks into cluster without 
> cluster restart and p2p class loading.  
> I try to use org.apache.ignite.spi.deployment.uri.UriDeploumentSpi for that 
> purpose, but I have a problem.
> I have simple Ignite Service and Ignite Compute Task which use it throught 
> @ServiceResource.
> This ComputeTask located into .gar file which was deployed via 
> UriDeploumentSpi.
> If I have service implementation on each node(node singleton service) then it 
> works great. 
> But if I deploy service as a cluster singleton then task executes correctly 
> only on node with this service. 
> On other nodes @ServiceResource returns ServiceProxy that throws exception on 
> service remote method invokation (lambda with service call cannot be 
> deployed):
> {code}
> SEVERE: Failed to execute job 
> [jobId=68a96d76f51-7919c34c-9a48-4068-bcd6-70dad5595e86, 
> ses=GridJobSessionImpl [ses=GridTaskSessionImpl [taskName=task-one, 
> dep=GridDeployment [ts=1509275650885, depMode=SHARED, 
> clsLdr=GridUriDeploymentClassLoader 
> [urls=[file:/C:/IdeaProjects/dmp_code_deployment/test/out/deployment/gg.uri.deployment.tmp/428ec712-e6d0-4eab-97f9-ce58d7b3e0f5/dirzip_task-one6814855127293591501.gar/]],
>  clsLdrId=7eb15d76f51-428ec712-e6d0-4eab-97f9-ce58d7b3e0f5, userVer=0, 
> loc=true, sampleClsName=com.gridfore.tfedyanin.deploy.Task1, 
> pendingUndeploy=false, undeployed=false, usage=1], 
> taskClsName=com.gridfore.tfedyanin.deploy.Task1, 
> sesId=38a96d76f51-7919c34c-9a48-4068-bcd6-70dad5595e86, 
> startTime=1509275650601, endTime=9223372036854775807, 
> taskNodeId=7919c34c-9a48-4068-bcd6-70dad5595e86, 
> clsLdr=GridUriDeploymentClassLoader 
> [urls=[file:/C:/IdeaProjects/dmp_code_deployment/test/out/deployment/gg.uri.deployment.tmp/428ec712-e6d0-4eab-97f9-ce58d7b3e0f5/dirzip_task-one6814855127293591501.gar/]],
>  closed=false, cpSpi=null, failSpi=null, loadSpi=null, usage=1, 
> fullSup=false, internal=false, subjId=7919c34c-9a48-4068-bcd6-70dad5595e86, 
> mapFut=IgniteFuture [orig=GridFutureAdapter [ignoreInterrupts=false, 
> state=INIT, res=null, hash=1254296516]], execName=null], 
> jobId=68a96d76f51-7919c34c-9a48-4068-bcd6-70dad5595e86]]
> class org.apache.ignite.IgniteDeploymentException: Failed to auto-deploy task 
> (was task (re|un)deployed?): class 
> org.apache.ignite.internal.processors.service.GridServiceProcessor$ServiceTopologyCallable
> {code}
> Problem works as follows:
> - Ignite has to determine which node has deployed service, by name.
> - Ignite has to send ServiceTopologyCallable task.
> - Ignite tries to deploy ServiceTopologyCallable task using UriDeploymentSpi.
> - UriDeploymentSpi doesn't have it obviously, but it also tries to fallback 
> towards "CLASS" loading from local ClassLoader
> - Which fails because it is told that ServiceTopologyCallable comes from its 
> classloader and not from the local one!
> So I'm at loss where it should be fixed properly. It is also sad that we are 
> using all that deploy pipeline to handle IgniteInternal tasks, but there 
> obviously are non-internal local tasks which might be affected by same 
> problem.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to