[ 
https://issues.apache.org/jira/browse/IGNITE-2560?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=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)

Reply via email to