[jira] [Comment Edited] (IGNITE-2560) Support injections in entry processors

2016-08-23 Thread Andrew Mashenkov (JIRA)

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

Andrew Mashenkov edited comment on IGNITE-2560 at 8/23/16 3:01 PM:
---

Hi, Semen
{quote}
I can't find test for invokeAll(Map> map, Object... args)', could you please point me where it was added?
{quote}
See class _GridCacheAbstractFullApiSelfTest_. Method 
_testTransformResourceInjection_ calls _doTransformResourceInjection_ with 
cache and cache-with-async. Method _doTransformResourceInjection_ make checks 
with _invoke_, _invokeAll_, _invokeAll (Map ...)_.

{quote}
 in GridLocalAtomicCache let's do not use wrapper at all, instead just call 
GridResourceProcessor.inject on entry processor
{quote}
Please, take a look at method _invokeAllAsync_ in GridLocalAtomicCache class. 
Method signature tells it throws *no* exceptions, but 
_resourceProcessor.inject(..)_ does. Whether exception is being processed 
correctly?


was (Author: amashenkov):
Hi, Semen
{quote}
I can't find test for invokeAll(Map> map, Object... args)', could you please point me where it was added?
{quote}
See class _GridCacheAbstractFullApiSelfTest_. Method 
_testTransformResourceInjection_ calls _doTransformResourceInjection_ with 
cache and cache-with-async. Method _doTransformResourceInjection_ make checks 
with _invoke_, _invokeAll_, _invokeAll (Map ...)_.

{quote}
 in GridLocalAtomicCache let's do not use wrapper at all, instead just call 
GridResourceProcessor.inject on entry processor
{quote}
Please, take a look on method _invokeAllAsync_ in GridLocalAtomicCache class. 
Method signature tells it throws *no* exceptions, but 
_resourceProcessor.inject(..)_ does. Whether exception is being processed 
correctly?

> Support injections in entry processors
> --
>
> Key: IGNITE-2560
> URL: https://issues.apache.org/jira/browse/IGNITE-2560
> Project: Ignite
>  Issue Type: Improvement
>  Components: cache
>Reporter: Valentin Kulichenko
>Assignee: Andrew Mashenkov
> Fix For: 1.8
>
>
> Currently resources are not injected in entry processor, which is not 
> consistent with other functionality, like closures, jobs, listeners, etc.
> To avoid performance degradation we should introspect the class only once, 
> cache this information and do not try to inject if there are no annotations.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (IGNITE-2560) Support injections in entry processors

2016-02-24 Thread Semen Boikov (JIRA)

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

Semen Boikov edited comment on IGNITE-2560 at 2/24/16 8:14 AM:
---

Reviewed, there are some problems:
- for me all new tests fail with error:
{noformat}
Caused by: java.lang.IllegalArgumentException: Unwrapping to class is not 
supported: class org.apache.ignite.internal.processors.cache.GridCacheContext
at 
org.apache.ignite.internal.processors.cache.CacheLazyEntry.unwrap(CacheLazyEntry.java:146)
at 
org.apache.ignite.internal.processors.cache.CacheInvokeEntry.unwrap(CacheInvokeEntry.java:131)
at 
org.apache.ignite.internal.processors.cache.EntryProcessorResourceInjectorProxy.process(EntryProcessorResourceInjectorProxy.java:68)
at 
org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2186)
{noformat}
- can not find changes for local/atomic cache
- I think it makes sense to add flag 'entryProcessorAnnotations' in 
GridResourceIoc.ClassDescriptor to avoid extra checks on each 'invoke' call 
(and remove method 'isAnnotationsPresent' you added)
- need to add tests for both methods 'invokeAll(Map map)' and 'invokeAll(Set 
keys, EntryProcessor entryProcessor)' and check in tests all supported 
annotations
- need test all transaction types and not only case when tx is rolled back, 
also for tx cache need check case without starting explicit transaction (just 
'cache.invoke' outside of IgniteTransactions.start()/commit)
- please change exception thrown by EntryProcessorResourceInjectorProxy: 'throw 
new RuntimeException(e)' -> 'throw new IgniteException("Failed to inject entry 
processor resources', e);'
- inside GridCacheMapEntry.innerGet0 and innerUpdate entry processor class name 
is passed to EVT_CACHE_OBJECT_READ, when proxy is used then original entry 
processor class name is lost, need to fix this and add test



was (Author: sboikov):
Reviewed, there are some problems:
- for me all new tests fail with error:
{noformat}
Caused by: java.lang.IllegalArgumentException: Unwrapping to class is not 
supported: class org.apache.ignite.internal.processors.cache.GridCacheContext
at 
org.apache.ignite.internal.processors.cache.CacheLazyEntry.unwrap(CacheLazyEntry.java:146)
at 
org.apache.ignite.internal.processors.cache.CacheInvokeEntry.unwrap(CacheInvokeEntry.java:131)
at 
org.apache.ignite.internal.processors.cache.EntryProcessorResourceInjectorProxy.process(EntryProcessorResourceInjectorProxy.java:68)
at 
org.apache.ignite.internal.processors.cache.GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:2186)
{noformat}
- can not find changes for local/atomic cache
- I think it makes sense to add flag 'entryProcessorAnnotations' in 
GridResourceIoc.ClassDescriptor to avoid extra checks on each 'invoke' call 
(and remove method 'isAnnotationsPresent' you added)
- need to add tests for both methods 'invokeAll(Map map)' and 'invokeAll(Set 
keys, EntryProcessor entryProcessor)' and check in tests all supported 
annotations
- need test all transaction types and not only case when tx is rolled back, 
also for tx cache need check case without starting explicit transaction (just 
'cache.invoke' outside of IgniteTransactions.start()/commit)
- please change exception thrown by EntryProcessorResourceInjectorProxy: 'throw 
new RuntimeException(e)' -> 'throw new IgniteException("Failed to inject entry 
processor resources', e);'


> Support injections in entry processors
> --
>
> Key: IGNITE-2560
> URL: https://issues.apache.org/jira/browse/IGNITE-2560
> Project: Ignite
>  Issue Type: Improvement
>  Components: cache
>Reporter: Valentin Kulichenko
>Assignee: Alexey Stelmak
> Fix For: 1.6
>
>
> Currently resources are not injected in entry processor, which is not 
> consistent with other functionality, like closures, jobs, listeners, etc.
> To avoid performance degradation we should introspect the class only once, 
> cache this information and do not try to inject if there are no annotations.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)