ignite-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Semen Boikov (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (IGNITE-2560) Support injections in entry processors
Date Wed, 24 Feb 2016 08:15:18 GMT

    [ 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)

Mime
View raw message