[jira] [Created] (IGNITE-13175) NPE due to race on cache stop and transaction commit.

2020-06-22 Thread Alexand Polyakov (Jira)
Alexand Polyakov created IGNITE-13175:
-

 Summary: NPE due to race on cache stop and transaction commit.
 Key: IGNITE-13175
 URL: https://issues.apache.org/jira/browse/IGNITE-13175
 Project: Ignite
  Issue Type: Bug
Affects Versions: 2.7
Reporter: Alexand Polyakov


If don't stop load and execute stop cache, sometimes throw NullPointerException 
and nodes failed
{code}
java.lang.NullPointerException: null
at 
org.apache.ignite.internal.binary.BinaryObjectImpl.finishUnmarshal(BinaryObjectImpl.java:190)
at 
org.apache.ignite.internal.processors.cache.transactions.TxEntryValueHolder.unmarshal(TxEntryValueHolder.java:154)
at 
org.apache.ignite.internal.processors.cache.transactions.IgniteTxEntry.unmarshal(IgniteTxEntry.java:971)
at 
org.apache.ignite.internal.processors.cache.transactions.IgniteTxHandler.unmarshal(IgniteTxHandler.java:354)
at 
org.apache.ignite.internal.processors.cache.transactions.IgniteTxHandler.prepareNearTx(IgniteTxHandler.java:403)
at 
org.apache.ignite.internal.processors.cache.transactions.IgniteTxHandler.prepareNearTx(IgniteTxHandler.java:386)
at 
org.apache.ignite.internal.processors.cache.transactions.IgniteTxHandler.processNearTxPrepareRequest0(IgniteTxHandler.java:188)
at 
org.apache.ignite.internal.processors.cache.transactions.IgniteTxHandler.lambda$null$0(IgniteTxHandler.java:644)
at 
org.apache.ignite.internal.util.StripedExecutor$Stripe.body(StripedExecutor.java:559)
at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:119)
at java.lang.Thread.run(Thread.java:748)
{code}
transaction use cache context race with stopCache
{code:java}
at 
org.apache.ignite.internal.processors.cache.GridCacheContext.cleanup(GridCacheContext.java:2058)
at 
org.apache.ignite.internal.processors.cache.GridCacheProcessor.cleanup(GridCacheProcessor.java:467)
at 
org.apache.ignite.internal.processors.cache.GridCacheProcessor.stopCache(GridCacheProcessor.java:1020)
at 
org.apache.ignite.internal.processors.cache.GridCacheProcessor.prepareCacheStop(GridCacheProcessor.java:2539)
at 
org.apache.ignite.internal.processors.cache.GridCacheProcessor.prepareCacheStop(GridCacheProcessor.java:2518)
{code}
there is a reproducer who adds CountDownLatch await to IgniteTxEntry#unmarshal 
which is countDown in GridCacheContext#cleanup
https://github.com/gridgain/gridgain/tree/sdsb-11837




--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-13164) Thin client: Fix nodeIds format for execute compute tasks request

2020-06-22 Thread Aleksey Plekhanov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-13164?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aleksey Plekhanov updated IGNITE-13164:
---
Affects Version/s: 2.9

> Thin client: Fix nodeIds format for execute compute tasks request 
> --
>
> Key: IGNITE-13164
> URL: https://issues.apache.org/jira/browse/IGNITE-13164
> Project: Ignite
>  Issue Type: Improvement
>  Components: thin client
>Affects Versions: 2.9
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> Currently, each node id in thin client execute compute task request is 
> written using 17 bytes (1 byte for type id and 16 bytes for UUID raw data). 
> Since we don't need information about type id and node id can't be null we 
> can write only UUID raw data as now implemented for service invoke request.
> Compute functionality is not released yet, so format can be changed without 
> compatibility issues.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-11662) Wrong classloader is used to unmarshal joining node data

2020-06-22 Thread Richard Bryan (Jira)


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

Richard Bryan commented on IGNITE-11662:


Fix looks good, and is necessary for clustering in Karaf.  Please merge to 
master.

> Wrong classloader is used to unmarshal joining node data
> 
>
> Key: IGNITE-11662
> URL: https://issues.apache.org/jira/browse/IGNITE-11662
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 2.7
> Environment: Ignite 2.7
> Karaf 4.2.0
>Reporter: Oleksii Mohylin
>Assignee: Oleksii Mohylin
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> When a cluster coordinator node is running in Karaf container it cannot 
> accept joining requests from other nodes. Problem lies in unability to 
> unmarshal joining node data in 
> org.apache.ignite.internal.processors.cluster.GridClusterStateProcessor.validateNode()
> This line
> {code:java}
> joiningNodeState = marsh.unmarshal((byte[]) discoData.joiningNodeData(), 
> Thread.currentThread().getContextClassLoader());{code}
> fails with
> {noformat}
> Error on unmarshalling discovery data from node 
> 10.0.2.15,127.0.0.1,172.17.0.1:47501: Failed to find class with given class 
> loader for unmarshalling (make sure same versions of all classes are 
> available on all nodes or enable peer-class-loading) 
> [clsLdr=jdk.internal.loader.ClassLoaders$AppClassLoader@5c0369c4, 
> cls=org.apache.ignite.internal.processors.cluster.DiscoveryDataClusterState]; 
> node is not allowed to join{noformat}
> Apparently problem is wrong classloader returned by
> {code:java}
> Thread.currentThread().getContextClassLoader()){code}
> which is not the one created in IgniteAbstractOsgiContextActivator.start().
> *Proposed fix:* 
> use proper way of obtaining classloader:
> {code:java}
>  U.resolveClassLoader(ctx.config()){code}
> Like in other places. i.e. in GridClusterStateProcessor.collectGridNodeData().
>  
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-11351) Basic "Starting Ignite inside an OSGi container" doesn't work

2020-06-22 Thread Richard Bryan (Jira)


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

Richard Bryan commented on IGNITE-11351:


Fix looks good, and is necessary for clustering in Karaf.  Please merge to 
master.

> Basic "Starting Ignite inside an OSGi container" doesn't work
> -
>
> Key: IGNITE-11351
> URL: https://issues.apache.org/jira/browse/IGNITE-11351
> Project: Ignite
>  Issue Type: Bug
>  Components: osgi
>Affects Versions: 2.7
> Environment: Apache Felix, JDK 1.8
>Reporter: Xander Uiterlinden
>Priority: Major
> Attachments: ignite-osgi-patch.diff
>
>
> When running the example from 
> [https://apacheignite.readme.io/v1.5/docs/osgi-starting-inside-a-container] 
> you're getting the following error.
> Failed to start Ignite via OSGi Activator [errMsg=Failed to find empty 
> constructor for class: 
> o.a.i.i.processors.platform.websession.PlatformDotNetSessionLockResult]class 
> Looking at the codebase this class does indeed not have an empty constructor. 
> When adding that, you'll be running into the next issue which is a 
> classloader issue. Ignite needs to be started with the correct context 
> classloader for it to start successfully.
> Please find the attached patch that resolves both problems.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Issue Comment Deleted] (IGNITE-11351) Basic "Starting Ignite inside an OSGi container" doesn't work

2020-06-22 Thread Richard Bryan (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-11351?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Richard Bryan updated IGNITE-11351:
---
Comment: was deleted

(was: Fix looks good, and is necessary for clustering in Karaf.  Please merge 
to master.)

> Basic "Starting Ignite inside an OSGi container" doesn't work
> -
>
> Key: IGNITE-11351
> URL: https://issues.apache.org/jira/browse/IGNITE-11351
> Project: Ignite
>  Issue Type: Bug
>  Components: osgi
>Affects Versions: 2.7
> Environment: Apache Felix, JDK 1.8
>Reporter: Xander Uiterlinden
>Priority: Major
> Attachments: ignite-osgi-patch.diff
>
>
> When running the example from 
> [https://apacheignite.readme.io/v1.5/docs/osgi-starting-inside-a-container] 
> you're getting the following error.
> Failed to start Ignite via OSGi Activator [errMsg=Failed to find empty 
> constructor for class: 
> o.a.i.i.processors.platform.websession.PlatformDotNetSessionLockResult]class 
> Looking at the codebase this class does indeed not have an empty constructor. 
> When adding that, you'll be running into the next issue which is a 
> classloader issue. Ignite needs to be started with the correct context 
> classloader for it to start successfully.
> Please find the attached patch that resolves both problems.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-13155) Snapshot creation throws NPE on an in-memory cluster

2020-06-22 Thread Maxim Muzafarov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-13155?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Maxim Muzafarov updated IGNITE-13155:
-
Ignite Flags:   (was: Docs Required,Release Notes Required)

> Snapshot creation throws NPE on an in-memory cluster
> 
>
> Key: IGNITE-13155
> URL: https://issues.apache.org/jira/browse/IGNITE-13155
> Project: Ignite
>  Issue Type: Bug
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Major
> Fix For: 2.9
>
>
> Snapshot creation throws NPE on an in-memory cluster.
> {code}
> Error stack trace:
> class org.apache.ignite.internal.client.GridClientException: Failed to handle 
> request: [req=EXE, 
> taskName=org.apache.ignite.internal.visor.snapshot.VisorSnapshotCreateTask, 
> params=[VisorTaskArgument [debug=false]], err=Failed to reduce job results 
> due to undeclared user exception 
> [task=org.apache.ignite.internal.visor.snapshot.VisorSnapshotCreateTask@4d45b97f,
>  err=class org.apache.ignite.IgniteException: null], trace=class 
> org.apache.ignite.IgniteCheckedException: Failed to reduce job results due to 
> undeclared user exception 
> [task=org.apache.ignite.internal.visor.snapshot.VisorSnapshotCreateTask@4d45b97f,
>  err=class org.apache.ignite.IgniteException: null]
>   at 
> org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:7566)
>   at 
> org.apache.ignite.internal.util.future.GridFutureAdapter.resolve(GridFutureAdapter.java:260)
>   at 
> org.apache.ignite.internal.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:172)
>   at 
> org.apache.ignite.internal.util.future.GridFutureAdapter.get(GridFutureAdapter.java:141)
>   at 
> org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler$2.apply(GridTaskCommandHandler.java:263)
>   at 
> org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler$2.apply(GridTaskCommandHandler.java:257)
>   at 
> org.apache.ignite.internal.util.future.GridFutureAdapter.notifyListener(GridFutureAdapter.java:399)
>   at 
> org.apache.ignite.internal.util.future.GridFutureAdapter.listen(GridFutureAdapter.java:354)
>   at 
> org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler.handleAsyncUnsafe(GridTaskCommandHandler.java:257)
>   at 
> org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler.handleAsync(GridTaskCommandHandler.java:163)
>   at 
> org.apache.ignite.internal.processors.rest.GridRestProcessor.handleRequest(GridRestProcessor.java:325)
>   at 
> org.apache.ignite.internal.processors.rest.GridRestProcessor.access$100(GridRestProcessor.java:104)
>   at 
> org.apache.ignite.internal.processors.rest.GridRestProcessor$2.body(GridRestProcessor.java:179)
>   at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
>   at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>   at java.lang.Thread.run(Thread.java:748)
> Caused by: class org.apache.ignite.compute.ComputeUserUndeclaredException: 
> Failed to reduce job results due to undeclared user exception 
> [task=org.apache.ignite.internal.visor.snapshot.VisorSnapshotCreateTask@4d45b97f,
>  err=class org.apache.ignite.IgniteException: null]
>   at 
> org.apache.ignite.internal.processors.task.GridTaskWorker.reduce(GridTaskWorker.java:1184)
>   at 
> org.apache.ignite.internal.processors.task.GridTaskWorker.onResponse(GridTaskWorker.java:974)
>   at 
> org.apache.ignite.internal.processors.task.GridTaskWorker.processDelayedResponses(GridTaskWorker.java:711)
>   at 
> org.apache.ignite.internal.processors.task.GridTaskWorker.body(GridTaskWorker.java:542)
>   at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
>   at 
> org.apache.ignite.internal.processors.task.GridTaskProcessor.startTask(GridTaskProcessor.java:830)
>   at 
> org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:555)
>   at 
> org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:535)
>   at 
> org.apache.ignite.internal.processors.rest.handlers.task.GridTaskCommandHandler.handleAsyncUnsafe(GridTaskCommandHandler.java:227)
>   ... 8 more
> Caused by: class org.apache.ignite.IgniteException: null
>   at 
> org.apache.ignite.internal.util.IgniteUtils.convertException(IgniteUtils.java:1086)
>   at 
> org.apache.ignite.internal.util.future.IgniteFutureImpl.convertException(IgniteFutureImpl.java:168)
>   at 
> org.apache.ignite.internal.util.future.IgniteFutureImpl.get(IgniteFutureImpl.java:137)
>   at

[jira] [Assigned] (IGNITE-13005) Spring Data 2 - "JPA style" and working with multiple Ignite instances on same JVM

2020-06-22 Thread Jira


 [ 
https://issues.apache.org/jira/browse/IGNITE-13005?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Manuel Núñez reassigned IGNITE-13005:
-

Assignee: Manuel Núñez

> Spring Data 2 - "JPA style" and working with multiple Ignite instances on 
> same JVM
> --
>
> Key: IGNITE-13005
> URL: https://issues.apache.org/jira/browse/IGNITE-13005
> Project: Ignite
>  Issue Type: Improvement
>  Components: spring
>Affects Versions: 2.7.6, 2.8.1
>Reporter: Manuel Núñez
>Assignee: Manuel Núñez
>Priority: Major
>  Labels: spring-data
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> I have it working for Spring Data 2 (2.7.6, 2.8.1) module with some 
> interesting improvements.
> Code is 100% compatible with previous versions. 
> [https://github.com/hawkore/ignite-hk/tree/master/modules/spring-data-2.0]
>  * Supports multiple ignite instances on same JVM (@RepositoryConfig).
>  * Supports query tuning parameters in {{@Query}} annotation
>  * Supports projections
>  * Supports {{Page}} and {{Stream}} responses
>  * Supports Sql Fields Query resultset transformation into the domain entity
>  * Supports named parameters ({{:myParam}}) into SQL queries, declared using 
> {{@Param("myParam")}}
>  * Supports advanced parameter binding and SpEL expressions into SQL queries:
>  ** *Template variables*:
>  *** {{#entityName}} - the simple class name of the domain entity
>  ** *Method parameter expressions*: Parameters are exposed for indexed access 
> ({{[0]}} is the first query method's param) or via the name declared using 
> {{@Param}}. The actual SpEL expression binding is triggered by {{?#}}. 
> Example: {{?#\{[0]\}} or {{?#\{#myParamName\}}}
>  ** *Advanced SpEL expressions*: While advanced parameter binding is a very 
> useful feature, the real power of SpEL stems from the fact, that the 
> expressions can refer to framework abstractions or other application 
> components through SpEL EvaluationContext extension model.
>  * Supports SpEL expressions into Text queries ({{TextQuery}}). 
> Some examples:
> {code:java}
> // Spring Data Repositories using different ignite instances on same JVM
> @RepositoryConfig(igniteInstance = "FLIGHTS_BBDD", cacheName = "ROUTES")
> public interface FlightRouteRepository extends IgniteRepository String> {
> ...
> }
> @RepositoryConfig(igniteInstance = "GEO_BBDD", cacheName = "POIS")
> public interface PoiRepository extends IgniteRepository {
> ...
> }
> {code}
> {code:java}
> // named parameter
> @Query(value = "SELECT * from #{#entityName} where email = :email")
> User searchUserByEmail(@Param("email") String email);
> {code}
> {code:java}
> // indexed parameters
> @Query(value = "SELECT * from #{#entityName} where country = ?#{[0] and city 
> = ?#{[1]}")
> List searchUsersByCity(@Param("country") String country, @Param("city") 
> String city, Pageable pageable);
> {code}
> {code:java}
> // ordered method parameters
> @Query(value = "SELECT * from #{#entityName} where email = ?")
> User searchUserByEmail(String email);
> {code}
> {code:java}
> // Advanced SpEL expressions
> @Query(value = "SELECT * from #{#entityName} where uuidCity = 
> ?#{mySpELFunctionsBean.cityNameToUUID(#city)}")
> List searchUsersByCity(@Param("city") String city, Pageable pageable);
> {code}
> {code:java}
> // textQuery - evaluated SpEL named parameter
> @Query(textQuery = true, value = "email: #{#email}")
> User searchUserByEmail(@Param("email") String email);
> {code}
> {code:java}
> // textQuery - evaluated SpEL named parameter
> @Query(textQuery = true, value = "#{#textToSearch}")
> List searchUsersByText(@Param("textToSearch") String text, Pageable 
> pageable);
> {code}
> {code:java}
> // textQuery - evaluated SpEL indexed parameter
> @Query(textQuery = true, value = "#{[0]}")
> List searchUsersByText(String textToSearch, Pageable pageable);
> {code}
> {code:java}
> // Static Projection
> @Query(value =
>"SELECT DISTINCT m.id, m.name, m.logos FROM #{#entityName} e 
> USE INDEX (ORIGIN_IDX) INNER JOIN \"flightMerchants\".Merchant m ON m"
>+ "._key=e"
>+ ".merchant WHERE e.origin = :origin and e.disabled = 
> :disabled GROUP BY m.id, m.name, m.logos ORDER BY m.name")
> List searchMerchantsByOrigin(@Param("origin") String origin, 
> @Param("disabled") boolean disabled);
> {code}
> {code:java}
> // Dynamic Projection
> @Query(value =
>"SELECT DISTINCT m.id, m.name, m.logos FROM #{#entityName} e 
> USE INDEX (ORIGIN_IDX) INNER JOIN \"flightMerchants\".Merchant m ON m"
>+ "._key=e"
>+ ".merchant WHERE e.origin = :origin and e.disabled = 
> :disabled GROUP BY m.id, m.name, m.logos ORDER BY m.name")
>  List searchMerchantsByOrigin(Class project

[jira] [Updated] (IGNITE-13005) Spring Data 2 - "JPA style" and working with multiple Ignite instances on same JVM

2020-06-22 Thread Jira


 [ 
https://issues.apache.org/jira/browse/IGNITE-13005?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Manuel Núñez updated IGNITE-13005:
--
Description: 
I have it working for Spring Data 2 (2.7.6, 2.8.1) module with some interesting 
improvements.

Code is 100% compatible with previous versions. 
[https://github.com/hawkore/ignite-hk/tree/master/modules/spring-data-2.0]
 * Supports multiple ignite instances on same JVM (@RepositoryConfig).
 * Supports query tuning parameters in {{@Query}} annotation
 * Supports projections
 * Supports {{Page}} and {{Stream}} responses
 * Supports Sql Fields Query resultset transformation into the domain entity
 * Supports named parameters ({{:myParam}}) into SQL queries, declared using 
{{@Param("myParam")}}
 * Supports advanced parameter binding and SpEL expressions into SQL queries:
 ** *Template variables*:
 *** {{#entityName}} - the simple class name of the domain entity
 ** *Method parameter expressions*: Parameters are exposed for indexed access 
({{[0]}} is the first query method's param) or via the name declared using 
{{@Param}}. The actual SpEL expression binding is triggered by {{?#}}. Example: 
{{?#\{[0]\}} or {{?#\{#myParamName\}}}
 ** *Advanced SpEL expressions*: While advanced parameter binding is a very 
useful feature, the real power of SpEL stems from the fact, that the 
expressions can refer to framework abstractions or other application components 
through SpEL EvaluationContext extension model.
 * Supports SpEL expressions into Text queries ({{TextQuery}}). 

Some examples:

{code:java}
// Spring Data Repositories using different ignite instances on same JVM
@RepositoryConfig(igniteInstance = "FLIGHTS_BBDD", cacheName = "ROUTES")
public interface FlightRouteRepository extends IgniteRepository {

...

}

@RepositoryConfig(igniteInstance = "GEO_BBDD", cacheName = "POIS")
public interface PoiRepository extends IgniteRepository {

...

}
{code}

{code:java}
// named parameter
@Query(value = "SELECT * from #{#entityName} where email = :email")
User searchUserByEmail(@Param("email") String email);
{code}
{code:java}
// indexed parameters
@Query(value = "SELECT * from #{#entityName} where country = ?#{[0] and city = 
?#{[1]}")
List searchUsersByCity(@Param("country") String country, @Param("city") 
String city, Pageable pageable);
{code}
{code:java}
// ordered method parameters
@Query(value = "SELECT * from #{#entityName} where email = ?")
User searchUserByEmail(String email);
{code}
{code:java}
// Advanced SpEL expressions
@Query(value = "SELECT * from #{#entityName} where uuidCity = 
?#{mySpELFunctionsBean.cityNameToUUID(#city)}")
List searchUsersByCity(@Param("city") String city, Pageable pageable);
{code}
{code:java}
// textQuery - evaluated SpEL named parameter
@Query(textQuery = true, value = "email: #{#email}")
User searchUserByEmail(@Param("email") String email);
{code}
{code:java}
// textQuery - evaluated SpEL named parameter
@Query(textQuery = true, value = "#{#textToSearch}")
List searchUsersByText(@Param("textToSearch") String text, Pageable 
pageable);
{code}
{code:java}
// textQuery - evaluated SpEL indexed parameter
@Query(textQuery = true, value = "#{[0]}")
List searchUsersByText(String textToSearch, Pageable pageable);
{code}
{code:java}
// Static Projection
@Query(value =
   "SELECT DISTINCT m.id, m.name, m.logos FROM #{#entityName} e USE 
INDEX (ORIGIN_IDX) INNER JOIN \"flightMerchants\".Merchant m ON m"
   + "._key=e"
   + ".merchant WHERE e.origin = :origin and e.disabled = 
:disabled GROUP BY m.id, m.name, m.logos ORDER BY m.name")
List searchMerchantsByOrigin(@Param("origin") String origin, 
@Param("disabled") boolean disabled);
{code}
{code:java}
// Dynamic Projection
@Query(value =
   "SELECT DISTINCT m.id, m.name, m.logos FROM #{#entityName} e USE 
INDEX (ORIGIN_IDX) INNER JOIN \"flightMerchants\".Merchant m ON m"
   + "._key=e"
   + ".merchant WHERE e.origin = :origin and e.disabled = 
:disabled GROUP BY m.id, m.name, m.logos ORDER BY m.name")
 List searchMerchantsByOrigin(Class projection, @Param("origin") 
String origin, @Param("disabled") boolean disabled);
{code}

  was:
I have it working for Spring Data 2 (2.7.6, 2.8.1) module with some interesting 
improvements. Is there any ignite developer who can do the pull-request 
process?. Thanks community!!

Code is 100% compatible with previous versions. 
[https://github.com/hawkore/ignite-hk/tree/master/modules/spring-data-2.0]
 * Supports multiple ignite instances on same JVM (@RepositoryConfig).
 * Supports query tuning parameters in {{@Query}} annotation
 * Supports projections
 * Supports {{Page}} and {{Stream}} responses
 * Supports Sql Fields Query resultset transformation into the domain entity
 * Supports named parameters ({{:myParam}}) into SQL queries, declared using 
{{@Param("myParam")}}
 * Supports advanced parameter bi

[jira] [Commented] (IGNITE-13078) С++: Add CMake build support

2020-06-22 Thread Igor Sapego (Jira)


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

Igor Sapego commented on IGNITE-13078:
--

[~ivandasch] looks good to me.

> С++: Add CMake build support
> 
>
> Key: IGNITE-13078
> URL: https://issues.apache.org/jira/browse/IGNITE-13078
> Project: Ignite
>  Issue Type: Improvement
>  Components: platforms
>Reporter: Ivan Daschinskiy
>Assignee: Ivan Daschinskiy
>Priority: Major
> Fix For: 2.9
>
> Attachments: ignite-13078-dynamic-odbc.patch, 
> ignite-13078-static-odbc.patch
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currently, it is hard to build Ignite.C++. Different build processes for 
> windows and Linux, lack of building support on Mac OS X (a quite popular OS 
> among developers), absolutely not IDE support, except windows and only Visual 
> Studio is supported.
> I’d suggest migrating to the CMake build system. It is very popular among 
> open source projects, and in The Apache Software Foundation too. Notable 
> users: Apache Mesos, Apache Zookeeper (C client offers CMake as an 
> alternative to autoconf and the only option on Windows), Apache Kafka 
> (librdkafka - C/C++ client), Apache Thrift. Popular column-oriented database 
> ClickHouse also uses CMake.
> CMake is widely supported in many IDE’s on various platforms, notably Visual 
> Studio, CLion, Xcode, QtCreator, KDevelop.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-13005) Spring Data 2 - "JPA style" and working with multiple Ignite instances on same JVM

2020-06-22 Thread Jira


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

Manuel Núñez commented on IGNITE-13005:
---

Done https://github.com/apache/ignite/pull/7953.

> Spring Data 2 - "JPA style" and working with multiple Ignite instances on 
> same JVM
> --
>
> Key: IGNITE-13005
> URL: https://issues.apache.org/jira/browse/IGNITE-13005
> Project: Ignite
>  Issue Type: Improvement
>  Components: spring
>Affects Versions: 2.7.6, 2.8.1
>Reporter: Manuel Núñez
>Priority: Major
>  Labels: spring-data
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> I have it working for Spring Data 2 (2.7.6, 2.8.1) module with some 
> interesting improvements. Is there any ignite developer who can do the 
> pull-request process?. Thanks community!!
> Code is 100% compatible with previous versions. 
> [https://github.com/hawkore/ignite-hk/tree/master/modules/spring-data-2.0]
>  * Supports multiple ignite instances on same JVM (@RepositoryConfig).
>  * Supports query tuning parameters in {{@Query}} annotation
>  * Supports projections
>  * Supports {{Page}} and {{Stream}} responses
>  * Supports Sql Fields Query resultset transformation into the domain entity
>  * Supports named parameters ({{:myParam}}) into SQL queries, declared using 
> {{@Param("myParam")}}
>  * Supports advanced parameter binding and SpEL expressions into SQL queries:
>  ** *Template variables*:
>  *** {{#entityName}} - the simple class name of the domain entity
>  ** *Method parameter expressions*: Parameters are exposed for indexed access 
> ({{[0]}} is the first query method's param) or via the name declared using 
> {{@Param}}. The actual SpEL expression binding is triggered by {{?#}}. 
> Example: {{?#\{[0]\}} or {{?#\{#myParamName\}}}
>  ** *Advanced SpEL expressions*: While advanced parameter binding is a very 
> useful feature, the real power of SpEL stems from the fact, that the 
> expressions can refer to framework abstractions or other application 
> components through SpEL EvaluationContext extension model.
>  * Supports SpEL expressions into Text queries ({{TextQuery}}). 
> Some examples:
> {code:java}
> // Spring Data Repositories using different ignite instances on same JVM
> @RepositoryConfig(igniteInstance = "FLIGHTS_BBDD", cacheName = "ROUTES")
> public interface FlightRouteRepository extends IgniteRepository String> {
> ...
> }
> @RepositoryConfig(igniteInstance = "GEO_BBDD", cacheName = "POIS")
> public interface PoiRepository extends IgniteRepository {
> ...
> }
> {code}
> {code:java}
> // named parameter
> @Query(value = "SELECT * from #{#entityName} where email = :email")
> User searchUserByEmail(@Param("email") String email);
> {code}
> {code:java}
> // indexed parameters
> @Query(value = "SELECT * from #{#entityName} where country = ?#{[0] and city 
> = ?#{[1]}")
> List searchUsersByCity(@Param("country") String country, @Param("city") 
> String city, Pageable pageable);
> {code}
> {code:java}
> // ordered method parameters
> @Query(value = "SELECT * from #{#entityName} where email = ?")
> User searchUserByEmail(String email);
> {code}
> {code:java}
> // Advanced SpEL expressions
> @Query(value = "SELECT * from #{#entityName} where uuidCity = 
> ?#{mySpELFunctionsBean.cityNameToUUID(#city)}")
> List searchUsersByCity(@Param("city") String city, Pageable pageable);
> {code}
> {code:java}
> // textQuery - evaluated SpEL named parameter
> @Query(textQuery = true, value = "email: #{#email}")
> User searchUserByEmail(@Param("email") String email);
> {code}
> {code:java}
> // textQuery - evaluated SpEL named parameter
> @Query(textQuery = true, value = "#{#textToSearch}")
> List searchUsersByText(@Param("textToSearch") String text, Pageable 
> pageable);
> {code}
> {code:java}
> // textQuery - evaluated SpEL indexed parameter
> @Query(textQuery = true, value = "#{[0]}")
> List searchUsersByText(String textToSearch, Pageable pageable);
> {code}
> {code:java}
> // Static Projection
> @Query(value =
>"SELECT DISTINCT m.id, m.name, m.logos FROM #{#entityName} e 
> USE INDEX (ORIGIN_IDX) INNER JOIN \"flightMerchants\".Merchant m ON m"
>+ "._key=e"
>+ ".merchant WHERE e.origin = :origin and e.disabled = 
> :disabled GROUP BY m.id, m.name, m.logos ORDER BY m.name")
> List searchMerchantsByOrigin(@Param("origin") String origin, 
> @Param("disabled") boolean disabled);
> {code}
> {code:java}
> // Dynamic Projection
> @Query(value =
>"SELECT DISTINCT m.id, m.name, m.logos FROM #{#entityName} e 
> USE INDEX (ORIGIN_IDX) INNER JOIN \"flightMerchants\".Merchant m ON m"
>+ "._key=e"
>+ ".merchant WHERE e.origin = :orig

[jira] [Commented] (IGNITE-13078) С++: Add CMake build support

2020-06-22 Thread Igor Sapego (Jira)


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

Igor Sapego commented on IGNITE-13078:
--

Created separate ticket for Windows support: IGNITE-13174

> С++: Add CMake build support
> 
>
> Key: IGNITE-13078
> URL: https://issues.apache.org/jira/browse/IGNITE-13078
> Project: Ignite
>  Issue Type: Improvement
>  Components: platforms
>Reporter: Ivan Daschinskiy
>Assignee: Ivan Daschinskiy
>Priority: Major
> Fix For: 2.9
>
> Attachments: ignite-13078-dynamic-odbc.patch, 
> ignite-13078-static-odbc.patch
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currently, it is hard to build Ignite.C++. Different build processes for 
> windows and Linux, lack of building support on Mac OS X (a quite popular OS 
> among developers), absolutely not IDE support, except windows and only Visual 
> Studio is supported.
> I’d suggest migrating to the CMake build system. It is very popular among 
> open source projects, and in The Apache Software Foundation too. Notable 
> users: Apache Mesos, Apache Zookeeper (C client offers CMake as an 
> alternative to autoconf and the only option on Windows), Apache Kafka 
> (librdkafka - C/C++ client), Apache Thrift. Popular column-oriented database 
> ClickHouse also uses CMake.
> CMake is widely supported in many IDE’s on various platforms, notably Visual 
> Studio, CLion, Xcode, QtCreator, KDevelop.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (IGNITE-13174) C++: Add Windows support to CMake build system

2020-06-22 Thread Igor Sapego (Jira)
Igor Sapego created IGNITE-13174:


 Summary: C++: Add Windows support to CMake build system
 Key: IGNITE-13174
 URL: https://issues.apache.org/jira/browse/IGNITE-13174
 Project: Ignite
  Issue Type: Bug
  Components: platforms
Affects Versions: 2.8.1
Reporter: Igor Sapego
Assignee: Igor Sapego
 Fix For: 2.9


Ticket IGNITE-13078 adds CMake build system support, but only for Linux. Need 
make sure it works on Windows and create TC job for it.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12111) Cluster ID and tag: properties to identify the cluster

2020-06-22 Thread Ilya Kasnacheev (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-12111?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ilya Kasnacheev updated IGNITE-12111:
-
Release Note: Added Cluster ID and tag properties to identify the cluster

> Cluster ID and tag: properties to identify the cluster
> --
>
> Key: IGNITE-12111
> URL: https://issues.apache.org/jira/browse/IGNITE-12111
> Project: Ignite
>  Issue Type: New Feature
>Reporter: Sergey Chugunov
>Assignee: Sergey Chugunov
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> To improve cluster management capabilities two new properties of the cluster 
> are introduced:
> # A unique cluster ID (may be either a random UUID or random IgniteUUID). 
> Generated upon cluster start and saved to the distributed metastorage. 
> Immutable. Persistent clusters must persist the value. In-memory clusters 
> should keep the generated ID in memory and regenerate it upon restart.
> # Human-readable cluster tag. Generated by default to some random (but still 
> meaningful) string, may be changed by user. Again survives restart in 
> persistent clusters and is regenerated in in-memory clusters on every restart.
> These properties are exposed to standard APIs:
> # EVT_CLUSTER_TAG_CHANGED event generated when tag is changed by user;
> # JMX bean and control utility APIs to view ID and tag and change tag.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-12111) Cluster ID and tag: properties to identify the cluster

2020-06-22 Thread Ilya Kasnacheev (Jira)


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

Ilya Kasnacheev commented on IGNITE-12111:
--

Thank you for contribution, I have merged it to master.

Please create a ticket to document this feature.

> Cluster ID and tag: properties to identify the cluster
> --
>
> Key: IGNITE-12111
> URL: https://issues.apache.org/jira/browse/IGNITE-12111
> Project: Ignite
>  Issue Type: New Feature
>Reporter: Sergey Chugunov
>Assignee: Sergey Chugunov
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> To improve cluster management capabilities two new properties of the cluster 
> are introduced:
> # A unique cluster ID (may be either a random UUID or random IgniteUUID). 
> Generated upon cluster start and saved to the distributed metastorage. 
> Immutable. Persistent clusters must persist the value. In-memory clusters 
> should keep the generated ID in memory and regenerate it upon restart.
> # Human-readable cluster tag. Generated by default to some random (but still 
> meaningful) string, may be changed by user. Again survives restart in 
> persistent clusters and is regenerated in in-memory clusters on every restart.
> These properties are exposed to standard APIs:
> # EVT_CLUSTER_TAG_CHANGED event generated when tag is changed by user;
> # JMX bean and control utility APIs to view ID and tag and change tag.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-13066) Test framework must print which tests for quite mode

2020-06-22 Thread Maxim Muzafarov (Jira)


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

Maxim Muzafarov commented on IGNITE-13066:
--

[~ilyak]

Hello, can we proceed with this change?

> Test framework must print which tests for quite mode
> 
>
> Key: IGNITE-13066
> URL: https://issues.apache.org/jira/browse/IGNITE-13066
> Project: Ignite
>  Issue Type: Task
>Reporter: Maxim Muzafarov
>Assignee: Maxim Muzafarov
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> For most of the TeamCity test suites logger is turned off for performance 
> reasons (log size can be more than a thousand MB). In case of exceptions 
> happened it's hard to identify which of running tests fail.
> It is necessary to log which tests are started regardless of the logger 
> configured or not. 
> Example:
> {code:java}
> info(">>> Starting test: " + testDescription() + " <<<"); {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (IGNITE-13173) Add additional attributes to system views

2020-06-22 Thread Dmitry Frolov (Jira)
Dmitry Frolov created IGNITE-13173:
--

 Summary: Add additional attributes to system views
 Key: IGNITE-13173
 URL: https://issues.apache.org/jira/browse/IGNITE-13173
 Project: Ignite
  Issue Type: Wish
Affects Versions: 2.8.1, 2.8
Reporter: Dmitry Frolov


This is a proposal to enrich system views with additional attributes of the 
cache entries:

offHeapEntriesCount

offHeapBackupEntriesCount

offHeapPrimaryEntriesCount



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-13173) Add additional attributes to system views

2020-06-22 Thread Dmitry Frolov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-13173?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dmitry Frolov updated IGNITE-13173:
---
Priority: Major  (was: Trivial)

> Add additional attributes to system views
> -
>
> Key: IGNITE-13173
> URL: https://issues.apache.org/jira/browse/IGNITE-13173
> Project: Ignite
>  Issue Type: Wish
>Affects Versions: 2.8, 2.8.1
>Reporter: Dmitry Frolov
>Priority: Major
>  Labels: IEP-35
>
> This is a proposal to enrich system views with additional attributes of the 
> cache entries:
> offHeapEntriesCount
> offHeapBackupEntriesCount
> offHeapPrimaryEntriesCount



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-12995) Transactions hang up if node fails

2020-06-22 Thread Stepachev Maksim (Jira)


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

Stepachev Maksim commented on IGNITE-12995:
---

[https://github.com/apache/ignite/pull/7952/files]

> Transactions hang up if node fails
> --
>
> Key: IGNITE-12995
> URL: https://issues.apache.org/jira/browse/IGNITE-12995
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 2.8
>Reporter: Stepachev Maksim
>Assignee: Stepachev Maksim
>Priority: Major
>
> Now if node fails and some transaction that requires this node is in progress 
> it hangs up and is rolled back after timeout. Although we already know that 
> it cannot be committed. We should rollback active transactions on node fail.
> Reproducer attached.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-13005) Spring Data 2 - "JPA style" and working with multiple Ignite instances on same JVM

2020-06-22 Thread Ilya Kasnacheev (Jira)


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

Ilya Kasnacheev commented on IGNITE-13005:
--

Please create a pull-request. [~mnusan]

> Spring Data 2 - "JPA style" and working with multiple Ignite instances on 
> same JVM
> --
>
> Key: IGNITE-13005
> URL: https://issues.apache.org/jira/browse/IGNITE-13005
> Project: Ignite
>  Issue Type: Improvement
>  Components: spring
>Affects Versions: 2.7.6, 2.8.1
>Reporter: Manuel Núñez
>Priority: Major
>  Labels: spring-data
>
> I have it working for Spring Data 2 (2.7.6, 2.8.1) module with some 
> interesting improvements. Is there any ignite developer who can do the 
> pull-request process?. Thanks community!!
> Code is 100% compatible with previous versions. 
> [https://github.com/hawkore/ignite-hk/tree/master/modules/spring-data-2.0]
>  * Supports multiple ignite instances on same JVM (@RepositoryConfig).
>  * Supports query tuning parameters in {{@Query}} annotation
>  * Supports projections
>  * Supports {{Page}} and {{Stream}} responses
>  * Supports Sql Fields Query resultset transformation into the domain entity
>  * Supports named parameters ({{:myParam}}) into SQL queries, declared using 
> {{@Param("myParam")}}
>  * Supports advanced parameter binding and SpEL expressions into SQL queries:
>  ** *Template variables*:
>  *** {{#entityName}} - the simple class name of the domain entity
>  ** *Method parameter expressions*: Parameters are exposed for indexed access 
> ({{[0]}} is the first query method's param) or via the name declared using 
> {{@Param}}. The actual SpEL expression binding is triggered by {{?#}}. 
> Example: {{?#\{[0]\}} or {{?#\{#myParamName\}}}
>  ** *Advanced SpEL expressions*: While advanced parameter binding is a very 
> useful feature, the real power of SpEL stems from the fact, that the 
> expressions can refer to framework abstractions or other application 
> components through SpEL EvaluationContext extension model.
>  * Supports SpEL expressions into Text queries ({{TextQuery}}). 
> Some examples:
> {code:java}
> // Spring Data Repositories using different ignite instances on same JVM
> @RepositoryConfig(igniteInstance = "FLIGHTS_BBDD", cacheName = "ROUTES")
> public interface FlightRouteRepository extends IgniteRepository String> {
> ...
> }
> @RepositoryConfig(igniteInstance = "GEO_BBDD", cacheName = "POIS")
> public interface PoiRepository extends IgniteRepository {
> ...
> }
> {code}
> {code:java}
> // named parameter
> @Query(value = "SELECT * from #{#entityName} where email = :email")
> User searchUserByEmail(@Param("email") String email);
> {code}
> {code:java}
> // indexed parameters
> @Query(value = "SELECT * from #{#entityName} where country = ?#{[0] and city 
> = ?#{[1]}")
> List searchUsersByCity(@Param("country") String country, @Param("city") 
> String city, Pageable pageable);
> {code}
> {code:java}
> // ordered method parameters
> @Query(value = "SELECT * from #{#entityName} where email = ?")
> User searchUserByEmail(String email);
> {code}
> {code:java}
> // Advanced SpEL expressions
> @Query(value = "SELECT * from #{#entityName} where uuidCity = 
> ?#{mySpELFunctionsBean.cityNameToUUID(#city)}")
> List searchUsersByCity(@Param("city") String city, Pageable pageable);
> {code}
> {code:java}
> // textQuery - evaluated SpEL named parameter
> @Query(textQuery = true, value = "email: #{#email}")
> User searchUserByEmail(@Param("email") String email);
> {code}
> {code:java}
> // textQuery - evaluated SpEL named parameter
> @Query(textQuery = true, value = "#{#textToSearch}")
> List searchUsersByText(@Param("textToSearch") String text, Pageable 
> pageable);
> {code}
> {code:java}
> // textQuery - evaluated SpEL indexed parameter
> @Query(textQuery = true, value = "#{[0]}")
> List searchUsersByText(String textToSearch, Pageable pageable);
> {code}
> {code:java}
> // Static Projection
> @Query(value =
>"SELECT DISTINCT m.id, m.name, m.logos FROM #{#entityName} e 
> USE INDEX (ORIGIN_IDX) INNER JOIN \"flightMerchants\".Merchant m ON m"
>+ "._key=e"
>+ ".merchant WHERE e.origin = :origin and e.disabled = 
> :disabled GROUP BY m.id, m.name, m.logos ORDER BY m.name")
> List searchMerchantsByOrigin(@Param("origin") String origin, 
> @Param("disabled") boolean disabled);
> {code}
> {code:java}
> // Dynamic Projection
> @Query(value =
>"SELECT DISTINCT m.id, m.name, m.logos FROM #{#entityName} e 
> USE INDEX (ORIGIN_IDX) INNER JOIN \"flightMerchants\".Merchant m ON m"
>+ "._key=e"
>+ ".merchant WHERE e.origin = :origin and e.disabled = 
> :disabled GROUP BY m.id, m.name, 

[jira] [Updated] (IGNITE-13071) Improve test coverage for read-only cluster state

2020-06-22 Thread Sergey Antonov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-13071?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sergey Antonov updated IGNITE-13071:

Labels: read-only-mode  (was: )

> Improve test coverage for read-only cluster state
> -
>
> Key: IGNITE-13071
> URL: https://issues.apache.org/jira/browse/IGNITE-13071
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Sergey Antonov
>Assignee: Sergey Antonov
>Priority: Major
>  Labels: read-only-mode
> Fix For: 2.9
>
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> It would be nice to extend test coverage for this feature. 
> We don't have tests for:
> * data structures
> * cache destroy/create
> * cache clear
> * DDL requests
> * Cache updates from task/deployed service
> * Updates to metastorage/distributed metastorage.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-11889) Add security permissions cluster state change operations

2020-06-22 Thread Sergey Antonov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-11889?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sergey Antonov updated IGNITE-11889:

Labels: read-only-mode  (was: )

> Add security permissions cluster state change operations
> 
>
> Key: IGNITE-11889
> URL: https://issues.apache.org/jira/browse/IGNITE-11889
> Project: Ignite
>  Issue Type: Bug
>  Components: security
>Reporter: Sergey Antonov
>Priority: Major
>  Labels: read-only-mode
>
> We should add security permissions for cluster state change operations:
> * Cluster activation/deactivation.
> * Set/change baseline topology.
> * Enable/disable read-only mode.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-11863) .NET: Add cluster read-only mode API (status, run-time change)

2020-06-22 Thread Sergey Antonov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-11863?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sergey Antonov updated IGNITE-11863:

Labels: .NET read-only-mode  (was: .NET)

> .NET: Add cluster read-only mode API (status, run-time change)
> --
>
> Key: IGNITE-11863
> URL: https://issues.apache.org/jira/browse/IGNITE-11863
> Project: Ignite
>  Issue Type: Improvement
>  Components: platforms
>Reporter: Sergey Antonov
>Priority: Major
>  Labels: .NET, read-only-mode
>
> We would introduce at IGNITE-11256 new methods in IgniteCluster.
> We need their support in .Net side.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12136) Test ClusterReadOnlyModeTest is flaky.

2020-06-22 Thread Sergey Antonov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-12136?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sergey Antonov updated IGNITE-12136:

Labels: read-only-mode  (was: )

> Test ClusterReadOnlyModeTest is flaky.
> --
>
> Key: IGNITE-12136
> URL: https://issues.apache.org/jira/browse/IGNITE-12136
> Project: Ignite
>  Issue Type: Bug
>Reporter: Sergey Antonov
>Assignee: Sergey Antonov
>Priority: Major
>  Labels: read-only-mode
> Fix For: 2.8
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> https://ci.ignite.apache.org/project.html?projectId=IgniteTests24Java8&testNameId=4535823271211432266&tab=testDetails&branch_IgniteTests24Java8=%3Cdefault%3E



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-13076) Cluster read-only mode doesn't affect LOCAL caches

2020-06-22 Thread Sergey Antonov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-13076?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sergey Antonov updated IGNITE-13076:

Labels: read-only-mode  (was: )

> Cluster read-only mode doesn't affect LOCAL caches
> --
>
> Key: IGNITE-13076
> URL: https://issues.apache.org/jira/browse/IGNITE-13076
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 2.9
>Reporter: Sergey Antonov
>Priority: Major
>  Labels: read-only-mode
> Fix For: 2.9
>
>
> You can make data modification operations with LOCAL cache even if cluster in 
> a {{ACTIVE_READ_ONLY}} state. 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-13144) Improve ClusterState enum and other minor improvements for the cluster read-only mode.

2020-06-22 Thread Sergey Antonov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-13144?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sergey Antonov updated IGNITE-13144:

Labels: read-only-mode  (was: )

> Improve ClusterState enum and other minor improvements for the cluster 
> read-only mode.
> --
>
> Key: IGNITE-13144
> URL: https://issues.apache.org/jira/browse/IGNITE-13144
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Sergey Antonov
>Assignee: Sergey Antonov
>Priority: Major
>  Labels: read-only-mode
> Fix For: 2.9
>
>  Time Spent: 1h
>  Remaining Estimate: 0h
>
> We have {{boolean ClusterState#active(ClusterState)}} static method. It would 
> be better to have an instance method {{boolean active()}}. 
> Also, we have ClusterState#lesserOf static method. It needs for internal 
> purposes. So we must move this method in an internal package.
> We introduced new compute requests for getting/change cluster state from the 
> client node as internal classes of GridClusterStateProcessor. We should move 
> them to separate public classes for maintainability purposes.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-13138) Add REST tests for the new cluster state change API

2020-06-22 Thread Sergey Antonov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-13138?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sergey Antonov updated IGNITE-13138:

Labels: read-only-mode test  (was: test)

> Add REST tests for the new cluster state change API
> ---
>
> Key: IGNITE-13138
> URL: https://issues.apache.org/jira/browse/IGNITE-13138
> Project: Ignite
>  Issue Type: Improvement
>  Components: rest
>Reporter: Sergey Antonov
>Assignee: Sergey Antonov
>Priority: Major
>  Labels: read-only-mode, test
> Fix For: 2.9
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> I didn't find tests for a new REST commands introduced in an IGNITE-12225. It 
> must be fixed. 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-11866) Add ability to activate cluster in read-only mode

2020-06-22 Thread Sergey Antonov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-11866?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sergey Antonov updated IGNITE-11866:

Ignite Flags:   (was: Docs Required)

> Add ability to activate cluster in read-only mode
> -
>
> Key: IGNITE-11866
> URL: https://issues.apache.org/jira/browse/IGNITE-11866
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Sergey Antonov
>Assignee: Sergey Antonov
>Priority: Major
>
> After IGNITE-11256 we have cluster read-only mode. We should have ability to 
> activate cluster  and enable read-only mode like atomic operation.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-11256) Implement read-only mode for grid

2020-06-22 Thread Sergey Antonov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-11256?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sergey Antonov updated IGNITE-11256:

Labels: important read-only-mode  (was: important)

> Implement read-only mode for grid
> -
>
> Key: IGNITE-11256
> URL: https://issues.apache.org/jira/browse/IGNITE-11256
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Alexey Scherbakov
>Assignee: Sergey Antonov
>Priority: Major
>  Labels: important, read-only-mode
> Fix For: 2.9
>
>  Time Spent: 4h 10m
>  Remaining Estimate: 0h
>
> Should be triggered from control.sh utility.
> Useful for maintenance work, for example checking partition consistency 
> (idle_verify)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12225) Add enum for cluster state

2020-06-22 Thread Sergey Antonov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-12225?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sergey Antonov updated IGNITE-12225:

Labels: read-only-mode  (was: )

> Add enum for cluster state
> --
>
> Key: IGNITE-12225
> URL: https://issues.apache.org/jira/browse/IGNITE-12225
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Sergey Antonov
>Assignee: Sergey Antonov
>Priority: Major
>  Labels: read-only-mode
> Fix For: 2.9
>
>  Time Spent: 1h
>  Remaining Estimate: 0h
>
> We have 3 cluster states at the moment: inactive, active, read-only. 
> For getting current cluster state and changing them {{IgniteCluster}} has 
> methods:
> * {{boolean active()}}, {{void active(boolean active)}} - for cluster 
> activation/deactivation 
> * {{boolean readOnly()}}, {{void readOnly(boolean readOnly)}} - for 
> enabling/disabling read-only mode.
> Also we have control.sh commans for changing cluster state:
> * {{--activate}}
> * {{--deactivate}}
> * {{--read-only-on}}
> * {{--read-only-off}}
> For me current API looks unuseful. My proposal:
> # Create enum {{ClusterState}} with values {{ACTIVE}}, {{INACTIVE}}, 
> {{READ-ONLY}}.
> # Add methods to {{IgniteCluster}}:
> #* {{ClusterState state()}} returns current cluster state
> #* {{void state(ClusterState newState)}} changes cluster state to 
> {{newState}} state
> # Mark as deprecated the following methods in {{IgniteCluster}}: {{boolean 
> active()}}, {{void active(boolean active)}}, 
> # Add new command to control.sh: {{control.sh --set-state 
> (ACTIVE|INACTIVE|READ-ONLY)}} [--yes]
> # Add warn message that command is depricated in control.sh. Commands: 
> --activate, --deactivate, 
> # Remove commands from control.sh: --read-only-on, --read-only-off (no one 
> release wasn't published with this functional)
> # Add new methods to {{IgniteConfiguration}}:
> #* {{ClusterState getClusterStateOnStart()}}
> #* {{IgniteConfiguration setClusterStateOnStart(ClusterState state)}}
> # Deprecate methods in {{IgniteConfiguration}}:
> #* {{boolean isActiveOnStart()}}
> #* {{IgniteConfiguration setActiveOnStart(boolean activeOnStart)}}
> # Depracate ClusterActivationEvent and introduce new ClusterStateChangeEvent.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-12111) Cluster ID and tag: properties to identify the cluster

2020-06-22 Thread Ilya Kasnacheev (Jira)


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

Ilya Kasnacheev commented on IGNITE-12111:
--

LGTM now!

> Cluster ID and tag: properties to identify the cluster
> --
>
> Key: IGNITE-12111
> URL: https://issues.apache.org/jira/browse/IGNITE-12111
> Project: Ignite
>  Issue Type: New Feature
>Reporter: Sergey Chugunov
>Assignee: Sergey Chugunov
>Priority: Major
>  Time Spent: 40m
>  Remaining Estimate: 0h
>
> To improve cluster management capabilities two new properties of the cluster 
> are introduced:
> # A unique cluster ID (may be either a random UUID or random IgniteUUID). 
> Generated upon cluster start and saved to the distributed metastorage. 
> Immutable. Persistent clusters must persist the value. In-memory clusters 
> should keep the generated ID in memory and regenerate it upon restart.
> # Human-readable cluster tag. Generated by default to some random (but still 
> meaningful) string, may be changed by user. Again survives restart in 
> persistent clusters and is regenerated in in-memory clusters on every restart.
> These properties are exposed to standard APIs:
> # EVT_CLUSTER_TAG_CHANGED event generated when tag is changed by user;
> # JMX bean and control utility APIs to view ID and tag and change tag.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-13005) Spring Data 2 - "JPA style" and working with multiple Ignite instances on same JVM

2020-06-22 Thread Jira


 [ 
https://issues.apache.org/jira/browse/IGNITE-13005?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Manuel Núñez updated IGNITE-13005:
--
Description: 
I have it working for Spring Data 2 (2.7.6, 2.8.1) module with some interesting 
improvements. Is there any ignite developer who can do the pull-request 
process?. Thanks community!!

Code is 100% compatible with previous versions. 
[https://github.com/hawkore/ignite-hk/tree/master/modules/spring-data-2.0]
 * Supports multiple ignite instances on same JVM (@RepositoryConfig).
 * Supports query tuning parameters in {{@Query}} annotation
 * Supports projections
 * Supports {{Page}} and {{Stream}} responses
 * Supports Sql Fields Query resultset transformation into the domain entity
 * Supports named parameters ({{:myParam}}) into SQL queries, declared using 
{{@Param("myParam")}}
 * Supports advanced parameter binding and SpEL expressions into SQL queries:
 ** *Template variables*:
 *** {{#entityName}} - the simple class name of the domain entity
 ** *Method parameter expressions*: Parameters are exposed for indexed access 
({{[0]}} is the first query method's param) or via the name declared using 
{{@Param}}. The actual SpEL expression binding is triggered by {{?#}}. Example: 
{{?#\{[0]\}} or {{?#\{#myParamName\}}}
 ** *Advanced SpEL expressions*: While advanced parameter binding is a very 
useful feature, the real power of SpEL stems from the fact, that the 
expressions can refer to framework abstractions or other application components 
through SpEL EvaluationContext extension model.
 * Supports SpEL expressions into Text queries ({{TextQuery}}). 

Some examples:

{code:java}
// Spring Data Repositories using different ignite instances on same JVM
@RepositoryConfig(igniteInstance = "FLIGHTS_BBDD", cacheName = "ROUTES")
public interface FlightRouteRepository extends IgniteRepository {

...

}

@RepositoryConfig(igniteInstance = "GEO_BBDD", cacheName = "POIS")
public interface PoiRepository extends IgniteRepository {

...

}
{code}

{code:java}
// named parameter
@Query(value = "SELECT * from #{#entityName} where email = :email")
User searchUserByEmail(@Param("email") String email);
{code}
{code:java}
// indexed parameters
@Query(value = "SELECT * from #{#entityName} where country = ?#{[0] and city = 
?#{[1]}")
List searchUsersByCity(@Param("country") String country, @Param("city") 
String city, Pageable pageable);
{code}
{code:java}
// ordered method parameters
@Query(value = "SELECT * from #{#entityName} where email = ?")
User searchUserByEmail(String email);
{code}
{code:java}
// Advanced SpEL expressions
@Query(value = "SELECT * from #{#entityName} where uuidCity = 
?#{mySpELFunctionsBean.cityNameToUUID(#city)}")
List searchUsersByCity(@Param("city") String city, Pageable pageable);
{code}
{code:java}
// textQuery - evaluated SpEL named parameter
@Query(textQuery = true, value = "email: #{#email}")
User searchUserByEmail(@Param("email") String email);
{code}
{code:java}
// textQuery - evaluated SpEL named parameter
@Query(textQuery = true, value = "#{#textToSearch}")
List searchUsersByText(@Param("textToSearch") String text, Pageable 
pageable);
{code}
{code:java}
// textQuery - evaluated SpEL indexed parameter
@Query(textQuery = true, value = "#{[0]}")
List searchUsersByText(String textToSearch, Pageable pageable);
{code}
{code:java}
// Static Projection
@Query(value =
   "SELECT DISTINCT m.id, m.name, m.logos FROM #{#entityName} e USE 
INDEX (ORIGIN_IDX) INNER JOIN \"flightMerchants\".Merchant m ON m"
   + "._key=e"
   + ".merchant WHERE e.origin = :origin and e.disabled = 
:disabled GROUP BY m.id, m.name, m.logos ORDER BY m.name")
List searchMerchantsByOrigin(@Param("origin") String origin, 
@Param("disabled") boolean disabled);
{code}
{code:java}
// Dynamic Projection
@Query(value =
   "SELECT DISTINCT m.id, m.name, m.logos FROM #{#entityName} e USE 
INDEX (ORIGIN_IDX) INNER JOIN \"flightMerchants\".Merchant m ON m"
   + "._key=e"
   + ".merchant WHERE e.origin = :origin and e.disabled = 
:disabled GROUP BY m.id, m.name, m.logos ORDER BY m.name")
 List searchMerchantsByOrigin(Class projection, @Param("origin") 
String origin, @Param("disabled") boolean disabled);
{code}

  was:
I have it working for Spring Data 2 (2.7.6, 2.8.1) module with some interesting 
improvements. Is there any ignite developer who can do the pull-request 
process?. Thanks community!!

Code is 100% compatible with previous versions. 
[https://github.com/hawkore/ignite-hk/tree/master/modules/spring-data-2.0]
 * Supports multiple ignite instances on same JVM (@RepositoryConfig).
 * Supports query tuning parameters in {{@Query}} annotation
 * Supports projections
 * Supports {{Page}} and {{Stream}} responses
 * Supports Sql Fields Query resultset transformation into the domain entity
 * Supports named parameters ({{:myParam}}) i

[jira] [Commented] (IGNITE-13170) Java thin client: Transactions functionality withLabel is broken

2020-06-22 Thread Ivan Daschinskiy (Jira)


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

Ivan Daschinskiy commented on IGNITE-13170:
---

[~alex_pl] Looks good to me, but because one test is a little bit rewrited, may 
be it is good idea to restart suite metioned test belongs to

> Java thin client: Transactions functionality withLabel is broken
> 
>
> Key: IGNITE-13170
> URL: https://issues.apache.org/jira/browse/IGNITE-13170
> Project: Ignite
>  Issue Type: Bug
>  Components: thin client
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> Reproducer
> {code:java}
> @Test
> public void testTransactions1() throws Exception {
> try (Ignite ignite = Ignition.start(Config.getServerConfiguration());
>  IgniteClient client = Ignition.startClient(getClientConfiguration()))
> {
> ClientCache cache = client.createCache(new 
> ClientCacheConfiguration()
> .setName("cache")
> .setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL));
> cache.put(1, "value1");
> try (ClientTransaction tx = 
> client.transactions().withLabel("asdasda").txStart()) {
> cache.put(1, "value2");
> }
> assertEquals("value1", cache.get(1));
> }
> }
> {code}
> Root cause: a new instance of transactions facade is created when 
> {{withLabel}} modificator is used. Transactions are registered in 
> {{threadLocTxUid}} map of this instance, but when any cache operation is 
> performed transaction is looked only at root {{threadLocTxUid}} map.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-13164) Thin client: Fix nodeIds format for execute compute tasks request

2020-06-22 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-13164:


{panel:title=Branch: [pull/7944/head] Base: [master] : No blockers 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
[TeamCity *--> Run :: All* 
Results|https://ci.ignite.apache.org/viewLog.html?buildId=5401887&buildTypeId=IgniteTests24Java8_RunAll]

> Thin client: Fix nodeIds format for execute compute tasks request 
> --
>
> Key: IGNITE-13164
> URL: https://issues.apache.org/jira/browse/IGNITE-13164
> Project: Ignite
>  Issue Type: Improvement
>  Components: thin client
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currently, each node id in thin client execute compute task request is 
> written using 17 bytes (1 byte for type id and 16 bytes for UUID raw data). 
> Since we don't need information about type id and node id can't be null we 
> can write only UUID raw data as now implemented for service invoke request.
> Compute functionality is not released yet, so format can be changed without 
> compatibility issues.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-13012) Fix failure detection timeout. Simplify node ping routine.

2020-06-22 Thread Vladimir Steshin (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-13012?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vladimir Steshin updated IGNITE-13012:
--
Attachment: (was: IGNITE-13012-patch.patch)

> Fix failure detection timeout. Simplify node ping routine.
> --
>
> Key: IGNITE-13012
> URL: https://issues.apache.org/jira/browse/IGNITE-13012
> Project: Ignite
>  Issue Type: Improvement
>Affects Versions: 2.8.1
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
> Attachments: IGNITE-13012-patch.patch
>
>  Time Spent: 2h 20m
>  Remaining Estimate: 0h
>
> Connection failure may not be detected within 
> IgniteConfiguration.failureDetectionTimeout. Actual worst delay is: 
> ServerImpl.CON_CHECK_INTERVAL + IgniteConfiguration.failureDetectionTimeout. 
> Node ping routine is duplicated.
> We should fix:
> 1. Failure detection timeout should take in account last sent message. 
> Current ping is bound to own time:
> {code:java}ServerImpl. RingMessageWorker.lastTimeConnCheckMsgSent{code}
> This is weird because any discovery message check connection. 
> 2. Make connection check interval depend on failure detection timeout (FTD). 
> Current value is a constant:
> {code:java}static int ServerImpls.CON_CHECK_INTERVAL = 500{code}
> 3. Remove additional, quickened connection checking.  Once we do fix 1, this 
> will become even more useless.
> Despite TCP discovery has a period of connection checking, it may send ping 
> before this period exhausts. This premature ping relies also on the time of 
> any received message for some reason. 
> 4. Do not worry user with “Node seems disconnected” when everything is OK. 
> Once we do fix 1 and 3, this will become even more useless. 
> Node may log on INFO: “Local node seems to be disconnected from topology …” 
> whereas it is not actually disconnected at all.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-13012) Fix failure detection timeout. Simplify node ping routine.

2020-06-22 Thread Vladimir Steshin (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-13012?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vladimir Steshin updated IGNITE-13012:
--
Attachment: IGNITE-13012-patch.patch

> Fix failure detection timeout. Simplify node ping routine.
> --
>
> Key: IGNITE-13012
> URL: https://issues.apache.org/jira/browse/IGNITE-13012
> Project: Ignite
>  Issue Type: Improvement
>Affects Versions: 2.8.1
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
> Attachments: IGNITE-13012-patch.patch
>
>  Time Spent: 2h 20m
>  Remaining Estimate: 0h
>
> Connection failure may not be detected within 
> IgniteConfiguration.failureDetectionTimeout. Actual worst delay is: 
> ServerImpl.CON_CHECK_INTERVAL + IgniteConfiguration.failureDetectionTimeout. 
> Node ping routine is duplicated.
> We should fix:
> 1. Failure detection timeout should take in account last sent message. 
> Current ping is bound to own time:
> {code:java}ServerImpl. RingMessageWorker.lastTimeConnCheckMsgSent{code}
> This is weird because any discovery message check connection. 
> 2. Make connection check interval depend on failure detection timeout (FTD). 
> Current value is a constant:
> {code:java}static int ServerImpls.CON_CHECK_INTERVAL = 500{code}
> 3. Remove additional, quickened connection checking.  Once we do fix 1, this 
> will become even more useless.
> Despite TCP discovery has a period of connection checking, it may send ping 
> before this period exhausts. This premature ping relies also on the time of 
> any received message for some reason. 
> 4. Do not worry user with “Node seems disconnected” when everything is OK. 
> Once we do fix 1 and 3, this will become even more useless. 
> Node may log on INFO: “Local node seems to be disconnected from topology …” 
> whereas it is not actually disconnected at all.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-13012) Fix failure detection timeout. Simplify node ping routine.

2020-06-22 Thread Vladimir Steshin (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-13012?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vladimir Steshin updated IGNITE-13012:
--
Attachment: IGNITE-13012-patch.patch

> Fix failure detection timeout. Simplify node ping routine.
> --
>
> Key: IGNITE-13012
> URL: https://issues.apache.org/jira/browse/IGNITE-13012
> Project: Ignite
>  Issue Type: Improvement
>Affects Versions: 2.8.1
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
> Attachments: IGNITE-13012-patch.patch
>
>  Time Spent: 2h 20m
>  Remaining Estimate: 0h
>
> Connection failure may not be detected within 
> IgniteConfiguration.failureDetectionTimeout. Actual worst delay is: 
> ServerImpl.CON_CHECK_INTERVAL + IgniteConfiguration.failureDetectionTimeout. 
> Node ping routine is duplicated.
> We should fix:
> 1. Failure detection timeout should take in account last sent message. 
> Current ping is bound to own time:
> {code:java}ServerImpl. RingMessageWorker.lastTimeConnCheckMsgSent{code}
> This is weird because any discovery message check connection. 
> 2. Make connection check interval depend on failure detection timeout (FTD). 
> Current value is a constant:
> {code:java}static int ServerImpls.CON_CHECK_INTERVAL = 500{code}
> 3. Remove additional, quickened connection checking.  Once we do fix 1, this 
> will become even more useless.
> Despite TCP discovery has a period of connection checking, it may send ping 
> before this period exhausts. This premature ping relies also on the time of 
> any received message for some reason. 
> 4. Do not worry user with “Node seems disconnected” when everything is OK. 
> Once we do fix 1 and 3, this will become even more useless. 
> Node may log on INFO: “Local node seems to be disconnected from topology …” 
> whereas it is not actually disconnected at all.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-13012) Fix failure detection timeout. Simplify node ping routine.

2020-06-22 Thread Vladimir Steshin (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-13012?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vladimir Steshin updated IGNITE-13012:
--
Attachment: (was: IGNITE-13012-patch.patch)

> Fix failure detection timeout. Simplify node ping routine.
> --
>
> Key: IGNITE-13012
> URL: https://issues.apache.org/jira/browse/IGNITE-13012
> Project: Ignite
>  Issue Type: Improvement
>Affects Versions: 2.8.1
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
> Attachments: IGNITE-13012-patch.patch
>
>  Time Spent: 2h 20m
>  Remaining Estimate: 0h
>
> Connection failure may not be detected within 
> IgniteConfiguration.failureDetectionTimeout. Actual worst delay is: 
> ServerImpl.CON_CHECK_INTERVAL + IgniteConfiguration.failureDetectionTimeout. 
> Node ping routine is duplicated.
> We should fix:
> 1. Failure detection timeout should take in account last sent message. 
> Current ping is bound to own time:
> {code:java}ServerImpl. RingMessageWorker.lastTimeConnCheckMsgSent{code}
> This is weird because any discovery message check connection. 
> 2. Make connection check interval depend on failure detection timeout (FTD). 
> Current value is a constant:
> {code:java}static int ServerImpls.CON_CHECK_INTERVAL = 500{code}
> 3. Remove additional, quickened connection checking.  Once we do fix 1, this 
> will become even more useless.
> Despite TCP discovery has a period of connection checking, it may send ping 
> before this period exhausts. This premature ping relies also on the time of 
> any received message for some reason. 
> 4. Do not worry user with “Node seems disconnected” when everything is OK. 
> Once we do fix 1 and 3, this will become even more useless. 
> Node may log on INFO: “Local node seems to be disconnected from topology …” 
> whereas it is not actually disconnected at all.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-13031) .NET: SqlFieldsQuery as ContinuousQuery.InitialQuery

2020-06-22 Thread Pavel Tupitsyn (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-13031?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Pavel Tupitsyn updated IGNITE-13031:

Release Note: .NET: Allow SqlFieldsQuery as ContinuousQuery.InitialQuery

> .NET: SqlFieldsQuery as ContinuousQuery.InitialQuery
> 
>
> Key: IGNITE-13031
> URL: https://issues.apache.org/jira/browse/IGNITE-13031
> Project: Ignite
>  Issue Type: New Feature
>  Components: platforms
>Affects Versions: 2.8
>Reporter: Pavel Tupitsyn
>Assignee: Pavel Tupitsyn
>Priority: Critical
>  Labels: .NET
> Fix For: 2.9
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> SqlQuery has been deprecated in favor of SqlFieldsQuery, but ContinuousQuery 
> in Ignite.NET does not allow SqlFieldsQuery as InitialQuery. 
> Java API allows that, so we have to derive SqlFieldsQuery from QueryBase and 
> make it work.
> The problem will arise when SqlFieldsQuery does not return _key & _val - see 
> how Java handles this.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-12111) Cluster ID and tag: properties to identify the cluster

2020-06-22 Thread Sergey Chugunov (Jira)


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

Sergey Chugunov commented on IGNITE-12111:
--

[~ilyak], I addressed your comments in pull request and got green visa from bot 
- could you please take another look at my change?

> Cluster ID and tag: properties to identify the cluster
> --
>
> Key: IGNITE-12111
> URL: https://issues.apache.org/jira/browse/IGNITE-12111
> Project: Ignite
>  Issue Type: New Feature
>Reporter: Sergey Chugunov
>Assignee: Sergey Chugunov
>Priority: Major
>  Time Spent: 40m
>  Remaining Estimate: 0h
>
> To improve cluster management capabilities two new properties of the cluster 
> are introduced:
> # A unique cluster ID (may be either a random UUID or random IgniteUUID). 
> Generated upon cluster start and saved to the distributed metastorage. 
> Immutable. Persistent clusters must persist the value. In-memory clusters 
> should keep the generated ID in memory and regenerate it upon restart.
> # Human-readable cluster tag. Generated by default to some random (but still 
> meaningful) string, may be changed by user. Again survives restart in 
> persistent clusters and is regenerated in in-memory clusters on every restart.
> These properties are exposed to standard APIs:
> # EVT_CLUSTER_TAG_CHANGED event generated when tag is changed by user;
> # JMX bean and control utility APIs to view ID and tag and change tag.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-13164) Thin client: Fix nodeIds format for execute compute tasks request

2020-06-22 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-13164:


{panel:title=Branch: [pull/7944/head] Base: [master] : Possible Blockers 
(1)|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1}
{color:#d04437}SPI{color} [[tests 
1|https://ci.ignite.apache.org/viewLog.html?buildId=5403017]]
* IgniteSpiTestSuite: GridTcpCommunicationSpiSslSelfTest.testSendToOneNode - 
Test has low fail rate in base branch 0,0% and is not flaky

{panel}
[TeamCity *--> Run :: All* 
Results|https://ci.ignite.apache.org/viewLog.html?buildId=5401887&buildTypeId=IgniteTests24Java8_RunAll]

> Thin client: Fix nodeIds format for execute compute tasks request 
> --
>
> Key: IGNITE-13164
> URL: https://issues.apache.org/jira/browse/IGNITE-13164
> Project: Ignite
>  Issue Type: Improvement
>  Components: thin client
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currently, each node id in thin client execute compute task request is 
> written using 17 bytes (1 byte for type id and 16 bytes for UUID raw data). 
> Since we don't need information about type id and node id can't be null we 
> can write only UUID raw data as now implemented for service invoke request.
> Compute functionality is not released yet, so format can be changed without 
> compatibility issues.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-13170) Java thin client: Transactions functionality withLabel is broken

2020-06-22 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-13170:


{panel:title=Branch: [pull/7951/head] Base: [master] : No blockers 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
[TeamCity *--> Run :: All* 
Results|https://ci.ignite.apache.org/viewLog.html?buildId=5409249&buildTypeId=IgniteTests24Java8_RunAll]

> Java thin client: Transactions functionality withLabel is broken
> 
>
> Key: IGNITE-13170
> URL: https://issues.apache.org/jira/browse/IGNITE-13170
> Project: Ignite
>  Issue Type: Bug
>  Components: thin client
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Reproducer
> {code:java}
> @Test
> public void testTransactions1() throws Exception {
> try (Ignite ignite = Ignition.start(Config.getServerConfiguration());
>  IgniteClient client = Ignition.startClient(getClientConfiguration()))
> {
> ClientCache cache = client.createCache(new 
> ClientCacheConfiguration()
> .setName("cache")
> .setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL));
> cache.put(1, "value1");
> try (ClientTransaction tx = 
> client.transactions().withLabel("asdasda").txStart()) {
> cache.put(1, "value2");
> }
> assertEquals("value1", cache.get(1));
> }
> }
> {code}
> Root cause: a new instance of transactions facade is created when 
> {{withLabel}} modificator is used. Transactions are registered in 
> {{threadLocTxUid}} map of this instance, but when any cache operation is 
> performed transaction is looked only at root {{threadLocTxUid}} map.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-13166) Flaky H2RowCachePageEvictionTest and IgniteCacheQueryH2IndexingLeakTest tests

2020-06-22 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-13166:


{panel:title=Branch: [pull/7947/head] Base: [master] : No blockers 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
[TeamCity *--> Run :: All* 
Results|https://ci.ignite.apache.org/viewLog.html?buildId=5402505&buildTypeId=IgniteTests24Java8_RunAll]

> Flaky H2RowCachePageEvictionTest and IgniteCacheQueryH2IndexingLeakTest tests 
> --
>
> Key: IGNITE-13166
> URL: https://issues.apache.org/jira/browse/IGNITE-13166
> Project: Ignite
>  Issue Type: Task
>Reporter: Konstantin Orlov
>Assignee: Konstantin Orlov
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currently we have several tests on TC which considered flaky. Need to 
> investigate and fix them.
>  
> [https://ci.ignite.apache.org/project.html?projectId=IgniteTests24Java8&testNameId=-4422957309644246466&tab=testDetails]
> [https://ci.ignite.apache.org/project.html?projectId=IgniteTests24Java8&testNameId=8791646325227962211&tab=testDetails]
> [https://ci.ignite.apache.org/project.html?projectId=IgniteTests24Java8&testNameId=-7378154946319099847&tab=testDetails]



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-12986) Redis mget command is broken

2020-06-22 Thread Vyacheslav Koptilin (Jira)


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

Vyacheslav Koptilin commented on IGNITE-12986:
--

Hello [~alapin],

I have resolved all your comments. Please take a look at PR.

> Redis mget command is broken
> 
>
> Key: IGNITE-12986
> URL: https://issues.apache.org/jira/browse/IGNITE-12986
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 2.8
>Reporter: Vishnu Bharathi
>Assignee: Vyacheslav Koptilin
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> When trying to use the redis layer for ignite, noticed that the data returned 
> by the mget command is inconsistent. Hence the mget command is broken. To 
> demostrate here is an example
> {code}
> 127.0.0.1:11211> set a 1
> OK
> 127.0.0.1:11211> set b 2
> OK
> 127.0.0.1:11211> set c 3
> OK
> (0.98s)
> 127.0.0.1:11211> mget a b c 
> 1) "1"
> 2) "2"
> 3) "3"
> 127.0.0.1:11211> mget c b a
> 1) "1"
> 2) "2"
> 3) "3"
> 127.0.0.1:11211> mget a c b
> 1) "1"
> 2) "2"
> 3) "3"
> {code}
> If you notice, the order of the values returned does not match the order of 
> the values returned.
> In order to demonstrate the expected behaviour, will run the same commands 
> against a real redis instance and paste the output below.
> {code}
> 127.0.0.1:6379> set a 1 
> OK
> 127.0.0.1:6379> set b 2 
> OK
> 127.0.0.1:6379> set c 3
> OK
> 127.0.0.1:6379> mget a b c 
> 1) "1"
> 2) "2"
> 3) "3"
> 127.0.0.1:6379> mget c b a
> 1) "3"
> 2) "2"
> 3) "1"
> 127.0.0.1:6379> mget a c b
> 1) "1"
> 2) "3"
> 3) "2"
> {code}
> This is not only happening on the redis-cli, it is also happening when using 
> redis client libraries. 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-12986) Redis mget command is broken

2020-06-22 Thread Vyacheslav Koptilin (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-12986?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vyacheslav Koptilin updated IGNITE-12986:
-
Reviewer: Alexander Lapin

> Redis mget command is broken
> 
>
> Key: IGNITE-12986
> URL: https://issues.apache.org/jira/browse/IGNITE-12986
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 2.8
>Reporter: Vishnu Bharathi
>Assignee: Vyacheslav Koptilin
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> When trying to use the redis layer for ignite, noticed that the data returned 
> by the mget command is inconsistent. Hence the mget command is broken. To 
> demostrate here is an example
> {code}
> 127.0.0.1:11211> set a 1
> OK
> 127.0.0.1:11211> set b 2
> OK
> 127.0.0.1:11211> set c 3
> OK
> (0.98s)
> 127.0.0.1:11211> mget a b c 
> 1) "1"
> 2) "2"
> 3) "3"
> 127.0.0.1:11211> mget c b a
> 1) "1"
> 2) "2"
> 3) "3"
> 127.0.0.1:11211> mget a c b
> 1) "1"
> 2) "2"
> 3) "3"
> {code}
> If you notice, the order of the values returned does not match the order of 
> the values returned.
> In order to demonstrate the expected behaviour, will run the same commands 
> against a real redis instance and paste the output below.
> {code}
> 127.0.0.1:6379> set a 1 
> OK
> 127.0.0.1:6379> set b 2 
> OK
> 127.0.0.1:6379> set c 3
> OK
> 127.0.0.1:6379> mget a b c 
> 1) "1"
> 2) "2"
> 3) "3"
> 127.0.0.1:6379> mget c b a
> 1) "3"
> 2) "2"
> 3) "1"
> 127.0.0.1:6379> mget a c b
> 1) "1"
> 2) "3"
> 3) "2"
> {code}
> This is not only happening on the redis-cli, it is also happening when using 
> redis client libraries. 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-12986) Redis mget command is broken

2020-06-22 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-12986:


{panel:title=Branch: [pull/7849/head] Base: [master] : No blockers 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
[TeamCity *--> Run :: All* 
Results|https://ci.ignite.apache.org/viewLog.html?buildId=5408452&buildTypeId=IgniteTests24Java8_RunAll]

> Redis mget command is broken
> 
>
> Key: IGNITE-12986
> URL: https://issues.apache.org/jira/browse/IGNITE-12986
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 2.8
>Reporter: Vishnu Bharathi
>Assignee: Vyacheslav Koptilin
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> When trying to use the redis layer for ignite, noticed that the data returned 
> by the mget command is inconsistent. Hence the mget command is broken. To 
> demostrate here is an example
> {code}
> 127.0.0.1:11211> set a 1
> OK
> 127.0.0.1:11211> set b 2
> OK
> 127.0.0.1:11211> set c 3
> OK
> (0.98s)
> 127.0.0.1:11211> mget a b c 
> 1) "1"
> 2) "2"
> 3) "3"
> 127.0.0.1:11211> mget c b a
> 1) "1"
> 2) "2"
> 3) "3"
> 127.0.0.1:11211> mget a c b
> 1) "1"
> 2) "2"
> 3) "3"
> {code}
> If you notice, the order of the values returned does not match the order of 
> the values returned.
> In order to demonstrate the expected behaviour, will run the same commands 
> against a real redis instance and paste the output below.
> {code}
> 127.0.0.1:6379> set a 1 
> OK
> 127.0.0.1:6379> set b 2 
> OK
> 127.0.0.1:6379> set c 3
> OK
> 127.0.0.1:6379> mget a b c 
> 1) "1"
> 2) "2"
> 3) "3"
> 127.0.0.1:6379> mget c b a
> 1) "3"
> 2) "2"
> 3) "1"
> 127.0.0.1:6379> mget a c b
> 1) "1"
> 2) "3"
> 3) "2"
> {code}
> This is not only happening on the redis-cli, it is also happening when using 
> redis client libraries. 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Comment Edited] (IGNITE-13169) Remove Ignite bean name requirement for Spring Data Repository

2020-06-22 Thread Jira


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

Manuel Núñez edited comment on IGNITE-13169 at 6/22/20, 10:26 AM:
--

Please, take a look at IGNITE-13005. Supports different mechanism (Ignite 
instance name, Ignite configuration name and Ignite configuration file) to 
discover Ignite Instances. Also supports working with multiple Ignite Instances 
on same JVM.


was (Author: mnusan):
Please, take a look at IGNITE-13005.

> Remove Ignite bean name requirement for Spring Data Repository
> --
>
> Key: IGNITE-13169
> URL: https://issues.apache.org/jira/browse/IGNITE-13169
> Project: Ignite
>  Issue Type: Improvement
>  Components: springdata
>Affects Versions: 2.8.1
>Reporter: Semyon Danilov
>Assignee: Semyon Danilov
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> At the moment IgniteRepositoryFactoryBean requires Ignite instance bean (or 
> IgniteConfiguration instance bean) with specific name.
> There are couple of problems with that behavior:
> 1) We have a SpringBoot autoconfiguration module which creates bean with 
> different name, so Ignite Spring Data won't work out of the box
>  2) That is, actually, not a Spring-way to do things: Spring prefers 
> injecting by class, qualifiers like name and order should be used only when 
> necessay
> I propose changing behavior to "getting bean by class and not by name"
>  
> This won't require any user code changes, because we only remove restrictions 
> on Ignite instance bean name



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-13005) Spring Data 2 - "JPA style" and working with multiple Ignite instances on same JVM

2020-06-22 Thread Jira


 [ 
https://issues.apache.org/jira/browse/IGNITE-13005?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Manuel Núñez updated IGNITE-13005:
--
Description: 
I have it working for Spring Data 2 (2.7.6, 2.8.1) module with some interesting 
improvements. Is there any ignite developer who can do the pull-request 
process?. Thanks community!!

Code is 100% compatible with previous versions. 
[https://github.com/hawkore/ignite-hk/tree/master/modules/spring-data-2.0]
 * Supports multiple ignite instances on same JVM (@RepositoryConfig).
 * Supports query tuning parameters in {{@Query}} annotation
 * Supports projections
 * Supports {{Page}} and {{Stream}} responses
 * Supports Sql Fields Query resultset transformation into the domain entity
 * Supports named parameters ({{:myParam}}) into SQL queries, declared using 
{{@Param("myParam")}}
 * Supports advanced parameter binding and SpEL expressions into SQL queries:
 ** *Template variables*:
 *** {{#entityName}} - the simple class name of the domain entity
 ** *Method parameter expressions*: Parameters are exposed for indexed access 
({{[0]}} is the first query method's param) or via the name declared using 
{{@Param}}. The actual SpEL expression binding is triggered by {{?#}}. Example: 
{{?#\{[0]\}} or {{?#\{#myParamName\}}}
 ** *Advanced SpEL expressions*: While advanced parameter binding is a very 
useful feature, the real power of SpEL stems from the fact, that the 
expressions can refer to framework abstractions or other application components 
through SpEL EvaluationContext extension model.
 * Supports SpEL expressions into Text queries ({{TextQuery}}). 

Some examples:

{code:java}
// Spring Data Repositories using different ignite instances on same JVM
@RepositoryConfig(igniteInstance = "FLIGHTS_BBDD", cacheName = "ROUTES")
public interface FlightRouteRepository extends IgniteRepository {

...

}

@RepositoryConfig(igniteInstance = "GEO_BBDD", cacheName = "POIS")
public interface PoiRepository extends IgniteRepository {

...

}
{code}

{code:java}
// named parameter
@Query(value = "SELECT * from #{#entityName} where email = :email")
User searchUserByEmail(@Param("email") String email);
{code}
{code:java}
// indexed parameters
@Query(value = "SELECT * from #{#entityName} where country = ?#{[0] and city = 
?#{[1]}")
List searchUsersByCity(@Param("country") String country, @Param("city") 
String city, Pageable pageable);
{code}
{code:java}
// ordered method parameters
@Query(value = "SELECT * from #{#entityName} where email = ?")
User searchUserByEmail(String email);
{code}
{code:java}
// Advanced SpEL expressions
@Query(value = "SELECT * from #{#entityName} where uuidCity = 
?#{mySpELFunctionsBean.cityNameToUUID(#city)}")
List searchUsersByCity(@Param("city") String city, Pageable pageable);
{code}
{code:java}
// textQuery - evaluated SpEL named parameter
@Query(textQuery = true, value = "email: #{#email}")
User searchUserByEmail(@Param("email") String email);
{code}
{code:java}
// textQuery - evaluated SpEL named parameter
@Query(textQuery = true, value = "#{#textToSearch}")
List searchUsersByText(@Param("textToSearch") String text, Pageable 
pageable);
{code}
{code:java}
// textQuery - evaluated SpEL indexed parameter
@Query(textQuery = true, value = "#{[0]}")
List searchUsersByText(String textToSearch, Pageable pageable);
{code}
{code:java}
// Projection
@Query(value =
   "SELECT DISTINCT m.id, m.name, m.logos FROM #{#entityName} e USE 
INDEX (ORIGIN_IDX) INNER JOIN \"flightMerchants\".Merchant m ON m"
   + "._key=e"
   + ".merchant WHERE e.origin = :origin and e.disabled = 
:disabled GROUP BY m.id, m.name, m.logos ORDER BY m.name")
 List searchMerchantsByOrigin(Class projection, @Param("origin") 
String origin, @Param("disabled") boolean disabled);
{code}

  was:
I have it working for Spring Data 2 (2.7.6, 2.8.1) module with some interesting 
improvements, but by now I don't have enough time to give it the attention it 
requires, full unit/integration tests..., sorry a lot. ¿maybe any of you have 
the time?. Thanks community!!

Code is 100% compatible with previous versions. 
[https://github.com/hawkore/ignite-hk/tree/master/modules/spring-data-2.0]
 * Supports multiple ignite instances on same JVM (@RepositoryConfig).
 * Supports query tuning parameters in {{@Query}} annotation
 * Supports projections
 * Supports {{Page}} and {{Stream}} responses
 * Supports Sql Fields Query resultset transformation into the domain entity
 * Supports named parameters ({{:myParam}}) into SQL queries, declared using 
{{@Param("myParam")}}
 * Supports advanced parameter binding and SpEL expressions into SQL queries:
 ** *Template variables*:
 *** {{#entityName}} - the simple class name of the domain entity
 ** *Method parameter expressions*: Parameters are exposed for indexed access 
({{[0]}} is the first query method's param) or via the name declared using 
{{@Param}}

[jira] [Commented] (IGNITE-13169) Remove Ignite bean name requirement for Spring Data Repository

2020-06-22 Thread Jira


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

Manuel Núñez commented on IGNITE-13169:
---

Please, take a look at IGNITE-13005.

> Remove Ignite bean name requirement for Spring Data Repository
> --
>
> Key: IGNITE-13169
> URL: https://issues.apache.org/jira/browse/IGNITE-13169
> Project: Ignite
>  Issue Type: Improvement
>  Components: springdata
>Affects Versions: 2.8.1
>Reporter: Semyon Danilov
>Assignee: Semyon Danilov
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> At the moment IgniteRepositoryFactoryBean requires Ignite instance bean (or 
> IgniteConfiguration instance bean) with specific name.
> There are couple of problems with that behavior:
> 1) We have a SpringBoot autoconfiguration module which creates bean with 
> different name, so Ignite Spring Data won't work out of the box
>  2) That is, actually, not a Spring-way to do things: Spring prefers 
> injecting by class, qualifiers like name and order should be used only when 
> necessay
> I propose changing behavior to "getting bean by class and not by name"
>  
> This won't require any user code changes, because we only remove restrictions 
> on Ignite instance bean name



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-13151) Checkpointer code refactoring: extracting classes from GridCacheDatabaseSharedManager

2020-06-22 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-13151:


{panel:title=Branch: [pull/7937/head] Base: [master] : No blockers 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
[TeamCity *--> Run :: All* 
Results|https://ci.ignite.apache.org/viewLog.html?buildId=5400343&buildTypeId=IgniteTests24Java8_RunAll]

> Checkpointer code refactoring: extracting classes from 
> GridCacheDatabaseSharedManager
> -
>
> Key: IGNITE-13151
> URL: https://issues.apache.org/jira/browse/IGNITE-13151
> Project: Ignite
>  Issue Type: Sub-task
>  Components: persistence
>Reporter: Sergey Chugunov
>Assignee: Anton Kalashnikov
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Checkpointer is at the center of Ignite persistence subsystem and more people 
> from the community understand it the better means it is more stable and more 
> efficient.
> However for now checkpointer code sits inside of 
> GridCacheDatabaseSharedManager class and is entangled with this higher-level 
> and more general component.
> To take a step forward to more modular checkpointer we need to do two things:
>  # Move checkpointer code outside database manager to a separate class. 
> (That's what this ticket is about.)
>  # Create a well-defined API of checkpointer that will allow us to create new 
> implementations of checkpointer in the future. An example of this is new 
> checkpointer implementation needed for defragmentation feature purposes. 
> (Should be done in a separate ticket)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-13078) С++: Add CMake build support

2020-06-22 Thread Peter Ivanov (Jira)


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

Peter Ivanov commented on IGNITE-13078:
---

Added to aitc-lin01_01 for tests. Check that build works at that agent.
If OK — will install on other agents.

> С++: Add CMake build support
> 
>
> Key: IGNITE-13078
> URL: https://issues.apache.org/jira/browse/IGNITE-13078
> Project: Ignite
>  Issue Type: Improvement
>  Components: platforms
>Reporter: Ivan Daschinskiy
>Assignee: Ivan Daschinskiy
>Priority: Major
> Fix For: 2.9
>
> Attachments: ignite-13078-dynamic-odbc.patch, 
> ignite-13078-static-odbc.patch
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currently, it is hard to build Ignite.C++. Different build processes for 
> windows and Linux, lack of building support on Mac OS X (a quite popular OS 
> among developers), absolutely not IDE support, except windows and only Visual 
> Studio is supported.
> I’d suggest migrating to the CMake build system. It is very popular among 
> open source projects, and in The Apache Software Foundation too. Notable 
> users: Apache Mesos, Apache Zookeeper (C client offers CMake as an 
> alternative to autoconf and the only option on Windows), Apache Kafka 
> (librdkafka - C/C++ client), Apache Thrift. Popular column-oriented database 
> ClickHouse also uses CMake.
> CMake is widely supported in many IDE’s on various platforms, notably Visual 
> Studio, CLion, Xcode, QtCreator, KDevelop.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-10708) SQL implement system view for partition states

2020-06-22 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov commented on IGNITE-10708:


[~nizhikov], thanks for the review!

> SQL implement system view for partition states
> --
>
> Key: IGNITE-10708
> URL: https://issues.apache.org/jira/browse/IGNITE-10708
> Project: Ignite
>  Issue Type: Task
>  Components: sql
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: IEP-35, iep-13
> Fix For: 2.9
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> Implement SQL system view to partition states in the cluster for each cache 
> group and each node.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-13169) Remove Ignite bean name requirement for Spring Data Repository

2020-06-22 Thread Semyon Danilov (Jira)


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

Semyon Danilov commented on IGNITE-13169:
-

Hello [~slava.koptilin], description provided!

> Remove Ignite bean name requirement for Spring Data Repository
> --
>
> Key: IGNITE-13169
> URL: https://issues.apache.org/jira/browse/IGNITE-13169
> Project: Ignite
>  Issue Type: Improvement
>  Components: springdata
>Affects Versions: 2.8.1
>Reporter: Semyon Danilov
>Assignee: Semyon Danilov
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> At the moment IgniteRepositoryFactoryBean requires Ignite instance bean (or 
> IgniteConfiguration instance bean) with specific name.
> There are couple of problems with that behavior:
> 1) We have a SpringBoot autoconfiguration module which creates bean with 
> different name, so Ignite Spring Data won't work out of the box
>  2) That is, actually, not a Spring-way to do things: Spring prefers 
> injecting by class, qualifiers like name and order should be used only when 
> necessay
> I propose changing behavior to "getting bean by class and not by name"
>  
> This won't require any user code changes, because we only remove restrictions 
> on Ignite instance bean name



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-13169) Remove Ignite bean name requirement for Spring Data Repository

2020-06-22 Thread Semyon Danilov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-13169?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Semyon Danilov updated IGNITE-13169:

Description: 
At the moment IgniteRepositoryFactoryBean requires Ignite instance bean (or 
IgniteConfiguration instance bean) with specific name.

There are couple of problems with that behavior:

1) We have a SpringBoot autoconfiguration module which creates bean with 
different name, so Ignite Spring Data won't work out of the box
 2) That is, actually, not a Spring-way to do things: Spring prefers injecting 
by class, qualifiers like name and order should be used only when necessay

I propose changing behavior to "getting bean by class and not by name"

 

This won't require any user code changes, because we only remove restrictions 
on Ignite instance bean name

  was:
At the moment IgniteRepositoryFactoryBean requires Ignite instance bean (or 
IgniteConfiguration instance bean) with specific name.

There are couple of problems with that behavior:

1) We have a SpringBoot autoconfiguration module which creates bean with 
different name, so Ignite Spring Data won't work out of the box
2) That is, actually, not a Spring-way to do things: Spring prefers injecting 
by class, qualifiers like name and order should be used only when necessay

I propose changing behavior to "getting bean by class and not by name"


> Remove Ignite bean name requirement for Spring Data Repository
> --
>
> Key: IGNITE-13169
> URL: https://issues.apache.org/jira/browse/IGNITE-13169
> Project: Ignite
>  Issue Type: Improvement
>  Components: springdata
>Affects Versions: 2.8.1
>Reporter: Semyon Danilov
>Assignee: Semyon Danilov
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> At the moment IgniteRepositoryFactoryBean requires Ignite instance bean (or 
> IgniteConfiguration instance bean) with specific name.
> There are couple of problems with that behavior:
> 1) We have a SpringBoot autoconfiguration module which creates bean with 
> different name, so Ignite Spring Data won't work out of the box
>  2) That is, actually, not a Spring-way to do things: Spring prefers 
> injecting by class, qualifiers like name and order should be used only when 
> necessay
> I propose changing behavior to "getting bean by class and not by name"
>  
> This won't require any user code changes, because we only remove restrictions 
> on Ignite instance bean name



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-13169) Remove Ignite bean name requirement for Spring Data Repository

2020-06-22 Thread Semyon Danilov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-13169?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Semyon Danilov updated IGNITE-13169:

Description: 
At the moment IgniteRepositoryFactoryBean requires Ignite instance bean (or 
IgniteConfiguration instance bean) with specific name.

There are couple of problems with that behavior:

1) We have a SpringBoot autoconfiguration module which creates bean with 
different name, so Ignite Spring Data won't work out of the box
2) That is, actually, not a Spring-way to do things: Spring prefers injecting 
by class, qualifiers like name and order should be used only when necessay

I propose changing behavior to "getting bean by class and not by name"

  was:At the moment Repository Factory Bean


> Remove Ignite bean name requirement for Spring Data Repository
> --
>
> Key: IGNITE-13169
> URL: https://issues.apache.org/jira/browse/IGNITE-13169
> Project: Ignite
>  Issue Type: Improvement
>  Components: springdata
>Affects Versions: 2.8.1
>Reporter: Semyon Danilov
>Assignee: Semyon Danilov
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> At the moment IgniteRepositoryFactoryBean requires Ignite instance bean (or 
> IgniteConfiguration instance bean) with specific name.
> There are couple of problems with that behavior:
> 1) We have a SpringBoot autoconfiguration module which creates bean with 
> different name, so Ignite Spring Data won't work out of the box
> 2) That is, actually, not a Spring-way to do things: Spring prefers injecting 
> by class, qualifiers like name and order should be used only when necessay
> I propose changing behavior to "getting bean by class and not by name"



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-13169) Remove Ignite bean name requirement for Spring Data Repository

2020-06-22 Thread Semyon Danilov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-13169?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Semyon Danilov updated IGNITE-13169:

Description: At the moment Repository Factory Bean

> Remove Ignite bean name requirement for Spring Data Repository
> --
>
> Key: IGNITE-13169
> URL: https://issues.apache.org/jira/browse/IGNITE-13169
> Project: Ignite
>  Issue Type: Improvement
>  Components: springdata
>Affects Versions: 2.8.1
>Reporter: Semyon Danilov
>Assignee: Semyon Danilov
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> At the moment Repository Factory Bean



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Assigned] (IGNITE-13167) Cache Store fails to close connection: writeBehind + TRANSACTIONAL + readThrough

2020-06-22 Thread Vyacheslav Koptilin (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-13167?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vyacheslav Koptilin reassigned IGNITE-13167:


Assignee: Vyacheslav Koptilin

> Cache Store fails to close connection: writeBehind + TRANSACTIONAL + 
> readThrough
> 
>
> Key: IGNITE-13167
> URL: https://issues.apache.org/jira/browse/IGNITE-13167
> Project: Ignite
>  Issue Type: Bug
>  Components: cache
>Affects Versions: 2.8.1
>Reporter: Ilya Kasnacheev
>Assignee: Vyacheslav Koptilin
>Priority: Critical
>
> Please see referenced mailing list thread.
> If there is an ongoing transactional (cache is transactional, put uses an 
> implicit transaction, tx != null) then 
> org.apache.ignite.internal.processors.cache.store.GridCacheStoreManagerAdapter#loadFromStore
>  will not call sessionEnd() - see sessionEnd0() method.
> If write behind is also enabled, then cache store is not invoked during the 
> operation and connection will never be closed.
> So, a combination of TRANSACTIONAL cache, implicit transaction, loadFromCache 
> and write behind will leak a connection every time.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-12111) Cluster ID and tag: properties to identify the cluster

2020-06-22 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-12111:


{panel:title=Branch: [pull/7922/head] Base: [master] : No blockers 
found!|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}{panel}
[TeamCity *--> Run :: All* 
Results|https://ci.ignite.apache.org/viewLog.html?buildId=5379952&buildTypeId=IgniteTests24Java8_RunAll]

> Cluster ID and tag: properties to identify the cluster
> --
>
> Key: IGNITE-12111
> URL: https://issues.apache.org/jira/browse/IGNITE-12111
> Project: Ignite
>  Issue Type: New Feature
>Reporter: Sergey Chugunov
>Assignee: Sergey Chugunov
>Priority: Major
>  Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> To improve cluster management capabilities two new properties of the cluster 
> are introduced:
> # A unique cluster ID (may be either a random UUID or random IgniteUUID). 
> Generated upon cluster start and saved to the distributed metastorage. 
> Immutable. Persistent clusters must persist the value. In-memory clusters 
> should keep the generated ID in memory and regenerate it upon restart.
> # Human-readable cluster tag. Generated by default to some random (but still 
> meaningful) string, may be changed by user. Again survives restart in 
> persistent clusters and is regenerated in in-memory clusters on every restart.
> These properties are exposed to standard APIs:
> # EVT_CLUSTER_TAG_CHANGED event generated when tag is changed by user;
> # JMX bean and control utility APIs to view ID and tag and change tag.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Created] (IGNITE-13172) Module ignite-scalar compilation error on JDK 11+

2020-06-22 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-13172:
--

 Summary: Module ignite-scalar compilation error on JDK 11+
 Key: IGNITE-13172
 URL: https://issues.apache.org/jira/browse/IGNITE-13172
 Project: Ignite
  Issue Type: Improvement
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Module ignite-scalar can't be compiled by maven on JDK 11+.

There is an error on scala-maven-plugin:3.3.2:compile phase:
{noformat}
[ERROR] error: java.lang.NoClassDefFoundError: javax/tools/ToolProvider
[INFO]  at 
scala.reflect.io.JavaToolsPlatformArchive.iterator(ZipArchive.scala:301)
[INFO]  at scala.collection.IterableLike$class.foreach(IterableLike.scala:72)
[INFO]  at scala.reflect.io.AbstractFile.foreach(AbstractFile.scala:92)
{noformat}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Commented] (IGNITE-11393) Create IgniteLinkTaglet.toString() implementation for Java9+

2020-06-22 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov commented on IGNITE-11393:


[~amashenkov], thanks for your comments. I will return to this ticket in a week.

> Create IgniteLinkTaglet.toString() implementation for Java9+
> 
>
> Key: IGNITE-11393
> URL: https://issues.apache.org/jira/browse/IGNITE-11393
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Dmitry Pavlov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Time Spent: 1h
>  Remaining Estimate: 0h
>
> New implementation was added according to the new Java API for Javadoc.
> But the main method kept empty, need to implement toString() to process 
> IgniteLink annotation



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-13170) Java thin client: Transactions functionality withLabel is broken

2020-06-22 Thread Aleksey Plekhanov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-13170?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aleksey Plekhanov updated IGNITE-13170:
---
Ignite Flags: Release Notes Required  (was: Docs Required,Release Notes 
Required)

> Java thin client: Transactions functionality withLabel is broken
> 
>
> Key: IGNITE-13170
> URL: https://issues.apache.org/jira/browse/IGNITE-13170
> Project: Ignite
>  Issue Type: Bug
>  Components: thin client
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Reproducer
> {code:java}
> @Test
> public void testTransactions1() throws Exception {
> try (Ignite ignite = Ignition.start(Config.getServerConfiguration());
>  IgniteClient client = Ignition.startClient(getClientConfiguration()))
> {
> ClientCache cache = client.createCache(new 
> ClientCacheConfiguration()
> .setName("cache")
> .setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL));
> cache.put(1, "value1");
> try (ClientTransaction tx = 
> client.transactions().withLabel("asdasda").txStart()) {
> cache.put(1, "value2");
> }
> assertEquals("value1", cache.get(1));
> }
> }
> {code}
> Root cause: a new instance of transactions facade is created when 
> {{withLabel}} modificator is used. Transactions are registered in 
> {{threadLocTxUid}} map of this instance, but when any cache operation is 
> performed transaction is looked only at root {{threadLocTxUid}} map.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)


[jira] [Updated] (IGNITE-13170) Java thin client: Transactions functionality withLabel is broken

2020-06-22 Thread Aleksey Plekhanov (Jira)


 [ 
https://issues.apache.org/jira/browse/IGNITE-13170?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aleksey Plekhanov updated IGNITE-13170:
---
Component/s: thin client

> Java thin client: Transactions functionality withLabel is broken
> 
>
> Key: IGNITE-13170
> URL: https://issues.apache.org/jira/browse/IGNITE-13170
> Project: Ignite
>  Issue Type: Bug
>  Components: thin client
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Reproducer
> {code:java}
> @Test
> public void testTransactions1() throws Exception {
> try (Ignite ignite = Ignition.start(Config.getServerConfiguration());
>  IgniteClient client = Ignition.startClient(getClientConfiguration()))
> {
> ClientCache cache = client.createCache(new 
> ClientCacheConfiguration()
> .setName("cache")
> .setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL));
> cache.put(1, "value1");
> try (ClientTransaction tx = 
> client.transactions().withLabel("asdasda").txStart()) {
> cache.put(1, "value2");
> }
> assertEquals("value1", cache.get(1));
> }
> }
> {code}
> Root cause: a new instance of transactions facade is created when 
> {{withLabel}} modificator is used. Transactions are registered in 
> {{threadLocTxUid}} map of this instance, but when any cache operation is 
> performed transaction is looked only at root {{threadLocTxUid}} map.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)