[
https://issues.apache.org/jira/browse/IGNITE-5303?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Denis Magda updated IGNITE-5303:
Priority: Critical (was: Major)
> WebConsole configuration wizard doesn't properly handle multiple RDBMS
> --
>
> Key: IGNITE-5303
> URL: https://issues.apache.org/jira/browse/IGNITE-5303
> Project: Ignite
> Issue Type: Task
>Reporter: Denis Magda
>Assignee: Alexey Kuznetsov
>Priority: Critical
>
> Imagine a use case when cache_A needs to persist data in database_A while
> cache_B has to be connected with database_B as a part of a single application.
> WebConsole allows importing a schema from both databases but:
> * in a final Spring XML configuration there will be only one data source bean
> defined.
> * both cache_A and cache_B will use the data source of a database that was
> used last for the schema importing.
> This is what we need to do:
> * Spring XML and Java configurations must include data source beans for every
> database that was used for the schema importing.
> * security.properties file must contain a connection URL and credentials for
> every database.
> * we need to support databases of different and similar vendors. For
> instance, both database_A and database_B can be MySQL ones or database_B can
> be based on PostgreSQL.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
Denis Magda created IGNITE-5303:
---
Summary: WebConsole configuration wizard doesn't properly handle
multiple RDBMS
Key: IGNITE-5303
URL: https://issues.apache.org/jira/browse/IGNITE-5303
Project: Ignite
Issue Type: Task
Reporter: Denis Magda
Assignee: Alexey Kuznetsov
Imagine a use case when cache_A needs to persist data in database_A while
cache_B has to be connected with database_B as a part of a single application.
WebConsole allows importing a schema from both databases but:
* in a final Spring XML configuration there will be only one data source bean
defined.
* both cache_A and cache_B will use the data source of a database that was used
last for the schema importing.
This is what we need to do:
* Spring XML and Java configurations must include data source beans for every
database that was used for the schema importing.
* security.properties file must contain a connection URL and credentials for
every database.
* we need to support databases of different and similar vendors. For instance,
both database_A and database_B can be MySQL ones or database_B can be based on
PostgreSQL.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-5295?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Denis Magda closed IGNITE-5295.
---
> NPE when Persistent Store is used and Memory Configuration is missing
> -
>
> Key: IGNITE-5295
> URL: https://issues.apache.org/jira/browse/IGNITE-5295
> Project: Ignite
> Issue Type: Bug
>Reporter: Denis Magda
>Assignee: Sergey Chugunov
>Priority: Blocker
> Fix For: 2.1
>
>
> Just added the first Persistent Store example to the branch that fosters the
> donation:
> https://github.com/apache/ignite/tree/ignite-5267/examples/src/main/java/org/apache/ignite/examples/persistentstore
> However, the example fails with an NPE if a MemoryConfiguration is not
> defined explicitly.
> {code}
> [17:55:39,334][ERROR][main][IgniteKernal] Exception during start processors,
> node will be stopped and close connections
> class org.apache.ignite.IgniteCheckedException: Failed to start processor:
> GridProcessorAdapter []
> at
> org.apache.ignite.internal.IgniteKernal.startProcessor(IgniteKernal.java:1766)
> at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:925)
> at
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1895)
> at
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1647)
> at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1075)
> at
> org.apache.ignite.internal.IgnitionEx.startConfigurations(IgnitionEx.java:993)
> at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:879)
> at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:778)
> at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:648)
> at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:617)
> at org.apache.ignite.Ignition.start(Ignition.java:347)
> at
> org.apache.ignite.examples.persistentstore.PersistentStoreExample.main(PersistentStoreExample.java:56)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
> Caused by: class org.apache.ignite.IgniteCheckedException: Failed to create
> Ignite component (consider adding ignite-pds module to classpath)
> [component=DATABASE_MANAGER,
> cls=org.apache.ignite.internal.processors.cache.database.GridCacheDatabaseSharedManager]
> at
> org.apache.ignite.internal.IgniteComponentType.componentException(IgniteComponentType.java:335)
> at
> org.apache.ignite.internal.IgniteComponentType.create0(IgniteComponentType.java:311)
> at
> org.apache.ignite.internal.IgniteComponentType.create(IgniteComponentType.java:186)
> at
> org.apache.ignite.internal.processors.cache.GridCacheProcessor.createSharedContext(GridCacheProcessor.java:2078)
> at
> org.apache.ignite.internal.processors.cache.GridCacheProcessor.start(GridCacheProcessor.java:632)
> at
> org.apache.ignite.internal.IgniteKernal.startProcessor(IgniteKernal.java:1763)
> ... 16 more
> Caused by: java.lang.reflect.InvocationTargetException
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
> at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
> at
> org.apache.ignite.internal.IgniteComponentType.create0(IgniteComponentType.java:307)
> ... 20 more
> Caused by: java.lang.NullPointerException
> at
> org.apache.ignite.internal.processors.cache.database.GridCacheDatabaseSharedManager.(GridCacheDatabaseSharedManager.java:284)
> ... 25 more
> [17:55:39,338][ERROR][main][IgniteKernal] Got exception while starting (will
> rollback startup routine).
> class org.apache.ignite.IgniteCheckedException: Failed to start processor:
> GridProcessorAdapter []
> at
> org.apache.ignite.internal.IgniteKernal.startProcessor(IgniteKernal.java:1766)
> at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:925)
> at
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1895)
> at
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1647)
> at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1075)
> at
>
[
https://issues.apache.org/jira/browse/IGNITE-5295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026876#comment-16026876
]
Denis Magda commented on IGNITE-5295:
-
Thanks, merged to ignite-5267.
> NPE when Persistent Store is used and Memory Configuration is missing
> -
>
> Key: IGNITE-5295
> URL: https://issues.apache.org/jira/browse/IGNITE-5295
> Project: Ignite
> Issue Type: Bug
>Reporter: Denis Magda
>Assignee: Sergey Chugunov
>Priority: Blocker
> Fix For: 2.1
>
>
> Just added the first Persistent Store example to the branch that fosters the
> donation:
> https://github.com/apache/ignite/tree/ignite-5267/examples/src/main/java/org/apache/ignite/examples/persistentstore
> However, the example fails with an NPE if a MemoryConfiguration is not
> defined explicitly.
> {code}
> [17:55:39,334][ERROR][main][IgniteKernal] Exception during start processors,
> node will be stopped and close connections
> class org.apache.ignite.IgniteCheckedException: Failed to start processor:
> GridProcessorAdapter []
> at
> org.apache.ignite.internal.IgniteKernal.startProcessor(IgniteKernal.java:1766)
> at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:925)
> at
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1895)
> at
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1647)
> at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1075)
> at
> org.apache.ignite.internal.IgnitionEx.startConfigurations(IgnitionEx.java:993)
> at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:879)
> at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:778)
> at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:648)
> at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:617)
> at org.apache.ignite.Ignition.start(Ignition.java:347)
> at
> org.apache.ignite.examples.persistentstore.PersistentStoreExample.main(PersistentStoreExample.java:56)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
> Caused by: class org.apache.ignite.IgniteCheckedException: Failed to create
> Ignite component (consider adding ignite-pds module to classpath)
> [component=DATABASE_MANAGER,
> cls=org.apache.ignite.internal.processors.cache.database.GridCacheDatabaseSharedManager]
> at
> org.apache.ignite.internal.IgniteComponentType.componentException(IgniteComponentType.java:335)
> at
> org.apache.ignite.internal.IgniteComponentType.create0(IgniteComponentType.java:311)
> at
> org.apache.ignite.internal.IgniteComponentType.create(IgniteComponentType.java:186)
> at
> org.apache.ignite.internal.processors.cache.GridCacheProcessor.createSharedContext(GridCacheProcessor.java:2078)
> at
> org.apache.ignite.internal.processors.cache.GridCacheProcessor.start(GridCacheProcessor.java:632)
> at
> org.apache.ignite.internal.IgniteKernal.startProcessor(IgniteKernal.java:1763)
> ... 16 more
> Caused by: java.lang.reflect.InvocationTargetException
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
> at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
> at
> org.apache.ignite.internal.IgniteComponentType.create0(IgniteComponentType.java:307)
> ... 20 more
> Caused by: java.lang.NullPointerException
> at
> org.apache.ignite.internal.processors.cache.database.GridCacheDatabaseSharedManager.(GridCacheDatabaseSharedManager.java:284)
> ... 25 more
> [17:55:39,338][ERROR][main][IgniteKernal] Got exception while starting (will
> rollback startup routine).
> class org.apache.ignite.IgniteCheckedException: Failed to start processor:
> GridProcessorAdapter []
> at
> org.apache.ignite.internal.IgniteKernal.startProcessor(IgniteKernal.java:1766)
> at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:925)
> at
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1895)
> at
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1647)
> at
[
https://issues.apache.org/jira/browse/IGNITE-5294?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026835#comment-16026835
]
Denis Magda commented on IGNITE-5294:
-
The Persistent Store is almost completed. Only the checkpointing part is left:
https://apacheignite.readme.io/v2.0/docs/distributed-persistent-store
> Document Persistent Store
> -
>
> Key: IGNITE-5294
> URL: https://issues.apache.org/jira/browse/IGNITE-5294
> Project: Ignite
> Issue Type: Sub-task
>Reporter: Denis Magda
>Assignee: Denis Magda
> Fix For: 2.1
>
>
> Document the Persistent Store. Use these wiki pages as reference:
> https://cwiki.apache.org/confluence/display/IGNITE/Persistent+Store+Overview
> https://cwiki.apache.org/confluence/display/IGNITE/Persistent+Store+Internal+Design
> Pages to fill out or update:
> * Enhance the data loading page:
> https://apacheignite.readme.io/v2.0/docs/data-loading
> * Rework the existing persistent store page:
> https://apacheignite.readme.io/v2.0/docs/persistent-store
> * Create the page for the Ignite's distributed persistent store:
> https://apacheignite.readme.io/v2.0/docs/distributed-persistent-store
> * Create an overview page. Describe the difference between all the storages
> Ignite supports.
> * Add a link to Hadoop as a persistent store alternative.
> * Update the page memory documentation adding a paragraph about the
> persistent store: https://apacheignite.readme.io/v2.0/docs/page-memory
> * Update the eviction documentation telling more about the persistent store:
> https://apacheignite.readme.io/v2.0/docs/evictions
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-5097?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026571#comment-16026571
]
Igor Sapego commented on IGNITE-5097:
-
I mean only sizes of course.
> BinaryMarshaller should write ints in "varint" encoding where it makes sense
>
>
> Key: IGNITE-5097
> URL: https://issues.apache.org/jira/browse/IGNITE-5097
> Project: Ignite
> Issue Type: Task
> Components: general
>Affects Versions: 2.0
>Reporter: Vladimir Ozerov
>Assignee: Vyacheslav Daradur
> Labels: important, performance
> Fix For: 2.1
>
>
> There are a lot of places in the code where we write integers for some
> special purposes. Quite often their value will be vary small, so that
> applying "varint" format could save a lot of space at the cost of very low
> additional CPU overhead.
> Specifically:
> 1) Array/collection/map lengths
> 2) BigDecimal's (usually will save ~6 bytes)
> 3) Strings
> 4) Enum ordinals
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-5097?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026565#comment-16026565
]
Pavel Tupitsyn commented on IGNITE-5097:
[~isapego] I agree.
> primitive arrays
You mean array size only, or also values?
> BinaryMarshaller should write ints in "varint" encoding where it makes sense
>
>
> Key: IGNITE-5097
> URL: https://issues.apache.org/jira/browse/IGNITE-5097
> Project: Ignite
> Issue Type: Task
> Components: general
>Affects Versions: 2.0
>Reporter: Vladimir Ozerov
>Assignee: Vyacheslav Daradur
> Labels: important, performance
> Fix For: 2.1
>
>
> There are a lot of places in the code where we write integers for some
> special purposes. Quite often their value will be vary small, so that
> applying "varint" format could save a lot of space at the cost of very low
> additional CPU overhead.
> Specifically:
> 1) Array/collection/map lengths
> 2) BigDecimal's (usually will save ~6 bytes)
> 3) Strings
> 4) Enum ordinals
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-5097?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026554#comment-16026554
]
Igor Sapego commented on IGNITE-5097:
-
[~daradurvs], [~ptupitsyn], so what is the decision, guys? I propose to only
use varints in primitive arrays, strings, BigDecimals and Enum ordinals, where
they could be most useful and would not interfere with platforms
implementations.
> BinaryMarshaller should write ints in "varint" encoding where it makes sense
>
>
> Key: IGNITE-5097
> URL: https://issues.apache.org/jira/browse/IGNITE-5097
> Project: Ignite
> Issue Type: Task
> Components: general
>Affects Versions: 2.0
>Reporter: Vladimir Ozerov
>Assignee: Vyacheslav Daradur
> Labels: important, performance
> Fix For: 2.1
>
>
> There are a lot of places in the code where we write integers for some
> special purposes. Quite often their value will be vary small, so that
> applying "varint" format could save a lot of space at the cost of very low
> additional CPU overhead.
> Specifically:
> 1) Array/collection/map lengths
> 2) BigDecimal's (usually will save ~6 bytes)
> 3) Strings
> 4) Enum ordinals
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-5301?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Eduard Shangareev reassigned IGNITE-5301:
-
Assignee: Eduard Shangareev
> JVM crashes on H2TreeIndex destroy
> --
>
> Key: IGNITE-5301
> URL: https://issues.apache.org/jira/browse/IGNITE-5301
> Project: Ignite
> Issue Type: Bug
> Components: sql
>Affects Versions: 2.1
>Reporter: Igor Seliverstov
>Assignee: Eduard Shangareev
> Attachments: hs_err_pid9664.log
>
>
> There is a bug in destroy method because of which
> {noformat}cctx.offheap().dropRootPageForIndex(idxName){noformat} method
> actually does nothing. It happens because idx names on create RootPage and
> destroy it are different (unlike creation a root page, a segment suffix isn't
> added to tree name on destroy, so that it can't delete the page from
> metastore by different key).
> After fixing this behavior I faced JVM crash.
> I'm quite not familiar with the code, but I suppose something is wrong in
> MetaStoreInnerIO logic.
> Crash report is attached.
> How to reproduce:
> just create and destroy a cache with indexed types and enabled PDS feature
> after the fix I provided above is applied.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-3355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026539#comment-16026539
]
Sergey Kalashnikov commented on IGNITE-3355:
[~isapego], I am ok with the changes.
> CPP: Implement Compute::Call() for Ignite C++.
> --
>
> Key: IGNITE-3355
> URL: https://issues.apache.org/jira/browse/IGNITE-3355
> Project: Ignite
> Issue Type: Sub-task
> Components: platforms
>Affects Versions: 1.6
>Reporter: Igor Sapego
>Assignee: Igor Sapego
> Labels: cpp
> Fix For: 2.1
>
>
> Need to implement {{Compute}} class with {{Compute::Call}} method.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-4575?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sergey Kalashnikov reassigned IGNITE-4575:
--
Assignee: Sergey Kalashnikov (was: Igor Sapego)
> Implement in Ignite wrapper for enums based on H2 user value type
> -
>
> Key: IGNITE-4575
> URL: https://issues.apache.org/jira/browse/IGNITE-4575
> Project: Ignite
> Issue Type: Task
> Components: sql
>Reporter: Alexander Paschenko
>Assignee: Sergey Kalashnikov
> Labels: important
> Fix For: 2.1
>
>
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-5295?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sergey Chugunov reassigned IGNITE-5295:
---
Assignee: Sergey Chugunov (was: Alexey Goncharuk)
> NPE when Persistent Store is used and Memory Configuration is missing
> -
>
> Key: IGNITE-5295
> URL: https://issues.apache.org/jira/browse/IGNITE-5295
> Project: Ignite
> Issue Type: Bug
>Reporter: Denis Magda
>Assignee: Sergey Chugunov
>Priority: Blocker
> Fix For: 2.1
>
>
> Just added the first Persistent Store example to the branch that fosters the
> donation:
> https://github.com/apache/ignite/tree/ignite-5267/examples/src/main/java/org/apache/ignite/examples/persistentstore
> However, the example fails with an NPE if a MemoryConfiguration is not
> defined explicitly.
> {code}
> [17:55:39,334][ERROR][main][IgniteKernal] Exception during start processors,
> node will be stopped and close connections
> class org.apache.ignite.IgniteCheckedException: Failed to start processor:
> GridProcessorAdapter []
> at
> org.apache.ignite.internal.IgniteKernal.startProcessor(IgniteKernal.java:1766)
> at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:925)
> at
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1895)
> at
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1647)
> at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1075)
> at
> org.apache.ignite.internal.IgnitionEx.startConfigurations(IgnitionEx.java:993)
> at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:879)
> at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:778)
> at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:648)
> at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:617)
> at org.apache.ignite.Ignition.start(Ignition.java:347)
> at
> org.apache.ignite.examples.persistentstore.PersistentStoreExample.main(PersistentStoreExample.java:56)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
> Caused by: class org.apache.ignite.IgniteCheckedException: Failed to create
> Ignite component (consider adding ignite-pds module to classpath)
> [component=DATABASE_MANAGER,
> cls=org.apache.ignite.internal.processors.cache.database.GridCacheDatabaseSharedManager]
> at
> org.apache.ignite.internal.IgniteComponentType.componentException(IgniteComponentType.java:335)
> at
> org.apache.ignite.internal.IgniteComponentType.create0(IgniteComponentType.java:311)
> at
> org.apache.ignite.internal.IgniteComponentType.create(IgniteComponentType.java:186)
> at
> org.apache.ignite.internal.processors.cache.GridCacheProcessor.createSharedContext(GridCacheProcessor.java:2078)
> at
> org.apache.ignite.internal.processors.cache.GridCacheProcessor.start(GridCacheProcessor.java:632)
> at
> org.apache.ignite.internal.IgniteKernal.startProcessor(IgniteKernal.java:1763)
> ... 16 more
> Caused by: java.lang.reflect.InvocationTargetException
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
> at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
> at
> org.apache.ignite.internal.IgniteComponentType.create0(IgniteComponentType.java:307)
> ... 20 more
> Caused by: java.lang.NullPointerException
> at
> org.apache.ignite.internal.processors.cache.database.GridCacheDatabaseSharedManager.(GridCacheDatabaseSharedManager.java:284)
> ... 25 more
> [17:55:39,338][ERROR][main][IgniteKernal] Got exception while starting (will
> rollback startup routine).
> class org.apache.ignite.IgniteCheckedException: Failed to start processor:
> GridProcessorAdapter []
> at
> org.apache.ignite.internal.IgniteKernal.startProcessor(IgniteKernal.java:1766)
> at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:925)
> at
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:1895)
> at
> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1647)
> at
[
https://issues.apache.org/jira/browse/IGNITE-5204?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026325#comment-16026325
]
Sergey Kalashnikov commented on IGNITE-5204:
[~wal...@sohu.com],
Thank you. This is valueable info. I did not know you use .NET API.
I rewrote my test for .NET. However, the issue is not reproduced for me.
Some configuration details might be missing then.
Is it possible that you share your cache configuration?
Here is my .NET test (I have modified one of .NET examples for that purpose)
{code}
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
namespace Apache.Ignite.Examples.Datagrid
{
using System;
using System.Text;
using Apache.Ignite.Core;
using Apache.Ignite.Core.Cache;
using Apache.Ignite.Core.Cache.Configuration;
using Apache.Ignite.Core.Cache.Query;
using Apache.Ignite.ExamplesDll.Binary;
///
/// This example showcases DML capabilities of Ignite's SQL engine.
///
/// 1) Build the project Apache.Ignite.ExamplesDll (select it ->
right-click -> Build).
///Apache.Ignite.ExamplesDll.dll must appear in
%IGNITE_HOME%/platforms/dotnet/examples/Apache.Ignite.ExamplesDll/bin/${Platform]/${Configuration}
folder.
/// 2) Set this class as startup object (Apache.Ignite.Examples project ->
right-click -> Properties ->
/// Application -> Startup object);
/// 3) Start example (F5 or Ctrl+F5).
///
/// This example can be run with standalone Apache Ignite.NET node:
/// 1) Run %IGNITE_HOME%/platforms/dotnet/bin/Apache.Ignite.exe:
/// Apache.Ignite.exe
-configFileName=platforms\dotnet\examples\apache.ignite.examples\app.config
-assembly=[path_to_Apache.Ignite.ExamplesDll.dll]
/// 2) Start example.
///
public class Ignite5204Example
{
private const string BillCacheName = "bill_cache";
public class Bill
{
[QuerySqlField(IsIndexed = true)]
public string BillId { get; set; }
}
public class Detail
{
[QuerySqlField(IsIndexed = true)]
public string BillId { get; set; }
}
[STAThread]
public static void Main()
{
using (var ignite = Ignition.StartFromApplicationConfiguration())
{
Console.WriteLine();
Console.WriteLine(">>> Example started.");
var billCache = ignite.GetOrCreateCache(
new CacheConfiguration(BillCacheName,
new QueryEntity(typeof(string), typeof(Bill)),
new QueryEntity(typeof(string), typeof(Detail)) ));
billCache.Clear();
Insert(billCache);
Select(billCache, "Test");
Console.WriteLine();
}
Console.WriteLine();
Console.WriteLine(">>> Example finished, press any key to exit
...");
Console.ReadKey();
}
private static void Select(ICache billCache, string
message)
{
Console.WriteLine("\n>>> {0}", message);
var qry = new SqlFieldsQuery("select * from Bill where BillId =
'草DX009090'");
using (var cursor = billCache.QueryFields(qry))
{
foreach (var row in cursor)
{
Console.WriteLine(">>> {0}", row[0]);
}
}
qry = new SqlFieldsQuery("select bill.*from bill left join detail
on bill.billid = detail.billid");
using (var cursor = billCache.QueryFields(qry))
{
foreach (var row in cursor)
{
Console.WriteLine(">>> {0}", row[0]);
}
}
}
private static void Insert(ICache billCache)
{
var qry = new SqlFieldsQuery("insert into Bill (_key, BillId)
values (?, ?)");
qry.Arguments = new object[] {"Bill_1", "DX000"};
billCache.QueryFields(qry);
qry.Arguments = new object[] {"Bill_2",
[
https://issues.apache.org/jira/browse/IGNITE-4509?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026316#comment-16026316
]
Sergey Kalashnikov commented on IGNITE-4509:
*Important note*
The implemented approach differs from the one proposed in description/title.
The new approach attempts to derive a set of cache partitions that the given
query covers
from the query itself and its arguments.
The query will be sent to execution only to those cluster nodes which have the
derived partitions.
Thus if there is a condition in the {{where}} clause of form {{"_key = ?" or
"affinityKey = ?"}}
the parameter (after binding) or a constant to the right is used to calculate
the cache partition.
Multiple such conditions may be present.
Additional non-key filters can be used in query and still the query may be
optimized this way.
(f.ex. {{"_key = ? and field = ?"}} as opposed to {{"_key = ? or field = ?"}}
which cannot be optimized).
The approach does not put any constraints on the {{select expression_list}}
clause of the query.
However, in the scope of this ticket, the queries with joins are not optimized
this way (will be done in the scope of
[https://issues.apache.org/jira/browse/IGNITE-4510]).
The {{cache.get()}} approach was considered not feasible for the following
reasons:
1) requires specific {{cache.get()}} implementation that would accept a set of
fields to retrieve,
which is essentially some sort of sql-like implementation;
2) limited application. Only the simplest form of queries can be optimized that
way,
i.e. no expressions over columns, no functions, just simplest {{_key=?}};
3) that kind of functionality doesn't fit seemlessly to the flow of sql query
execution.
> SQL: query with condition on affinity columns and without joins and
> subqueries can be replaced with GET
> ---
>
> Key: IGNITE-4509
> URL: https://issues.apache.org/jira/browse/IGNITE-4509
> Project: Ignite
> Issue Type: Task
> Components: sql
>Affects Versions: 1.8
>Reporter: Vladimir Ozerov
>Assignee: Sergey Kalashnikov
> Labels: important, performance, sql
> Fix For: 2.1
>
>
> Simple SQL queries usually demonstrate negative scalability when more nodes
> are added.
> Consider the following query:
> {code}
> SELECT * FROM Person p
> WHERE p.id = ?
> {code}
> If {{Person.id}} is affinity field, then query can be replaced with plain
> {{IgniteCache.get}} or some specialized version of GET, which will return
> only desired fields. This optimization will guarantee smooth scale with any
> number of nodes.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-5302?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sergey Chugunov updated IGNITE-5302:
Description:
h2. Notes
Test *testPartitionLossAndRecover* reproducing the issue can be found in
ignite-5267 branch with PDS functionality.
h2. Steps to reproduce
# Four nodes are started, some key is added to partitioned cache
# Primary and backup nodes for the key are stopped, key's partition is declared
LOST on remaining nodes
# Primary and backup nodes are started again, cache's lost partitions are reset
# Key is requested from cache
h2. Expected behavior
Correct value is returned from primary for this partition
h2. Actual behavior
Request for value is sent to node where partition is empty (not to primary
node), null is returned
h2. Latest findings
# The main problem with the scenario is that request for key gets mapped not
only to P/B nodes with real value but also to the node where that partition
existed only in LOST state after P/B shutdown on step #2
# It was found that on step #3 after primary and backup are joined partition
counter is increased for empty partition in LOST state which looks wrong
was:
h2 Notes
Test *testPartitionLossAndRecover* reproducing the issue can be found in
ignite-5267 branch with PDS functionality.
h2 Steps to reproduce
# Four nodes are started, some key is added to partitioned cache
# Primary and backup nodes for the key are stopped, key's partition is declared
LOST on remaining nodes
# Primary and backup nodes are started again, cache's lost partitions are reset
# Key is requested from cache
h2 Expected behavior
Correct value is returned from primary for this partition
h2 Actual behavior
Request for value is sent to node where partition is empty (not to primary
node), null is returned
h2 Latest findings
# The main problem with the scenario is that request for key gets mapped not
only to P/B nodes with real value but also to the node where that partition
existed only in LOST state after P/B shutdown on step #2
# It was found that on step #3 after primary and backup are joined partition
counter is increased for empty partition in LOST state which looks wrong
> Empty LOST partition may be used as OWNING after resetting lost partitions
> --
>
> Key: IGNITE-5302
> URL: https://issues.apache.org/jira/browse/IGNITE-5302
> Project: Ignite
> Issue Type: Bug
>Reporter: Sergey Chugunov
>
> h2. Notes
> Test *testPartitionLossAndRecover* reproducing the issue can be found in
> ignite-5267 branch with PDS functionality.
> h2. Steps to reproduce
> # Four nodes are started, some key is added to partitioned cache
> # Primary and backup nodes for the key are stopped, key's partition is
> declared LOST on remaining nodes
> # Primary and backup nodes are started again, cache's lost partitions are
> reset
> # Key is requested from cache
> h2. Expected behavior
> Correct value is returned from primary for this partition
> h2. Actual behavior
> Request for value is sent to node where partition is empty (not to primary
> node), null is returned
> h2. Latest findings
> # The main problem with the scenario is that request for key gets mapped not
> only to P/B nodes with real value but also to the node where that partition
> existed only in LOST state after P/B shutdown on step #2
> # It was found that on step #3 after primary and backup are joined partition
> counter is increased for empty partition in LOST state which looks wrong
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
Sergey Chugunov created IGNITE-5302:
---
Summary: Empty LOST partition may be used as OWNING after
resetting lost partitions
Key: IGNITE-5302
URL: https://issues.apache.org/jira/browse/IGNITE-5302
Project: Ignite
Issue Type: Bug
Reporter: Sergey Chugunov
h2 Notes
Test *testPartitionLossAndRecover* reproducing the issue can be found in
ignite-5267 branch with PDS functionality.
h2 Steps to reproduce
# Four nodes are started, some key is added to partitioned cache
# Primary and backup nodes for the key are stopped, key's partition is declared
LOST on remaining nodes
# Primary and backup nodes are started again, cache's lost partitions are reset
# Key is requested from cache
h2 Expected behavior
Correct value is returned from primary for this partition
h2 Actual behavior
Request for value is sent to node where partition is empty (not to primary
node), null is returned
h2 Latest findings
# The main problem with the scenario is that request for key gets mapped not
only to P/B nodes with real value but also to the node where that partition
existed only in LOST state after P/B shutdown on step #2
# It was found that on step #3 after primary and backup are joined partition
counter is increased for empty partition in LOST state which looks wrong
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-5301?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Igor Seliverstov updated IGNITE-5301:
-
Description:
There is a bug in destroy method because of which
{noformat}cctx.offheap().dropRootPageForIndex(idxName){noformat} method
actually does nothing. It happens because idx names on create RootPage and
destroy it are different (unlike creation a root page, a segment suffix isn't
added to tree name on destroy, so that it can't delete the page from metastore
by different key).
After fixing this behavior I faced JVM crash.
I'm quite not familiar with the code, but I suppose something is wrong in
MetaStoreInnerIO logic.
Crash report is attached.
How to reproduce:
just create and destroy a cache with indexed types and enabled PDS feature
after the fix I provided above is applied.
was:
There is a bug in destroy method because of which
{noformat}cctx.offheap().dropRootPageForIndex(idxName){noformat} method
actually does nothing. It happens because idx names on create RootPage and
destroy it are different (unlike creation a root page, a segment suffix isn't
added to tree name on destroy, so that it can't delete the page from metastore
by different key).
After fixing this behavior I faced JVM crash.
I'm quite not familiar with the code, but I suppose something is wrong in
MetaStoreInnerIO logic.
Crash report is attached.
How to reproduce:
just create and destroy a cache with indexed types and enabled PDS feature
after the fix I provided above.
> JVM crashes on H2TreeIndex destroy
> --
>
> Key: IGNITE-5301
> URL: https://issues.apache.org/jira/browse/IGNITE-5301
> Project: Ignite
> Issue Type: Bug
> Components: sql
>Affects Versions: 2.1
>Reporter: Igor Seliverstov
> Attachments: hs_err_pid9664.log
>
>
> There is a bug in destroy method because of which
> {noformat}cctx.offheap().dropRootPageForIndex(idxName){noformat} method
> actually does nothing. It happens because idx names on create RootPage and
> destroy it are different (unlike creation a root page, a segment suffix isn't
> added to tree name on destroy, so that it can't delete the page from
> metastore by different key).
> After fixing this behavior I faced JVM crash.
> I'm quite not familiar with the code, but I suppose something is wrong in
> MetaStoreInnerIO logic.
> Crash report is attached.
> How to reproduce:
> just create and destroy a cache with indexed types and enabled PDS feature
> after the fix I provided above is applied.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-5301?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Igor Seliverstov updated IGNITE-5301:
-
Description:
There is a bug in destroy method because of which
{noformat}cctx.offheap().dropRootPageForIndex(idxName){noformat} method
actually does nothing. It happens because idx names on create RootPage and
destroy it are different (unlike creation a root page, a segment suffix isn't
added to tree name on destroy, so that it can't delete the page from metastore
by different key).
After fixing this behavior I faced JVM crash.
I'm quite not familiar with the code, but I suppose something is wrong in
MetaStoreInnerIO logic.
Crash report is attached.
How to reproduce:
just create and destroy a cache with indexed types and enabled PDS feature
after the fix I provided above.
was:See the attached log.
> JVM crashes on H2TreeIndex destroy
> --
>
> Key: IGNITE-5301
> URL: https://issues.apache.org/jira/browse/IGNITE-5301
> Project: Ignite
> Issue Type: Bug
> Components: sql
>Affects Versions: 2.1
>Reporter: Igor Seliverstov
> Attachments: hs_err_pid9664.log
>
>
> There is a bug in destroy method because of which
> {noformat}cctx.offheap().dropRootPageForIndex(idxName){noformat} method
> actually does nothing. It happens because idx names on create RootPage and
> destroy it are different (unlike creation a root page, a segment suffix isn't
> added to tree name on destroy, so that it can't delete the page from
> metastore by different key).
> After fixing this behavior I faced JVM crash.
> I'm quite not familiar with the code, but I suppose something is wrong in
> MetaStoreInnerIO logic.
> Crash report is attached.
> How to reproduce:
> just create and destroy a cache with indexed types and enabled PDS feature
> after the fix I provided above.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-4862?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026280#comment-16026280
]
Ivan Veselovsky edited comment on IGNITE-4862 at 5/26/17 1:33 PM:
--
[~vozerov] , thanks, fixed.
One note: as I understand, reading from the underlying secondary Fs stream does
not need synchronization, only getting this stream and closing it needs to be
synchronized.
was (Author: iveselovskiy):
[~vozerov] , thanks, fixed.
> NPE in reading data from IGFS
> -
>
> Key: IGNITE-4862
> URL: https://issues.apache.org/jira/browse/IGNITE-4862
> Project: Ignite
> Issue Type: Bug
> Components: hadoop
>Affects Versions: 1.9
>Reporter: Dmitry Karachentsev
>Assignee: Ivan Veselovsky
>Priority: Minor
> Fix For: 2.1
>
>
> {noformat}
> D:\app\CodexRT.CodexRT_20170314-1>hadoop\bin\hadoop fs -copyToLocal
> igfs:///cacheLink/test3.orc D:\test3.orc
> -copyToLocal: Fatal internal error
> java.lang.NullPointerException
> at
> org.apache.ignite.internal.processors.hadoop.impl.igfs.HadoopIgfsInputStream$FetchBufferPart.flatten(HadoopIgfsInputStream.java:458)
> at
> org.apache.ignite.internal.processors.hadoop.impl.igfs.HadoopIgfsInputStream$DoubleFetchBuffer.flatten(HadoopIgfsInputStream.java:511)
> at
> org.apache.ignite.internal.processors.hadoop.impl.igfs.HadoopIgfsInputStream.read(HadoopIgfsInputStream.java:177)
> at java.io.DataInputStream.read(DataInputStream.java:100)
> at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:91)
> at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:59)
> at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:119)
> at
> org.apache.hadoop.fs.shell.CommandWithDestination$TargetFileSystem.writeStreamToFile(CommandWithDestination.java:466)
> at
> org.apache.hadoop.fs.shell.CommandWithDestination.copyStreamToTarget(CommandWithDestination.java:391)
> at
> org.apache.hadoop.fs.shell.CommandWithDestination.copyFileToTarget(CommandWithDestination.java:328)
> at
> org.apache.hadoop.fs.shell.CommandWithDestination.processPath(CommandWithDestination.java:263)
> at
> org.apache.hadoop.fs.shell.CommandWithDestination.processPath(CommandWithDestination.java:248)
> at org.apache.hadoop.fs.shell.Command.processPaths(Command.java:317)
> at
> org.apache.hadoop.fs.shell.Command.processPathArgument(Command.java:289)
> at
> org.apache.hadoop.fs.shell.CommandWithDestination.processPathArgument(CommandWithDestination.java:243)
> at
> org.apache.hadoop.fs.shell.Command.processArgument(Command.java:271)
> at
> org.apache.hadoop.fs.shell.Command.processArguments(Command.java:255)
> at
> org.apache.hadoop.fs.shell.CommandWithDestination.processArguments(CommandWithDestination.java:220)
> at
> org.apache.hadoop.fs.shell.Command.processRawArguments(Command.java:201)
> at org.apache.hadoop.fs.shell.Command.run(Command.java:165)
> at org.apache.hadoop.fs.FsShell.run(FsShell.java:287)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
> at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
> at org.apache.hadoop.fs.FsShell.main(FsShell.java:340)
> {noformat}
> Details in discussion:
> [http://apache-ignite-users.70518.x6.nabble.com/NullPointerException-when-using-IGFS-td11328.html]
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
Igor Seliverstov created IGNITE-5301:
Summary: JVM crushes on H2TreeIndex destroy
Key: IGNITE-5301
URL: https://issues.apache.org/jira/browse/IGNITE-5301
Project: Ignite
Issue Type: Bug
Affects Versions: 2.1
Reporter: Igor Seliverstov
Attachments: hs_err_pid9664.log
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-5293?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026251#comment-16026251
]
Alexei Scherbakov commented on IGNITE-5293:
---
Updated the description with my local results.
> Replicated cache performance degradation.
> -
>
> Key: IGNITE-5293
> URL: https://issues.apache.org/jira/browse/IGNITE-5293
> Project: Ignite
> Issue Type: Bug
> Components: cache
>Affects Versions: 2.0
>Reporter: Alexei Scherbakov
> Fix For: 2.2
>
>
> With increase in number of nodes puts to replicated cache are slowed down
> almost in the same proportion.
> Unit test reproducer:
> {noformat}
> /*
> * Licensed to the Apache Software Foundation (ASF) under one or more
> * contributor license agreements. See the NOTICE file distributed with
> * this work for additional information regarding copyright ownership.
> * The ASF licenses this file to You under the Apache License, Version 2.0
> * (the "License"); you may not use this file except in compliance with
> * the License. You may obtain a copy of the License at
> *
> * http://www.apache.org/licenses/LICENSE-2.0
> *
> * Unless required by applicable law or agreed to in writing, software
> * distributed under the License is distributed on an "AS IS" BASIS,
> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> * See the License for the specific language governing permissions and
> * limitations under the License.
> */
> package org.apache.ignite.internal.processors.cache.distributed.replicated;
> import org.apache.ignite.Ignite;
> import org.apache.ignite.IgniteCache;
> import org.apache.ignite.cache.CacheAtomicityMode;
> import org.apache.ignite.cache.CacheMode;
> import org.apache.ignite.cache.CacheWriteSynchronizationMode;
> import org.apache.ignite.configuration.CacheConfiguration;
> import org.apache.ignite.configuration.IgniteConfiguration;
> import org.apache.ignite.configuration.MemoryConfiguration;
> import org.apache.ignite.internal.IgniteEx;
> import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
> import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
> import org.apache.ignite.transactions.Transaction;
> import org.apache.ignite.transactions.TransactionConcurrency;
> import org.apache.ignite.transactions.TransactionIsolation;
> /**
> * Tests replicated cache performance .
> */
> public class GridCacheReplicatedTransactionalDegradationTest extends
> GridCommonAbstractTest {
> /** Keys. */
> private static final int KEYS = 100_000;
> @Override protected IgniteConfiguration getConfiguration(String gridName)
> throws Exception {
> IgniteConfiguration cfg = super.getConfiguration(gridName);
> cfg.setClientMode(gridName.startsWith("client"));
> CacheConfiguration ccfg = new CacheConfiguration();
> ccfg.setCacheMode(CacheMode.REPLICATED);
> ccfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
>
> ccfg.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
> ccfg.setName("test");
> cfg.setCacheConfiguration(ccfg);
> return cfg;
> }
> /** */
> public void testThroughput() throws Exception {
> try {
> IgniteEx grid0 = startGrid(0);
> Ignite client = startGrid("client");
> IgniteCache
[
https://issues.apache.org/jira/browse/IGNITE-5293?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Alexei Scherbakov updated IGNITE-5293:
--
Description:
With increase in number of nodes puts to replicated cache are slowed down
almost in the same proportion.
Unit test reproducer:
{noformat}
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.ignite.internal.processors.cache.distributed.replicated;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.cache.CacheWriteSynchronizationMode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.MemoryConfiguration;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.apache.ignite.transactions.Transaction;
import org.apache.ignite.transactions.TransactionConcurrency;
import org.apache.ignite.transactions.TransactionIsolation;
/**
* Tests replicated cache performance .
*/
public class GridCacheReplicatedTransactionalDegradationTest extends
GridCommonAbstractTest {
/** Keys. */
private static final int KEYS = 100_000;
@Override protected IgniteConfiguration getConfiguration(String gridName)
throws Exception {
IgniteConfiguration cfg = super.getConfiguration(gridName);
cfg.setClientMode(gridName.startsWith("client"));
CacheConfiguration ccfg = new CacheConfiguration();
ccfg.setCacheMode(CacheMode.REPLICATED);
ccfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
ccfg.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
ccfg.setName("test");
cfg.setCacheConfiguration(ccfg);
return cfg;
}
/** */
public void testThroughput() throws Exception {
try {
IgniteEx grid0 = startGrid(0);
Ignite client = startGrid("client");
IgniteCache cache = client.getOrCreateCache("test");
doTest(client, cache);
startGrid(1);
doTest(client, cache);
startGrid(2);
doTest(client, cache);
} finally {
stopAllGrids();
}
}
/**
* @param client
* @param cache Cache.
*/
private void doTest(Ignite client, IgniteCache cache) {
long t1 = System.currentTimeMillis();
for (int i = 0; i < KEYS; i++) {
try (Transaction tx =
client.transactions().txStart(TransactionConcurrency.PESSIMISTIC,
TransactionIsolation.REPEATABLE_READ)) {
cache.put(i, i);
tx.commit();
}
}
log.info("TPS: " + Math.round(KEYS / (float)(System.currentTimeMillis()
- t1) * 1000));
}
}
{noformat}
My test results are:
1. transactional cache, explicit transaction.
TPS: 2507
TPS: 1660
TPS: 1148
2. atomic cache
TPS: 6416
TPS: 5177
TPS: 4403
3. transactional cache, no explicit transaction
TPS: 4485
TPS: 2289
TPS: 1439
was:
With increase in number of nodes puts to replicated cache are slowed down
almost in the same proportion.
Unit test reproducer:
{noformat}
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
[
https://issues.apache.org/jira/browse/IGNITE-5298?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026241#comment-16026241
]
Pavel Tupitsyn commented on IGNITE-5298:
{{=}} cannot be used in expression trees: {{an expression tree may not contain
an assignment operator}}.
However, there is an {{Expression.Assign}}. We can provide an extension method
which works like this:
{{persons.Where(x => x.Key > 10).UpdateAll(x => x.Value.OrgId.Set(7));}}
> .NET: DML update via LINQ
> -
>
> Key: IGNITE-5298
> URL: https://issues.apache.org/jira/browse/IGNITE-5298
> Project: Ignite
> Issue Type: New Feature
> Components: platforms
>Affects Versions: 2.1
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
> Labels: .NET, LINQ, important
> Fix For: 2.2
>
>
> Bulk update with LINQ:
> {code}
> var persons = ignite.GetCache("persons").AsCacheQueryable();
> int affectedRows = persons.Where(x => x.Key > 10).UpdateAll(x =>
> x.Value.OrgId = 7);
> {code}
> See bulk delete with {{RemoveAll}}, IGNITE-4904.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-5176?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026234#comment-16026234
]
Igor Sapego commented on IGNITE-5176:
-
[~tledkov-gridgain], why have you changed values of constants in
{{SqlListenerRequest}}? You should have just add {{QRY_METADATA}} to the end of
the list. This is totally unnecessary breaking change.
> JDBC Driver: implement query execution for thin jdbc driver based on common
> odbc/jdbc protocol
> --
>
> Key: IGNITE-5176
> URL: https://issues.apache.org/jira/browse/IGNITE-5176
> Project: Ignite
> Issue Type: Task
> Components: sql
>Affects Versions: 2.0
>Reporter: Taras Ledkov
>Assignee: Igor Sapego
> Fix For: 2.1
>
>
> Implementation query execution & fetch results for thin JDBC driver over ODBC
> protocol.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
Evgenii Zhuravlev created IGNITE-5299:
-
Summary: Don't set IgniteLock as broken if lock is failoverSafe
Key: IGNITE-5299
URL: https://issues.apache.org/jira/browse/IGNITE-5299
Project: Ignite
Issue Type: Bug
Reporter: Evgenii Zhuravlev
It's unnecessary to set isBroken flag to IgniteLock when failoverSafe=true,
because it's only used in case when failoverSafe=false
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-1925?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Vladimir Ozerov closed IGNITE-1925.
---
> Test HadoopSkipListSelfTest.testLevel flakily fails
> ---
>
> Key: IGNITE-1925
> URL: https://issues.apache.org/jira/browse/IGNITE-1925
> Project: Ignite
> Issue Type: Bug
> Components: hadoop
>Affects Versions: 1.6
>Reporter: Ivan Veselovsky
>Assignee: Ivan Veselovsky
>Priority: Minor
> Fix For: 2.1
>
>
> Test HadoopSkipListSelfTest.testLevel fails from time to time with ~ 3%
> probability.
>
> junit.framework.AssertionFailedError: null
> at junit.framework.Assert.fail(Assert.java:55)
> at junit.framework.Assert.assertTrue(Assert.java:22)
> at junit.framework.Assert.assertTrue(Assert.java:31)
> at junit.framework.TestCase.assertTrue(TestCase.java:201)
> at
> org.apache.ignite.internal.processors.hadoop.shuffle.collections.HadoopSkipListSelfTest.testLevel(HadoopSkipListSelfTest.java:83)
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-4477?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026197#comment-16026197
]
Dmitry Karachentsev commented on IGNITE-4477:
-
[~vozerov],
Fixed, please check.
> Fix IgniteFuture.listen() and IgniteFuture.chain() semantics
>
>
> Key: IGNITE-4477
> URL: https://issues.apache.org/jira/browse/IGNITE-4477
> Project: Ignite
> Issue Type: Task
> Components: general
>Affects Versions: 1.8
>Reporter: Vladimir Ozerov
>Assignee: Dmitry Karachentsev
> Labels: important
> Fix For: 2.1
>
>
> *Problem*
> We allow users to pass continuations to {{IgniteFuture}} which will be
> executed on future completion. This can be done through {{listen}} or
> {{chain}} methods.
> However, continuation semantics is broken intrinsically:
> 1) If future is already completed, user code executed in the same thread;
> 2) If future is not completed yet, it will be executed in completion thread.
> Neither of this options are valid because it easily leads to starvation. E.g.:
> {code}
> IgniteFuture fut = cache.getAsync(key2);
> fut.listen(fut0 -> {
> cache.put(key2, val2); // Possible deadlock, because invoked in sys pool;
> });
> {code}
> *Solution*
> 1) By default callbacks must be executed asynchronously in some common pool
> (public pool? new "callback pool"? FJP?)
> 2) It should be possible to specify where to execute a callback explicitly:
> {code}
> IgniteFuture.listen(IgniteClosure, ExecutorService);
> {code}
> 3) We may want to expose our public pool on API for convenience.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-4477?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026187#comment-16026187
]
Vladimir Ozerov commented on IGNITE-4477:
-
[~dkarachentsev],
p.2 - yes, it is better to re-use existing {{GridFutureAdapter.chain}} method
to avoid any subtle semantic changes. {{IgniteFutureImpl}} already depends on
{{IgniteInternalFuture}} heavily, so no need decouple them this way.
> Fix IgniteFuture.listen() and IgniteFuture.chain() semantics
>
>
> Key: IGNITE-4477
> URL: https://issues.apache.org/jira/browse/IGNITE-4477
> Project: Ignite
> Issue Type: Task
> Components: general
>Affects Versions: 1.8
>Reporter: Vladimir Ozerov
>Assignee: Dmitry Karachentsev
> Labels: important
> Fix For: 2.1
>
>
> *Problem*
> We allow users to pass continuations to {{IgniteFuture}} which will be
> executed on future completion. This can be done through {{listen}} or
> {{chain}} methods.
> However, continuation semantics is broken intrinsically:
> 1) If future is already completed, user code executed in the same thread;
> 2) If future is not completed yet, it will be executed in completion thread.
> Neither of this options are valid because it easily leads to starvation. E.g.:
> {code}
> IgniteFuture fut = cache.getAsync(key2);
> fut.listen(fut0 -> {
> cache.put(key2, val2); // Possible deadlock, because invoked in sys pool;
> });
> {code}
> *Solution*
> 1) By default callbacks must be executed asynchronously in some common pool
> (public pool? new "callback pool"? FJP?)
> 2) It should be possible to specify where to execute a callback explicitly:
> {code}
> IgniteFuture.listen(IgniteClosure, ExecutorService);
> {code}
> 3) We may want to expose our public pool on API for convenience.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-4766?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026183#comment-16026183
]
Vladimir Ozerov commented on IGNITE-4766:
-
Closing as I failed to find any improvement in distributed benchmarks. Original
patch is attached in case we would like to continue investigation in future.
> Relax worker thread wakeup logic in StipedExecutor
> --
>
> Key: IGNITE-4766
> URL: https://issues.apache.org/jira/browse/IGNITE-4766
> Project: Ignite
> Issue Type: Task
> Components: general
>Affects Versions: 1.9
>Reporter: Vladimir Ozerov
>Assignee: Vladimir Ozerov
> Fix For: 2.1
>
> Attachments: IGNITE_4766.patch
>
>
> *Problem*
> Worker threads in {{StripedExecutor}} have {{parked}} state flag. When set to
> {{true}} NIO threads will call {{LockSupport.unpark}} after submitting new
> task to a queue.
> The problem is that this flag is only changed by worker thread. Thus, if NIO
> worker submitted a new task and called {{unpark}}, worker will clean up
> {{parked}} state only after real wake up what may take microseconds. All
> subsequent submits from NIO thread occurred during this time will also invoke
> {{unpark}} thus generating high contention on the underlying OS primitives.
> Namely, condition variables which ultimately delegates to {{futex}} on Linux.
> *Solution*
> NIO threads must be able to clear {{parked}} state as well. Some CAS magic
> will be required there. This way we will minimize number of {{unapark}} calls.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-4766?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Vladimir Ozerov closed IGNITE-4766.
---
> Relax worker thread wakeup logic in StipedExecutor
> --
>
> Key: IGNITE-4766
> URL: https://issues.apache.org/jira/browse/IGNITE-4766
> Project: Ignite
> Issue Type: Task
> Components: general
>Affects Versions: 1.9
>Reporter: Vladimir Ozerov
>Assignee: Vladimir Ozerov
> Fix For: 2.1
>
> Attachments: IGNITE_4766.patch
>
>
> *Problem*
> Worker threads in {{StripedExecutor}} have {{parked}} state flag. When set to
> {{true}} NIO threads will call {{LockSupport.unpark}} after submitting new
> task to a queue.
> The problem is that this flag is only changed by worker thread. Thus, if NIO
> worker submitted a new task and called {{unpark}}, worker will clean up
> {{parked}} state only after real wake up what may take microseconds. All
> subsequent submits from NIO thread occurred during this time will also invoke
> {{unpark}} thus generating high contention on the underlying OS primitives.
> Namely, condition variables which ultimately delegates to {{futex}} on Linux.
> *Solution*
> NIO threads must be able to clear {{parked}} state as well. Some CAS magic
> will be required there. This way we will minimize number of {{unapark}} calls.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-4766?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Vladimir Ozerov updated IGNITE-4766:
Attachment: IGNITE_4766.patch
> Relax worker thread wakeup logic in StipedExecutor
> --
>
> Key: IGNITE-4766
> URL: https://issues.apache.org/jira/browse/IGNITE-4766
> Project: Ignite
> Issue Type: Task
> Components: general
>Affects Versions: 1.9
>Reporter: Vladimir Ozerov
>Assignee: Vladimir Ozerov
> Fix For: 2.1
>
> Attachments: IGNITE_4766.patch
>
>
> *Problem*
> Worker threads in {{StripedExecutor}} have {{parked}} state flag. When set to
> {{true}} NIO threads will call {{LockSupport.unpark}} after submitting new
> task to a queue.
> The problem is that this flag is only changed by worker thread. Thus, if NIO
> worker submitted a new task and called {{unpark}}, worker will clean up
> {{parked}} state only after real wake up what may take microseconds. All
> subsequent submits from NIO thread occurred during this time will also invoke
> {{unpark}} thus generating high contention on the underlying OS primitives.
> Namely, condition variables which ultimately delegates to {{futex}} on Linux.
> *Solution*
> NIO threads must be able to clear {{parked}} state as well. Some CAS magic
> will be required there. This way we will minimize number of {{unapark}} calls.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-4477?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026161#comment-16026161
]
Dmitry Karachentsev edited comment on IGNITE-4477 at 5/26/17 11:27 AM:
---
[~vozerov],
Thanks for the review!
1) Fixed (missed when removed default pool support).
2) It was made only for less relying on `IgniteInternalFuture`, but for sure,
it's easier to use existing method. Shall I fix this as well?
was (Author: dkarachentsev):
[~vozerov],
Thanks for the review!
1) Fixed (missed when removed default pool support).
2) It was made only for not relying on `IgniteInternalFuture`, but for sure,
it's easier to use existing method. Shall I fix this as well?
> Fix IgniteFuture.listen() and IgniteFuture.chain() semantics
>
>
> Key: IGNITE-4477
> URL: https://issues.apache.org/jira/browse/IGNITE-4477
> Project: Ignite
> Issue Type: Task
> Components: general
>Affects Versions: 1.8
>Reporter: Vladimir Ozerov
>Assignee: Dmitry Karachentsev
> Labels: important
> Fix For: 2.1
>
>
> *Problem*
> We allow users to pass continuations to {{IgniteFuture}} which will be
> executed on future completion. This can be done through {{listen}} or
> {{chain}} methods.
> However, continuation semantics is broken intrinsically:
> 1) If future is already completed, user code executed in the same thread;
> 2) If future is not completed yet, it will be executed in completion thread.
> Neither of this options are valid because it easily leads to starvation. E.g.:
> {code}
> IgniteFuture fut = cache.getAsync(key2);
> fut.listen(fut0 -> {
> cache.put(key2, val2); // Possible deadlock, because invoked in sys pool;
> });
> {code}
> *Solution*
> 1) By default callbacks must be executed asynchronously in some common pool
> (public pool? new "callback pool"? FJP?)
> 2) It should be possible to specify where to execute a callback explicitly:
> {code}
> IgniteFuture.listen(IgniteClosure, ExecutorService);
> {code}
> 3) We may want to expose our public pool on API for convenience.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-4477?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026161#comment-16026161
]
Dmitry Karachentsev commented on IGNITE-4477:
-
[~vozerov],
Thanks for the review!
1) Fixed (missed when removed default pool support).
2) It was made only for not relying on `IgniteInternalFuture`, but for sure,
it's easier to use existing method. Shall I fix this as well?
> Fix IgniteFuture.listen() and IgniteFuture.chain() semantics
>
>
> Key: IGNITE-4477
> URL: https://issues.apache.org/jira/browse/IGNITE-4477
> Project: Ignite
> Issue Type: Task
> Components: general
>Affects Versions: 1.8
>Reporter: Vladimir Ozerov
>Assignee: Dmitry Karachentsev
> Labels: important
> Fix For: 2.1
>
>
> *Problem*
> We allow users to pass continuations to {{IgniteFuture}} which will be
> executed on future completion. This can be done through {{listen}} or
> {{chain}} methods.
> However, continuation semantics is broken intrinsically:
> 1) If future is already completed, user code executed in the same thread;
> 2) If future is not completed yet, it will be executed in completion thread.
> Neither of this options are valid because it easily leads to starvation. E.g.:
> {code}
> IgniteFuture fut = cache.getAsync(key2);
> fut.listen(fut0 -> {
> cache.put(key2, val2); // Possible deadlock, because invoked in sys pool;
> });
> {code}
> *Solution*
> 1) By default callbacks must be executed asynchronously in some common pool
> (public pool? new "callback pool"? FJP?)
> 2) It should be possible to specify where to execute a callback explicitly:
> {code}
> IgniteFuture.listen(IgniteClosure, ExecutorService);
> {code}
> 3) We may want to expose our public pool on API for convenience.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-4575?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026151#comment-16026151
]
Vladimir Ozerov commented on IGNITE-4575:
-
[~skalashnikov],
Looks like CPP part is fine. I merged binary-related changes to master.
> Implement in Ignite wrapper for enums based on H2 user value type
> -
>
> Key: IGNITE-4575
> URL: https://issues.apache.org/jira/browse/IGNITE-4575
> Project: Ignite
> Issue Type: Task
> Components: sql
>Reporter: Alexander Paschenko
>Assignee: Igor Sapego
> Labels: important
> Fix For: 2.1
>
>
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-4575?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Vladimir Ozerov reassigned IGNITE-4575:
---
Assignee: Igor Sapego (was: Sergey Kalashnikov)
> Implement in Ignite wrapper for enums based on H2 user value type
> -
>
> Key: IGNITE-4575
> URL: https://issues.apache.org/jira/browse/IGNITE-4575
> Project: Ignite
> Issue Type: Task
> Components: sql
>Reporter: Alexander Paschenko
>Assignee: Igor Sapego
> Labels: important
> Fix For: 2.1
>
>
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-4575?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026143#comment-16026143
]
Vladimir Ozerov commented on IGNITE-4575:
-
[~skalashnikov], TeamCity looks good to me. However, we need to make sure that
CPP is not affected. [~isapego], could you please do that?
> Implement in Ignite wrapper for enums based on H2 user value type
> -
>
> Key: IGNITE-4575
> URL: https://issues.apache.org/jira/browse/IGNITE-4575
> Project: Ignite
> Issue Type: Task
> Components: sql
>Reporter: Alexander Paschenko
>Assignee: Sergey Kalashnikov
> Labels: important
> Fix For: 2.1
>
>
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-5259?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026140#comment-16026140
]
ASF GitHub Bot commented on IGNITE-5259:
GitHub user dkarachentsev opened a pull request:
https://github.com/apache/ignite/pull/2013
IGNITE-5259 Minor serialization fix
(cherry picked from commit b2040b7)
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/gridgain/apache-ignite ignite-5259-master
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/ignite/pull/2013.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #2013
commit b6ad8535171951afb66d4c37d5cbf4bc3e208334
Author: dkarachentsev
Date: 2017-05-23T13:14:08Z
IGNITE-5259 Minor serialization fix
(cherry picked from commit b2040b7)
> Minor serialization fix
> ---
>
> Key: IGNITE-5259
> URL: https://issues.apache.org/jira/browse/IGNITE-5259
> Project: Ignite
> Issue Type: Bug
>Affects Versions: 2.1
>Reporter: Dmitry Karachentsev
>Assignee: Dmitry Karachentsev
> Fix For: 2.1
>
>
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-5242?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026121#comment-16026121
]
Vladimir Ozerov commented on IGNITE-5242:
-
p.2 - got it.
> Disallow DROP TABLE on statically configured caches
> ---
>
> Key: IGNITE-5242
> URL: https://issues.apache.org/jira/browse/IGNITE-5242
> Project: Ignite
> Issue Type: Task
> Components: sql
>Affects Versions: 2.0
>Reporter: Vladimir Ozerov
>Assignee: Alexander Paschenko
> Fix For: 2.1
>
>
> Should we allow {{DROP TABLE}} on statically configured cache, there will be
> a room for weird situations when it is impossible to understand on whether to
> start the cache or not.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-5291?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026115#comment-16026115
]
Vladimir Ozerov commented on IGNITE-5291:
-
[~al.psc], fix looks good, but I see failed tests on TC (Ignite Binary Objects
Simple Mapper Queries). Please confirm that TC is in acceptable state.
> SQL: plans cache does not clear on cache stop
> -
>
> Key: IGNITE-5291
> URL: https://issues.apache.org/jira/browse/IGNITE-5291
> Project: Ignite
> Issue Type: Bug
> Components: sql
>Affects Versions: 2.0
> Environment: After cache-schema decoupling mutation of
> {{DmlStatementsProcessor#planCache}} appears to be broken (different pieces
> of code contexts operate different schema names), have to do this
> consistently.
>Reporter: Alexander Paschenko
>Assignee: Alexander Paschenko
> Fix For: 2.1
>
>
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-5290?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026107#comment-16026107
]
Nikolay Tikhonov commented on IGNITE-5290:
--
[~amashenkov],
It is not duplicate. Its other issue.
> Events might be missed during concurrent CQ registration and cache operations
> -
>
> Key: IGNITE-5290
> URL: https://issues.apache.org/jira/browse/IGNITE-5290
> Project: Ignite
> Issue Type: Bug
>Affects Versions: 2.0
>Reporter: Nikolay Tikhonov
> Attachments: test.patch
>
>
> Events might be missed during concurrent CQ registration and cache
> operations. See attached test.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-5242?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026106#comment-16026106
]
Alexander Paschenko commented on IGNITE-5242:
-
[~vozerov]
1, 3: agree, working on fixes
2: these flags (don't fail if exists; fail if not started; check thread tx)
match those used in routines like {{createFromTemplate}} with except for the
first. It's false as we want to process false result and throw schema opeation
exception from client code that calls this method ({{GridQueryProcessor}}, to
be precise), not from cache processor internals.
> Disallow DROP TABLE on statically configured caches
> ---
>
> Key: IGNITE-5242
> URL: https://issues.apache.org/jira/browse/IGNITE-5242
> Project: Ignite
> Issue Type: Task
> Components: sql
>Affects Versions: 2.0
>Reporter: Vladimir Ozerov
>Assignee: Alexander Paschenko
> Fix For: 2.1
>
>
> Should we allow {{DROP TABLE}} on statically configured cache, there will be
> a room for weird situations when it is impossible to understand on whether to
> start the cache or not.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-4477?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026104#comment-16026104
]
Vladimir Ozerov commented on IGNITE-4477:
-
[~dkarachentsev], my comments:
1) {{IgniteFuture}} - invalid JavaDocs. You claim that {{null}} executor will
move callback to the public pool, while in reality you throw an exception. I
think it is correct to disallow {{null}} here, so only JavaDocs need to be
fixed;
2) {{IgniteFutureImpl.chainInternal}} - why did you change the whole
implementation? There is already proper method to pass executor to in internal
future: {{GridFutureAdapter.chain(IgniteClosure, Executor)}}
> Fix IgniteFuture.listen() and IgniteFuture.chain() semantics
>
>
> Key: IGNITE-4477
> URL: https://issues.apache.org/jira/browse/IGNITE-4477
> Project: Ignite
> Issue Type: Task
> Components: general
>Affects Versions: 1.8
>Reporter: Vladimir Ozerov
>Assignee: Dmitry Karachentsev
> Labels: important
> Fix For: 2.1
>
>
> *Problem*
> We allow users to pass continuations to {{IgniteFuture}} which will be
> executed on future completion. This can be done through {{listen}} or
> {{chain}} methods.
> However, continuation semantics is broken intrinsically:
> 1) If future is already completed, user code executed in the same thread;
> 2) If future is not completed yet, it will be executed in completion thread.
> Neither of this options are valid because it easily leads to starvation. E.g.:
> {code}
> IgniteFuture fut = cache.getAsync(key2);
> fut.listen(fut0 -> {
> cache.put(key2, val2); // Possible deadlock, because invoked in sys pool;
> });
> {code}
> *Solution*
> 1) By default callbacks must be executed asynchronously in some common pool
> (public pool? new "callback pool"? FJP?)
> 2) It should be possible to specify where to execute a callback explicitly:
> {code}
> IgniteFuture.listen(IgniteClosure, ExecutorService);
> {code}
> 3) We may want to expose our public pool on API for convenience.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-4904?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026093#comment-16026093
]
Pavel Tupitsyn commented on IGNITE-4904:
Merged to master ({{d38ca8b1004effefa5126981f434649d26db1e68}}).
Ticket for {{UpdateAll}}: IGNITE-5298
> .NET: DML via LINQ
> --
>
> Key: IGNITE-4904
> URL: https://issues.apache.org/jira/browse/IGNITE-4904
> Project: Ignite
> Issue Type: New Feature
> Components: platforms
>Affects Versions: 1.9
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
> Labels: .NET, LINQ, important
> Fix For: 2.1
>
>
> Perform bulk update operations via LINQ: {{UPDATE WHERE}}, {{DELETE WHERE}}.
> Insert can already be done on object level with {{ICache.PutAll}}.
> 1) {{DELETE WHERE}}. This is quite simple. We can provide an extension method
> like this:
> {code}
> public static int DeleteAll(this ICache cache,
> IQueryable> items);
> {code}
> 2) {{UPDATE WHERE}}. This is tricky, because LINQ only works with expression
> trees, and multi-line methods are not supported. We should come up with a way
> to provide a list of columns and values, something like
> {code}
> public static int UpdateAll(this ICache cache,
> IQueryable> items, params UpdateAction[] actions);
> {code}
> where UpdateAction can consist of a MemberExpression and a value for that
> member.
> We should probably do delete as a separate task first.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
Pavel Tupitsyn created IGNITE-5298:
--
Summary: .NET: DML update via LINQ
Key: IGNITE-5298
URL: https://issues.apache.org/jira/browse/IGNITE-5298
Project: Ignite
Issue Type: New Feature
Components: platforms
Affects Versions: 2.1
Reporter: Pavel Tupitsyn
Fix For: 2.2
Bulk update with LINQ:
{code}
var persons = ignite.GetCache("persons").AsCacheQueryable();
int affectedRows = persons.Where(x => x.Key > 10).UpdateAll(x => x.Value.OrgId
= 7);
{code}
See bulk delete with {{RemoveAll}}, IGNITE-4904.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
Pavel Tupitsyn created IGNITE-5297:
--
Summary: .NET: DML update via LINQ
Key: IGNITE-5297
URL: https://issues.apache.org/jira/browse/IGNITE-5297
Project: Ignite
Issue Type: New Feature
Components: platforms
Affects Versions: 2.1
Reporter: Pavel Tupitsyn
Fix For: 2.2
Bulk update with LINQ:
{code}
var persons = ignite.GetCache("persons").AsCacheQueryable();
int affectedRows = persons.Where(x => x.Key > 10).UpdateAll(x => x.Value.OrgId
= 7);
{code}
See bulk delete with {{RemoveAll}}, IGNITE-4904.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-4904?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026086#comment-16026086
]
ASF GitHub Bot commented on IGNITE-4904:
Github user asfgit closed the pull request at:
https://github.com/apache/ignite/pull/2009
> .NET: DML via LINQ
> --
>
> Key: IGNITE-4904
> URL: https://issues.apache.org/jira/browse/IGNITE-4904
> Project: Ignite
> Issue Type: New Feature
> Components: platforms
>Affects Versions: 1.9
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
> Labels: .NET, LINQ, important
> Fix For: 2.1
>
>
> Perform bulk update operations via LINQ: {{UPDATE WHERE}}, {{DELETE WHERE}}.
> Insert can already be done on object level with {{ICache.PutAll}}.
> 1) {{DELETE WHERE}}. This is quite simple. We can provide an extension method
> like this:
> {code}
> public static int DeleteAll(this ICache cache,
> IQueryable> items);
> {code}
> 2) {{UPDATE WHERE}}. This is tricky, because LINQ only works with expression
> trees, and multi-line methods are not supported. We should come up with a way
> to provide a list of columns and values, something like
> {code}
> public static int UpdateAll(this ICache cache,
> IQueryable> items, params UpdateAction[] actions);
> {code}
> where UpdateAction can consist of a MemberExpression and a value for that
> member.
> We should probably do delete as a separate task first.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-4667?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026082#comment-16026082
]
ASF GitHub Bot commented on IGNITE-4667:
GitHub user dkarachentsev opened a pull request:
https://github.com/apache/ignite/pull/2012
IGNITE-4667 - Throw exception on starting client cache when indexed t…
…ypes cannot be loaded
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/gridgain/apache-ignite ignite-4667-master
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/ignite/pull/2012.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #2012
commit 22a64e30a3e1e7cac322a520d12cfd7cb179c524
Author: dkarachentsev
Date: 2017-05-26T09:55:55Z
IGNITE-4667 - Throw exception on starting client cache when indexed types
cannot be loaded
> Throw exception on starting client cache when indexed types cannot be loaded
>
>
> Key: IGNITE-4667
> URL: https://issues.apache.org/jira/browse/IGNITE-4667
> Project: Ignite
> Issue Type: Bug
> Components: cache
>Affects Versions: 1.8
>Reporter: Dmitry Karachentsev
>Assignee: Dmitry Karachentsev
> Fix For: 2.1
>
>
> Assume following situation:
> 1. Server node configured cache indexed types with classes that client node
> doesn't have.
> 2. Start server.
> 3. Start client. Client successfully connected.
> 4. Try to get cache on client node.
> 5. Was thrown exception in GridQueryProcessor and request for cache on client
> node hangs forever.
> If on some reason cache couldn't be initialized, exception must be thrown on
> Ignite.cache() operation.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-4904?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Vladimir Ozerov updated IGNITE-4904:
Labels: .NET LINQ important (was: .NET LINQ)
> .NET: DML via LINQ
> --
>
> Key: IGNITE-4904
> URL: https://issues.apache.org/jira/browse/IGNITE-4904
> Project: Ignite
> Issue Type: New Feature
> Components: platforms
>Affects Versions: 1.9
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
> Labels: .NET, LINQ, important
> Fix For: 2.1
>
>
> Perform bulk update operations via LINQ: {{UPDATE WHERE}}, {{DELETE WHERE}}.
> Insert can already be done on object level with {{ICache.PutAll}}.
> 1) {{DELETE WHERE}}. This is quite simple. We can provide an extension method
> like this:
> {code}
> public static int DeleteAll(this ICache cache,
> IQueryable> items);
> {code}
> 2) {{UPDATE WHERE}}. This is tricky, because LINQ only works with expression
> trees, and multi-line methods are not supported. We should come up with a way
> to provide a list of columns and values, something like
> {code}
> public static int UpdateAll(this ICache cache,
> IQueryable> items, params UpdateAction[] actions);
> {code}
> where UpdateAction can consist of a MemberExpression and a value for that
> member.
> We should probably do delete as a separate task first.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-4904?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026078#comment-16026078
]
Vladimir Ozerov commented on IGNITE-4904:
-
[~ptupitsyn], agree.
> .NET: DML via LINQ
> --
>
> Key: IGNITE-4904
> URL: https://issues.apache.org/jira/browse/IGNITE-4904
> Project: Ignite
> Issue Type: New Feature
> Components: platforms
>Affects Versions: 1.9
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
> Labels: .NET, LINQ, important
> Fix For: 2.1
>
>
> Perform bulk update operations via LINQ: {{UPDATE WHERE}}, {{DELETE WHERE}}.
> Insert can already be done on object level with {{ICache.PutAll}}.
> 1) {{DELETE WHERE}}. This is quite simple. We can provide an extension method
> like this:
> {code}
> public static int DeleteAll(this ICache cache,
> IQueryable> items);
> {code}
> 2) {{UPDATE WHERE}}. This is tricky, because LINQ only works with expression
> trees, and multi-line methods are not supported. We should come up with a way
> to provide a list of columns and values, something like
> {code}
> public static int UpdateAll(this ICache cache,
> IQueryable> items, params UpdateAction[] actions);
> {code}
> where UpdateAction can consist of a MemberExpression and a value for that
> member.
> We should probably do delete as a separate task first.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-5242?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026043#comment-16026043
]
Vladimir Ozerov commented on IGNITE-5242:
-
[~al.psc], my comments:
1) {{ClusterCachesInfo}}:817 - why false? Shouldn't we pass SQL flag here?
2) {{GridCacheProcessor.dynamicStartSqlCache}} - I do not understand flags you
pass.
3) Not enough tests. You should also test node join scenario to ensure that SQL
flag is propagated correctly between nodes, and that SQL-created cache cannot
be "merged" with non-sql cache.
> Disallow DROP TABLE on statically configured caches
> ---
>
> Key: IGNITE-5242
> URL: https://issues.apache.org/jira/browse/IGNITE-5242
> Project: Ignite
> Issue Type: Task
> Components: sql
>Affects Versions: 2.0
>Reporter: Vladimir Ozerov
>Assignee: Alexander Paschenko
> Fix For: 2.1
>
>
> Should we allow {{DROP TABLE}} on statically configured cache, there will be
> a room for weird situations when it is impossible to understand on whether to
> start the cache or not.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-5038?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16026033#comment-16026033
]
Vladislav Pyatkov commented on IGNITE-5038:
---
I heave add ability to customize class loader when deserialize object from
binary.
Added method {{BinaryObject#deserialize(java.lang.ClassLoader)}}.
Lock at my PR:
https://github.com/apache/ignite/pull/2011
Now the fix is testing on TC
> BinaryMarshaller might need to use context class loader for deserialization
> ---
>
> Key: IGNITE-5038
> URL: https://issues.apache.org/jira/browse/IGNITE-5038
> Project: Ignite
> Issue Type: New Feature
> Components: cache
>Affects Versions: 2.0
>Reporter: Dmitry Karachentsev
>Assignee: Vladislav Pyatkov
> Labels: features
> Fix For: 2.1
>
>
> There is a special use case discussed on the dev list:
> http://apache-ignite-developers.2346864.n4.nabble.com/Re-BinaryObjectImpl-deserializeValue-with-specific-ClassLoader-td17126.html#a17224
> According to the use case, BinaryMarshaller might need to try to deserialize
> an object using a context class loader if it failed to do so with a custom
> classloader (`IgniteConfiguration.getClassLoader()`) or the system one.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-5277?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Vladimir Ozerov updated IGNITE-5277:
Labels: (was: important)
> Asynchronously establish connection to all the needed nodes in
> IgniteH2Indexing.send()
> --
>
> Key: IGNITE-5277
> URL: https://issues.apache.org/jira/browse/IGNITE-5277
> Project: Ignite
> Issue Type: Improvement
> Components: sql
>Reporter: Sergi Vladykin
> Fix For: 2.2
>
>
> it's only a minor optimization until the point when establishing each
> connection takes 3-4 seconds, and we establish 32 of them in sequence. At
> that point it becomes a serious issue: the customer cannot run SQL queries
> from their development machines
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-5277?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Vladimir Ozerov updated IGNITE-5277:
Fix Version/s: (was: 2.1)
2.2
> Asynchronously establish connection to all the needed nodes in
> IgniteH2Indexing.send()
> --
>
> Key: IGNITE-5277
> URL: https://issues.apache.org/jira/browse/IGNITE-5277
> Project: Ignite
> Issue Type: Improvement
> Components: sql
>Reporter: Sergi Vladykin
> Fix For: 2.2
>
>
> it's only a minor optimization until the point when establishing each
> connection takes 3-4 seconds, and we establish 32 of them in sequence. At
> that point it becomes a serious issue: the customer cannot run SQL queries
> from their development machines
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
[
https://issues.apache.org/jira/browse/IGNITE-4904?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16025987#comment-16025987
]
Pavel Tupitsyn commented on IGNITE-4904:
{{RemoveAll}} done, TC looks good. [~vozerov] please have a look.
I think we should release {{RemoveAll}} now and implement {{UpdateAll}} later
(it is a lot more complicated), do you agree?
> .NET: DML via LINQ
> --
>
> Key: IGNITE-4904
> URL: https://issues.apache.org/jira/browse/IGNITE-4904
> Project: Ignite
> Issue Type: New Feature
> Components: platforms
>Affects Versions: 1.9
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
> Labels: .NET, LINQ
> Fix For: 2.1
>
>
> Perform bulk update operations via LINQ: {{UPDATE WHERE}}, {{DELETE WHERE}}.
> Insert can already be done on object level with {{ICache.PutAll}}.
> 1) {{DELETE WHERE}}. This is quite simple. We can provide an extension method
> like this:
> {code}
> public static int DeleteAll(this ICache cache,
> IQueryable> items);
> {code}
> 2) {{UPDATE WHERE}}. This is tricky, because LINQ only works with expression
> trees, and multi-line methods are not supported. We should come up with a way
> to provide a list of columns and values, something like
> {code}
> public static int UpdateAll(this ICache cache,
> IQueryable> items, params UpdateAction[] actions);
> {code}
> where UpdateAction can consist of a MemberExpression and a value for that
> member.
> We should probably do delete as a separate task first.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)