[jira] [Created] (IGNITE-15132) REST API must reuse general netty infrastructure from network module

2021-07-15 Thread Kirill Gusakov (Jira)
Kirill Gusakov created IGNITE-15132:
---

 Summary: REST API must reuse general netty infrastructure from 
network module
 Key: IGNITE-15132
 URL: https://issues.apache.org/jira/browse/IGNITE-15132
 Project: Ignite
  Issue Type: Task
Reporter: Kirill Gusakov


At the moment - RestModule prepares its own Netty infra for handling requests. 
But it will be great to have one root Netty pools and etc. configs and just 
separate handlers.


Also, maybe we should use the "one port for all operations" concept for REST 
API too.



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


[jira] [Updated] (IGNITE-15131) Provide any method to receive node configs from public Java API

2021-07-15 Thread Kirill Gusakov (Jira)


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

Kirill Gusakov updated IGNITE-15131:

Labels: ignite-3  (was: )

> Provide any method to receive node configs from public Java API
> ---
>
> Key: IGNITE-15131
> URL: https://issues.apache.org/jira/browse/IGNITE-15131
> Project: Ignite
>  Issue Type: Task
>Reporter: Kirill Gusakov
>Assignee: Kirill Gusakov
>Priority: Major
>  Labels: ignite-3
>
> We need to implement a way to receive configs of started ignite node from the 
> Java API.
> It can be used for getting any auto-discovered ports and etc. in integration 
> tests and client code.



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


[jira] [Created] (IGNITE-15131) Provide any method to receive node configs from public Java API

2021-07-15 Thread Kirill Gusakov (Jira)
Kirill Gusakov created IGNITE-15131:
---

 Summary: Provide any method to receive node configs from public 
Java API
 Key: IGNITE-15131
 URL: https://issues.apache.org/jira/browse/IGNITE-15131
 Project: Ignite
  Issue Type: Task
Reporter: Kirill Gusakov
Assignee: Kirill Gusakov


We need to implement a way to receive configs of started ignite node from the 
Java API.

It can be used for getting any auto-discovered ports and etc. in integration 
tests and client code.



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


[jira] [Commented] (IGNITE-14999) Support snapshot encryption with same master-key.

2021-07-15 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-14999:


{panel:title=Branch: [pull/9260/head] Base: [master] : Possible Blockers 
(3)|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1}
{color:#d04437}Basic 3{color} [[tests 
2|https://ci.ignite.apache.org/viewLog.html?buildId=6088663]]
* IgniteBasicWithPersistenceTestSuite: 
IgniteClusterSnapshotRestoreSelfTest.testNodeFailDuringRestore[Encryption=true] 
- History for base branch is absent.
* IgniteBasicWithPersistenceTestSuite: 
IgniteClusterSnapshotRestoreSelfTest.testIncompatibleMetasUpdate[Encryption=true]
 - New test duration 62s is more that 1 minute

{color:#d04437}[Javadoc]{color} [[tests 0 BuildFailureOnMessage 
|https://ci.ignite.apache.org/viewLog.html?buildId=6088665]]

{panel}
{panel:title=Branch: [pull/9260/head] Base: [master] : New Tests 
(169)|borderStyle=dashed|borderColor=#ccc|titleBGColor=#D6F7C1}
{color:#8b}PDS (Indexing){color} [[tests 
16|https://ci.ignite.apache.org/viewLog.html?buildId=6088691]]
* {color:#013220}IgnitePdsWithIndexingTestSuite: 
IgniteClusterSnapshotWithIndexesTest.testClusterSnapshotConsistentConfig[Encryption=true]
 - PASSED{color}
* {color:#013220}IgnitePdsWithIndexingTestSuite: 
IgniteClusterSnapshotWithIndexesTest.testClusterSnapshotWithIndexes[Encryption=true]
 - PASSED{color}
* {color:#013220}IgnitePdsWithIndexingTestSuite: 
IgniteClusterSnapshotWithIndexesTest.testClusterSnapshotConsistentConfig[Encryption=false]
 - PASSED{color}
* {color:#013220}IgnitePdsWithIndexingTestSuite: 
IgniteClusterSnapshotWithIndexesTest.testClusterSnapshotWithIndexes[Encryption=false]
 - PASSED{color}
* {color:#013220}IgnitePdsWithIndexingTestSuite: 
IgniteClusterSnapshotCheckWithIndexesTest.testClusterSnapshotCheckEmptyCache[Encryption=true]
 - PASSED{color}
* {color:#013220}IgnitePdsWithIndexingTestSuite: 
IgniteClusterSnapshotCheckWithIndexesTest.testClusterSnapshotCheckWithIndexes[Encryption=false]
 - PASSED{color}
* {color:#013220}IgnitePdsWithIndexingTestSuite: 
IgniteClusterSnapshotCheckWithIndexesTest.testClusterSnapshotCheckWithNodeFilter[Encryption=false]
 - PASSED{color}
* {color:#013220}IgnitePdsWithIndexingTestSuite: 
IgniteClusterSnapshotCheckWithIndexesTest.testClusterSnapshotCheckEmptyCache[Encryption=false]
 - PASSED{color}
* {color:#013220}IgnitePdsWithIndexingTestSuite: 
IgniteClusterSnapshotRestoreWithIndexingTest.testBasicClusterSnapshotRestoreWithMetadata[Encryption=true]
 - PASSED{color}
* {color:#013220}IgnitePdsWithIndexingTestSuite: 
IgniteClusterSnapshotRestoreWithIndexingTest.testClusterSnapshotRestoreOnBiggerTopology[Encryption=true]
 - PASSED{color}
* {color:#013220}IgnitePdsWithIndexingTestSuite: 
IgniteClusterSnapshotRestoreWithIndexingTest.testBasicClusterSnapshotRestore[Encryption=true]
 - PASSED{color}
... and 5 new tests

{color:#8b}Basic 3{color} [[tests 
153|https://ci.ignite.apache.org/viewLog.html?buildId=6088663]]
* {color:#013220}IgniteBasicWithPersistenceTestSuite: 
IgniteClusterSnapshotCheckTest.testClusterSnapshotCheckCRCFail[Encryption=false]
 - PASSED{color}
* {color:#013220}IgniteBasicWithPersistenceTestSuite: 
IgniteClusterSnapshotCheckTest.testClusterSnapshotCheckWithTwoCachesCheckNullInput[Encryption=false]
 - PASSED{color}
* {color:#013220}IgniteBasicWithPersistenceTestSuite: 
IgniteClusterSnapshotCheckTest.testClusterSnapshotCheckMissedPart[Encryption=false]
 - PASSED{color}
* {color:#013220}IgniteBasicWithPersistenceTestSuite: 
IgniteClusterSnapshotCheckTest.testClusterSnapshotCheckMissedMeta[Encryption=false]
 - PASSED{color}
* {color:#013220}IgniteBasicWithPersistenceTestSuite: 
IgniteClusterSnapshotCheckTest.testClusterSnapshotCheckHashesSameAsIdleVerifyHashes[Encryption=true]
 - PASSED{color}
* {color:#013220}IgniteBasicWithPersistenceTestSuite: 
IgniteClusterSnapshotCheckTest.testClusterSnapshotCheckOtherCluster[Encryption=false]
 - PASSED{color}
* {color:#013220}IgniteBasicWithPersistenceTestSuite: 
IgniteClusterSnapshotCheckTest.testClusterSnapshotCheckWithTwoCachesCheckNotCorrupted[Encryption=false]
 - PASSED{color}
* {color:#013220}IgniteBasicWithPersistenceTestSuite: 
IgniteClusterSnapshotCheckTest.testClusterSnapshotCheckPartitionCounters[Encryption=false]
 - PASSED{color}
* {color:#013220}IgniteBasicWithPersistenceTestSuite: 
IgniteClusterSnapshotCheckTest.testClusterSnapshotCheckMissedGroup[Encryption=false]
 - PASSED{color}
* {color:#013220}IgniteBasicWithPersistenceTestSuite: 
IgniteClusterSnapshotCheckTest.testClusterSnapshotCheckHashesSameAsIdleVerifyHashes[Encryption=false]
 - PASSED{color}
* {color:#013220}IgniteBasicWithPersistenceTestSuite: 
IgniteClusterSnapshotSelfTest.testClusterSnapshotIncorrectNameFails[Encryption=true]
 - PASSED{color}
... and 142 new tests

{panel}
[TeamCity *-- Run :: All* 

[jira] [Updated] (IGNITE-14840) Get rid of slf4j in jraft package and for the rest modules of the project

2021-07-15 Thread Mirza Aliev (Jira)


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

Mirza Aliev updated IGNITE-14840:
-
Summary: Get rid of slf4j in jraft package and for the rest modules of the 
project  (was: Get rid of slf4j in jraft package and for the rest modules of 
project)

> Get rid of slf4j in jraft package and for the rest modules of the project
> -
>
> Key: IGNITE-14840
> URL: https://issues.apache.org/jira/browse/IGNITE-14840
> Project: Ignite
>  Issue Type: Task
>Reporter: Alexey Scherbakov
>Assignee: Mirza Aliev
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-alpha3
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> We should replace slf4j logging with IgniteLogger.



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


[jira] [Updated] (IGNITE-14840) Get rid of slf4j in jraft package and for the rest modules of project

2021-07-15 Thread Mirza Aliev (Jira)


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

Mirza Aliev updated IGNITE-14840:
-
Summary: Get rid of slf4j in jraft package and for the rest modules of 
project  (was: Get rid of slf4j in jraft package)

> Get rid of slf4j in jraft package and for the rest modules of project
> -
>
> Key: IGNITE-14840
> URL: https://issues.apache.org/jira/browse/IGNITE-14840
> Project: Ignite
>  Issue Type: Task
>Reporter: Alexey Scherbakov
>Assignee: Mirza Aliev
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-alpha3
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> We should replace slf4j logging with IgniteLogger.



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


[jira] [Updated] (IGNITE-15130) Network message generator must generate "equals" and "hashCode"

2021-07-15 Thread Aleksandr Polovtcev (Jira)


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

Aleksandr Polovtcev updated IGNITE-15130:
-
Description: Network annotation processor must automatically generate 
equals and hashCode implementations, because some code (especially in tests) 
needs to compare message contents.  (was: Network annotation processor must 
automatically generate {{equals and hashCode }}implementations, because some 
code (especially in tests) needs to compare message contents.)

> Network message generator must generate "equals" and "hashCode"
> ---
>
> Key: IGNITE-15130
> URL: https://issues.apache.org/jira/browse/IGNITE-15130
> Project: Ignite
>  Issue Type: Task
>  Components: networking
>Reporter: Aleksandr Polovtcev
>Assignee: Aleksandr Polovtcev
>Priority: Major
>  Labels: ignite-3
>
> Network annotation processor must automatically generate equals and hashCode 
> implementations, because some code (especially in tests) needs to compare 
> message contents.



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


[jira] [Updated] (IGNITE-15130) Network message generator must generate "equals" and "hashCode"

2021-07-15 Thread Aleksandr Polovtcev (Jira)


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

Aleksandr Polovtcev updated IGNITE-15130:
-
Description: Network annotation processor must automatically generate 
{{equals}} and {{hashCode}} implementations, because some code (especially in 
tests) needs to compare message contents.  (was: Network annotation processor 
must automatically generate equals and hashCode implementations, because some 
code (especially in tests) needs to compare message contents.)

> Network message generator must generate "equals" and "hashCode"
> ---
>
> Key: IGNITE-15130
> URL: https://issues.apache.org/jira/browse/IGNITE-15130
> Project: Ignite
>  Issue Type: Task
>  Components: networking
>Reporter: Aleksandr Polovtcev
>Assignee: Aleksandr Polovtcev
>Priority: Major
>  Labels: ignite-3
>
> Network annotation processor must automatically generate {{equals}} and 
> {{hashCode}} implementations, because some code (especially in tests) needs 
> to compare message contents.



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


[jira] [Updated] (IGNITE-15130) Network message generator must generate "equals" and "hashCode"

2021-07-15 Thread Aleksandr Polovtcev (Jira)


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

Aleksandr Polovtcev updated IGNITE-15130:
-
Description: Network annotation processor must automatically generate 
{{equals and hashCode }}implementations, because some code (especially in 
tests) needs to compare message contents.  (was: Network annotation processor 
must automatically generate {{equals }}and{{ hashCode implementations}}, 
because some code (especially in tests) needs to compare message contents.)

> Network message generator must generate "equals" and "hashCode"
> ---
>
> Key: IGNITE-15130
> URL: https://issues.apache.org/jira/browse/IGNITE-15130
> Project: Ignite
>  Issue Type: Task
>  Components: networking
>Reporter: Aleksandr Polovtcev
>Assignee: Aleksandr Polovtcev
>Priority: Major
>  Labels: ignite-3
>
> Network annotation processor must automatically generate {{equals and 
> hashCode }}implementations, because some code (especially in tests) needs to 
> compare message contents.



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


[jira] [Created] (IGNITE-15130) Network message generator must generate "equals" and "hashCode"

2021-07-15 Thread Aleksandr Polovtcev (Jira)
Aleksandr Polovtcev created IGNITE-15130:


 Summary: Network message generator must generate "equals" and 
"hashCode"
 Key: IGNITE-15130
 URL: https://issues.apache.org/jira/browse/IGNITE-15130
 Project: Ignite
  Issue Type: Task
  Components: networking
Reporter: Aleksandr Polovtcev
Assignee: Aleksandr Polovtcev


Network annotation processor must automatically generate {{equals }}and{{ 
hashCode implementations}}, because some code (especially in tests) needs to 
compare message contents.



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


[jira] [Updated] (IGNITE-14743) Support Row with large values.

2021-07-15 Thread Andrey Mashenkov (Jira)


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

Andrey Mashenkov updated IGNITE-14743:
--
Description: 
h3. Motivation.

For now, TupleAssembler writes offsets for varlen columns as 2-byte \{{short 
}}type.
This implicitly restricts key/value sizes down to 64 kB in total.
On another side, for small rows that columns can be addressed with \{{byte}} 
type, we will waste few bytes.

h3. Description.
Let's
# allow 4 byte types (byte, short, int) for offsets.
# implement and benchmark different approaches that allow us to write rows in 
the most compact way.
# then choose and merge the best one.

We can introduce several formats for writing Vartable (using byte/short/int 
offsets).
Additional information about Vartable format can be coded into chunk flags.

The first approach is to precalculate chunk total size, then choose the most 
compact format and write a chunk.
The second approach is to write a chunk with the widest format then convert the 
chunk into the most compact format in place.


  was:
For now, TupleAssembler writes offsets for varlen columns as 2-byte \{{short 
}}type.
 This implicitly restricts key/value sizes down to 64 kB in total.

Let's use 4 byte types (byte, short, int) for offsets.


> Support Row with large values.
> --
>
> Key: IGNITE-14743
> URL: https://issues.apache.org/jira/browse/IGNITE-14743
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Andrey Mashenkov
>Assignee: Andrey Mashenkov
>Priority: Major
>  Labels: iep-54, ignite-3
> Fix For: 3.0.0-alpha3
>
> Attachments: Byte array columns only benchmark.txt, Fixlen cols only 
> benchmark.txt, Latin1 string columns benchmark.txt, Non-latin string columns 
> benchmark.txt, String marshalling comparison
>
>   Original Estimate: 168h
>  Time Spent: 2h 10m
>  Remaining Estimate: 165h 50m
>
> h3. Motivation.
> For now, TupleAssembler writes offsets for varlen columns as 2-byte \{{short 
> }}type.
> This implicitly restricts key/value sizes down to 64 kB in total.
> On another side, for small rows that columns can be addressed with \{{byte}} 
> type, we will waste few bytes.
> h3. Description.
> Let's
> # allow 4 byte types (byte, short, int) for offsets.
> # implement and benchmark different approaches that allow us to write rows in 
> the most compact way.
> # then choose and merge the best one.
> We can introduce several formats for writing Vartable (using byte/short/int 
> offsets).
> Additional information about Vartable format can be coded into chunk flags.
> The first approach is to precalculate chunk total size, then choose the most 
> compact format and write a chunk.
> The second approach is to write a chunk with the widest format then convert 
> the chunk into the most compact format in place.



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


[jira] [Commented] (IGNITE-14728) Change IGNITE_PDS_WAL_REBALANCE_THRESHOLD from System property to Distributed property

2021-07-15 Thread Alexander Lapin (Jira)


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

Alexander Lapin commented on IGNITE-14728:
--

[~erixon] LGTM

> Change IGNITE_PDS_WAL_REBALANCE_THRESHOLD from System property to Distributed 
> property
> --
>
> Key: IGNITE-14728
> URL: https://issues.apache.org/jira/browse/IGNITE-14728
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Eduard Rakhmankulov
>Assignee: Eduard Rakhmankulov
>Priority: Minor
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> We have a system property named "IGNITE_PDS_WAL_REBALANCE_THRESHOLD", that 
> determines a count of entries of partition starting from which cluster will 
> try applying historical rebalance for that partition.
> But the system property is not convenient to use and is hidden from most part 
> of users.
> I propose the creation of a new DMS property *history.rebalance.threshold* 
> instead of a system property.
> The next algorithm will be used:
>  # On node start *history.rebalance.threshold* property will be checked.
>  # If there is no value, then the old system property 
> *IGNITE_PDS_WAL_REBALANCE_THRESHOLD* value will be written to DMS.
>  # If a system property is not defined then the default value from java will 
> be written to DMS (*500*).
>  # On property check print to log value and source of value.
> Mark the system property *IGNITE_PDS_WAL_REBALANCE_THRESHOLD* as deprecated.
> Dev list discussion 
> [http://apache-ignite-developers.2346864.n4.nabble.com/Change-IGNITE-PDS-WAL-REBALANCE-THRESHOLD-from-System-property-to-Configuraton-tp52560.html]
>  



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


[jira] [Commented] (IGNITE-15099) Wrong heartbeat update while waiting for a checkpoint by timeout

2021-07-15 Thread Ilya Shishkov (Jira)


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

Ilya Shishkov commented on IGNITE-15099:


[~alex_pl], LGTM.

> Wrong heartbeat update while waiting for a checkpoint by timeout
> 
>
> Key: IGNITE-15099
> URL: https://issues.apache.org/jira/browse/IGNITE-15099
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 2.11, 2.12
>Reporter: Ilya Shishkov
>Assignee: Aleksey Plekhanov
>Priority: Minor
>  Labels: ise
> Attachments: Checkpointer_fake_block_master.patch
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> This problem occurs under these conditions:
>  * native persistence is turned on
>  * failureDetectionTimeout < checkpointFrequency
>  * checkpoints are sometimes skipped by timeout (more often, more probable 
> the problem occurrence)
> There is a race condition between a listener execution and finishing of a 
> pending future (see CheckpointContextImpl#executor body [1]). In some cases 
> future can finish before listener closure, therefore updating of a heartbeat 
> in listener can occur after call of _blockingSectionBegin_ in 
> Checkpointer#waitCheckpointEvent, i.e. after Checkpointer started to wait for 
> next checkpoint (see [2]).
> {code:java|title=CheckpointContextImpl#executor}
> @Override public Executor executor() {
> return asyncRunner == null ? null : cmd -> {
> try {
> GridFutureAdapter res = new GridFutureAdapter<>();
> res.listen(fut -> heartbeatUpdater.updateHeartbeat()); // 
> Listener is invoked concurrently with pending future finish
> asyncRunner.execute(U.wrapIgniteFuture(cmd, res));
> pendingTaskFuture.add(res);
> }
> catch (RejectedExecutionException e) {
> assert false : "A task should never be rejected by async 
> runner";
> }
> };
> }
> {code}
> {code:java|title=Checkpointer#waitCheckpointEvent}
> try {
> synchronized (this) {
> long remaining = U.nanosToMillis(scheduledCp.nextCpNanos - 
> System.nanoTime());
> while (remaining > 0 && !isCancelled()) {
> blockingSectionBegin();
> try {
> wait(remaining); 
> // At this point and till blockingSectionEnd call heartbeat 
> should be equal to Long.MAX_VALUE
> remaining = U.nanosToMillis(scheduledCp.nextCpNanos - 
> System.nanoTime());
> }
> finally {
> blockingSectionEnd();
> }
> }
> }
> }
> {code}
>  
> If interval between checkpoints (_checkpointFrequency_) is greater than the 
> _failureDetectionTimeout_, then update of heartbeat in _blockingSectionEnd_ 
> may cause an error message in log, because a checkpoint thread is treated as 
> blocked (but in fact it was not).
> *Reproducer of problem:* [3]. Even if test was not failed you can see log 
> message with incorrect heartbeat after waiting for checkpoint.
>  
> Links:
>  # 
> [CheckpointContextImpl#executor|https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/checkpoint/CheckpointContextImpl.java#L104]
>  # 
> [Checkpointer#waitCheckpointEvent|https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/checkpoint/Checkpointer.java#L816]
> # Reproducer: [^Checkpointer_fake_block_master.patch]. 



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


[jira] [Comment Edited] (IGNITE-15069) Fix flaky test: GridCommandHandlerTest.testSetState

2021-07-15 Thread Sergei Ryzhov (Jira)


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

Sergei Ryzhov edited comment on IGNITE-15069 at 7/15/21, 2:18 PM:
--

problem with DiscoveryDataClusterState#state()

the cache.put occurred before the cluster changed its DiscoveryDataClusterState


was (Author: ryzhovsv):
problem with DiscoveryDataClusterState#state()


> Fix flaky test: GridCommandHandlerTest.testSetState
> ---
>
> Key: IGNITE-15069
> URL: https://issues.apache.org/jira/browse/IGNITE-15069
> Project: Ignite
>  Issue Type: Test
>Reporter: Sergei Ryzhov
>Assignee: Sergei Ryzhov
>Priority: Minor
>  Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> https://ci.ignite.apache.org/buildConfiguration/IgniteTests24Java8_ControlUtilityZookeeper/6073175?expandedTest=build%3A%28id%3A6073175%29%2Cid%3A22184=6073175_22184_1623.22131.22184=debug
> {code:java}
>   [2021-07-05 06:25:53,131][ERROR][main][root] Test failed 
> [test=GridCommandHandlerTest#testSetState, duration=8469]
>   javax.cache.CacheException: class 
> org.apache.ignite.transactions.TransactionRollbackException: Transaction has 
> been rolled back: 0ed43b47a71--0e1f-597b--0001
> at 
> org.apache.ignite.internal.processors.cache.GridCacheUtils.convertToCacheException(GridCacheUtils.java:1277)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.cacheException(IgniteCacheProxyImpl.java:2084)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.put(IgniteCacheProxyImpl.java:1320)
> at 
> org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.put(GatewayProtectedCacheProxy.java:868)
> at 
> org.apache.ignite.internal.processors.cache.ClusterStateTestUtils.putSomeDataAndCheck(ClusterStateTestUtils.java:101)
> at 
> org.apache.ignite.util.GridCommandHandlerTest.setState(GridCommandHandlerTest.java:979)
> at 
> org.apache.ignite.util.GridCommandHandlerTest.testSetState(GridCommandHandlerTest.java:947)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
> at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
> at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> at 
> org.apache.ignite.testframework.junits.GridAbstractTest$7.run(GridAbstractTest.java:2432)
> at java.lang.Thread.run(Thread.java:748)
>   Caused by: class 
> org.apache.ignite.transactions.TransactionRollbackException: Transaction has 
> been rolled back: 0ed43b47a71--0e1f-597b--0001
> at 
> org.apache.ignite.internal.util.IgniteUtils$11.apply(IgniteUtils.java:977)
> at 
> org.apache.ignite.internal.util.IgniteUtils$11.apply(IgniteUtils.java:975)
> ... 17 more
>   Caused by: class 
> org.apache.ignite.internal.transactions.IgniteTxRollbackCheckedException: 
> Transaction has been rolled back: 
> 0ed43b47a71--0e1f-597b--0001
> at 
> org.apache.ignite.internal.processors.cache.GridCacheAdapter.syncOp(GridCacheAdapter.java:4429)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheAdapter.put0(GridCacheAdapter.java:2624)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:2602)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:2581)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.put(IgniteCacheProxyImpl.java:1317)
> ... 14 more
>   Caused by: class org.apache.ignite.IgniteCheckedException: Failed to 
> perform cache operation (cache topology is not valid): part_cache
> at 
> org.apache.ignite.internal.processors.cache.transactions.IgniteTxImplicitSingleStateImpl.validateTopology(IgniteTxImplicitSingleStateImpl.java:141)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.prepare(GridDhtTxPrepareFuture.java:1105)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxLocal.prepareAsync(GridDhtTxLocal.java:400)
> at 
> 

[jira] [Commented] (IGNITE-15086) Design a public tx API

2021-07-15 Thread Vyacheslav Koptilin (Jira)


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

Vyacheslav Koptilin commented on IGNITE-15086:
--

In general, the proposed API looks good to me.

> Design a public tx API
> --
>
> Key: IGNITE-15086
> URL: https://issues.apache.org/jira/browse/IGNITE-15086
> Project: Ignite
>  Issue Type: Task
>Reporter: Alexey Scherbakov
>Assignee: Alexey Scherbakov
>Priority: Major
>  Labels: iep-61, ignite-3
> Fix For: 3.0.0-alpha3
>
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> Design a public tx API.
> The proposed design includes async and sync APIs to execute a transaction.
> The transaction facade looks like this:
> {code:java}
> /**
>  * Ignite Transactions facade.
>  */
> public interface IgniteTransactions {
> /**
>  * Begins the transaction.
>  *
>  * @return The future.
>  */
> CompletableFuture beginAsync();
> /**
>  * Synchronously executes a closure within a transaction.
>  * 
>  * If the closure is executed normally (no exceptions), the transaction 
> is automatically committed.
>  *
>  * @param clo The closure.
>  */
> void runInTransaction(Consumer clo);
> }
> {code}
> Transacton interface:
> {code:java}
> /**
>  * The transaction.
>  */
> public interface Transaction {
> /**
>  * Synchronously commits a transaction.
>  * Does nothing if it's already finished by committing or rolling back.
>  */
> void commit();
> /**
>  * Asynchronously commits a transaction.
>  * Does nothing if it's already finished by committing or rolling back.
>  *
>  * @return The future.
>  */
> CompletableFuture commitAsync();
> /**
>  * Synchronously rolls back a transaction.
>  * Does nothing if it's already finished by committing or rolling back.
>  */
> void rollback();
> /**
>  * Asynchronously rolls back a transaction.
>  * Does nothing if it's already finished by committing or rolling back.
>  *
>  * @return The future.
>  */
> CompletableFuture rollbackAsync();
> }
> {code}
> Example of synchronous transaction:
> {code:java}
> igniteTransactions.runInTransaction(tx -> {
> Table txTable = table.withTransaction(tx); // table view enlisted 
> in the transaction.
> txTable.upsertAsync(...);
> tx.commit(); 
> });
> {code}
> Example of asynchronous transaction:
> {code:java}
> igniteTransactions.beginAsync()
> .thenApply(tx -> accounts.withTransaction(tx))
> .thenCompose(txTbl -> txTbl.upsertAsync(...).thenApply(i -> 
> txTbl.transaction()))
> .thenCompose(Transaction::commitAsync);
> {code}



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


[jira] [Updated] (IGNITE-15086) Design a public tx API

2021-07-15 Thread Vyacheslav Koptilin (Jira)


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

Vyacheslav Koptilin updated IGNITE-15086:
-
Description: 
Design a public tx API.

The proposed design includes async and sync APIs to execute a transaction.

The transaction facade looks like this:
{code:java}
/**
 * Ignite Transactions facade.
 */
public interface IgniteTransactions {
/**
 * Begins the transaction.
 *
 * @return The future.
 */
CompletableFuture beginAsync();

/**
 * Synchronously executes a closure within a transaction.
 * 
 * If the closure is executed normally (no exceptions), the transaction is 
automatically committed.
 *
 * @param clo The closure.
 */
void runInTransaction(Consumer clo);
}
{code}

Transacton interface:
{code:java}
/**
 * The transaction.
 */
public interface Transaction {
/**
 * Synchronously commits a transaction.
 * Does nothing if it's already finished by committing or rolling back.
 */
void commit();

/**
 * Asynchronously commits a transaction.
 * Does nothing if it's already finished by committing or rolling back.
 *
 * @return The future.
 */
CompletableFuture commitAsync();

/**
 * Synchronously rolls back a transaction.
 * Does nothing if it's already finished by committing or rolling back.
 */
void rollback();

/**
 * Asynchronously rolls back a transaction.
 * Does nothing if it's already finished by committing or rolling back.
 *
 * @return The future.
 */
CompletableFuture rollbackAsync();
}
{code}

Example of synchronous transaction:
{code:java}
igniteTransactions.runInTransaction(tx -> {
Table txTable = table.withTransaction(tx); // table view enlisted 
in the transaction.

txTable.upsertAsync(...);

tx.commit(); 
});
{code}

Example of asynchronous transaction:
{code:java}
igniteTransactions.beginAsync()
.thenApply(tx -> accounts.withTransaction(tx))
.thenCompose(txTbl -> txTbl.upsertAsync(...).thenApply(i -> 
txTbl.transaction()))
.thenCompose(Transaction::commitAsync);
{code}


  was:
Design a public tx API.

The proposed design includes async and sync APIs to execute a transaction.

The transaction facade looks like this:

{code}
/**
 * Ignite Transactions facade.
 */
public interface IgniteTransactions {
/**
 * Begins the transaction.
 *
 * @return The future.
 */
CompletableFuture beginAsync();

/**
 * Synchronously executes a closure within a transaction.
 * 
 * If the closure is executed normally (no exceptions), the transaction is 
automatically committed.
 *
 * @param clo The closure.
 */
void runInTransaction(Consumer clo);
}
{code}


> Design a public tx API
> --
>
> Key: IGNITE-15086
> URL: https://issues.apache.org/jira/browse/IGNITE-15086
> Project: Ignite
>  Issue Type: Task
>Reporter: Alexey Scherbakov
>Assignee: Alexey Scherbakov
>Priority: Major
>  Labels: iep-61, ignite-3
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> Design a public tx API.
> The proposed design includes async and sync APIs to execute a transaction.
> The transaction facade looks like this:
> {code:java}
> /**
>  * Ignite Transactions facade.
>  */
> public interface IgniteTransactions {
> /**
>  * Begins the transaction.
>  *
>  * @return The future.
>  */
> CompletableFuture beginAsync();
> /**
>  * Synchronously executes a closure within a transaction.
>  * 
>  * If the closure is executed normally (no exceptions), the transaction 
> is automatically committed.
>  *
>  * @param clo The closure.
>  */
> void runInTransaction(Consumer clo);
> }
> {code}
> Transacton interface:
> {code:java}
> /**
>  * The transaction.
>  */
> public interface Transaction {
> /**
>  * Synchronously commits a transaction.
>  * Does nothing if it's already finished by committing or rolling back.
>  */
> void commit();
> /**
>  * Asynchronously commits a transaction.
>  * Does nothing if it's already finished by committing or rolling back.
>  *
>  * @return The future.
>  */
> CompletableFuture commitAsync();
> /**
>  * Synchronously rolls back a transaction.
>  * Does nothing if it's already finished by committing or rolling back.
>  */
> void rollback();
> /**
>  * Asynchronously rolls back a transaction.
>  * Does nothing if it's already finished by committing or rolling back.
>  *
>  * @return The future.
>  */
> CompletableFuture rollbackAsync();
> }
> {code}
> Example of synchronous transaction:
> {code:java}
> 

[jira] [Updated] (IGNITE-15086) Design a public tx API

2021-07-15 Thread Vyacheslav Koptilin (Jira)


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

Vyacheslav Koptilin updated IGNITE-15086:
-
Fix Version/s: 3.0.0-alpha3

> Design a public tx API
> --
>
> Key: IGNITE-15086
> URL: https://issues.apache.org/jira/browse/IGNITE-15086
> Project: Ignite
>  Issue Type: Task
>Reporter: Alexey Scherbakov
>Assignee: Alexey Scherbakov
>Priority: Major
>  Labels: iep-61, ignite-3
> Fix For: 3.0.0-alpha3
>
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> Design a public tx API.
> The proposed design includes async and sync APIs to execute a transaction.
> The transaction facade looks like this:
> {code:java}
> /**
>  * Ignite Transactions facade.
>  */
> public interface IgniteTransactions {
> /**
>  * Begins the transaction.
>  *
>  * @return The future.
>  */
> CompletableFuture beginAsync();
> /**
>  * Synchronously executes a closure within a transaction.
>  * 
>  * If the closure is executed normally (no exceptions), the transaction 
> is automatically committed.
>  *
>  * @param clo The closure.
>  */
> void runInTransaction(Consumer clo);
> }
> {code}
> Transacton interface:
> {code:java}
> /**
>  * The transaction.
>  */
> public interface Transaction {
> /**
>  * Synchronously commits a transaction.
>  * Does nothing if it's already finished by committing or rolling back.
>  */
> void commit();
> /**
>  * Asynchronously commits a transaction.
>  * Does nothing if it's already finished by committing or rolling back.
>  *
>  * @return The future.
>  */
> CompletableFuture commitAsync();
> /**
>  * Synchronously rolls back a transaction.
>  * Does nothing if it's already finished by committing or rolling back.
>  */
> void rollback();
> /**
>  * Asynchronously rolls back a transaction.
>  * Does nothing if it's already finished by committing or rolling back.
>  *
>  * @return The future.
>  */
> CompletableFuture rollbackAsync();
> }
> {code}
> Example of synchronous transaction:
> {code:java}
> igniteTransactions.runInTransaction(tx -> {
> Table txTable = table.withTransaction(tx); // table view enlisted 
> in the transaction.
> txTable.upsertAsync(...);
> tx.commit(); 
> });
> {code}
> Example of asynchronous transaction:
> {code:java}
> igniteTransactions.beginAsync()
> .thenApply(tx -> accounts.withTransaction(tx))
> .thenCompose(txTbl -> txTbl.upsertAsync(...).thenApply(i -> 
> txTbl.transaction()))
> .thenCompose(Transaction::commitAsync);
> {code}



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


[jira] [Updated] (IGNITE-15129) Improve timestamp generation for transactions

2021-07-15 Thread Alexey Scherbakov (Jira)


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

Alexey Scherbakov updated IGNITE-15129:
---
Description: 
Current timestamp implementation doesn't include globalId part, so is useful 
only then all transactions ids are generated on single node.

It should be improved by adding global unique jvm id to the timestamp.

Additionally, current timestamp uses nanoSeconds, which is far away from real 
time.

Instead, NTP timestamp can be used as a localTime part.

IgniteUuid can be used for this purpose as well - it's the simplest solution.

Also, the performance of current implementation may not be optimal - probably 
it should be CAS powered or/and use optimistic locking (StampedLock).

  was:
Current timestamp implementation doesn't include globalId part, so is useful 
only then all transactions ids are generated on single node.

It should be improved by adding global unique jvm id to the timestamp.

Additionally, current timestamp uses nanoSeconds, which is far away from real 
time.

Instead, NTP timestamp can be used as a localTime part.

IgniteUuid can be used for this purpose as well - it's the simplest solution.

Also, the perfornace of current implementation may not be optimal - probably it 
should be CAS powered or/and use optimistic locking (StampedLock).


> Improve timestamp generation for transactions
> -
>
> Key: IGNITE-15129
> URL: https://issues.apache.org/jira/browse/IGNITE-15129
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Alexey Scherbakov
>Priority: Major
>  Labels: iep-61, ignite-3
> Fix For: 3.0.0-alpha3
>
>
> Current timestamp implementation doesn't include globalId part, so is useful 
> only then all transactions ids are generated on single node.
> It should be improved by adding global unique jvm id to the timestamp.
> Additionally, current timestamp uses nanoSeconds, which is far away from real 
> time.
> Instead, NTP timestamp can be used as a localTime part.
> IgniteUuid can be used for this purpose as well - it's the simplest solution.
> Also, the performance of current implementation may not be optimal - probably 
> it should be CAS powered or/and use optimistic locking (StampedLock).



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


[jira] [Updated] (IGNITE-15086) Design a public tx API

2021-07-15 Thread Vyacheslav Koptilin (Jira)


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

Vyacheslav Koptilin updated IGNITE-15086:
-
Description: 
Design a public tx API.

The proposed design includes async and sync APIs to execute a transaction.

The transaction facade looks like this:

{code}
/**
 * Ignite Transactions facade.
 */
public interface IgniteTransactions {
/**
 * Begins the transaction.
 *
 * @return The future.
 */
CompletableFuture beginAsync();

/**
 * Synchronously executes a closure within a transaction.
 * 
 * If the closure is executed normally (no exceptions), the transaction is 
automatically committed.
 *
 * @param clo The closure.
 */
void runInTransaction(Consumer clo);
}
{code}

  was:
Design a public tx API.

The proposed design includes async and sync APIs to execute a transaction.

The transaction facade looks like this:

{code}
/**
 * Ignite Transactions facade.
 */
public interface IgniteTransactions {
/**
 * Begins the transaction.
 *
 * @return The future.
 */
CompletableFuture beginAsync();

/**
 * Synchronously executes a closure within a transaction.
 *
 * @param clo The closure.
 */
void runInTransaction(Consumer clo);
}
{code}


> Design a public tx API
> --
>
> Key: IGNITE-15086
> URL: https://issues.apache.org/jira/browse/IGNITE-15086
> Project: Ignite
>  Issue Type: Task
>Reporter: Alexey Scherbakov
>Assignee: Alexey Scherbakov
>Priority: Major
>  Labels: iep-61, ignite-3
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> Design a public tx API.
> The proposed design includes async and sync APIs to execute a transaction.
> The transaction facade looks like this:
> {code}
> /**
>  * Ignite Transactions facade.
>  */
> public interface IgniteTransactions {
> /**
>  * Begins the transaction.
>  *
>  * @return The future.
>  */
> CompletableFuture beginAsync();
> /**
>  * Synchronously executes a closure within a transaction.
>  * 
>  * If the closure is executed normally (no exceptions), the transaction 
> is automatically committed.
>  *
>  * @param clo The closure.
>  */
> void runInTransaction(Consumer clo);
> }
> {code}



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


[jira] [Commented] (IGNITE-15069) Fix flaky test: GridCommandHandlerTest.testSetState

2021-07-15 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-15069:


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

> Fix flaky test: GridCommandHandlerTest.testSetState
> ---
>
> Key: IGNITE-15069
> URL: https://issues.apache.org/jira/browse/IGNITE-15069
> Project: Ignite
>  Issue Type: Test
>Reporter: Sergei Ryzhov
>Assignee: Sergei Ryzhov
>Priority: Minor
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> https://ci.ignite.apache.org/buildConfiguration/IgniteTests24Java8_ControlUtilityZookeeper/6073175?expandedTest=build%3A%28id%3A6073175%29%2Cid%3A22184=6073175_22184_1623.22131.22184=debug
> {code:java}
>   [2021-07-05 06:25:53,131][ERROR][main][root] Test failed 
> [test=GridCommandHandlerTest#testSetState, duration=8469]
>   javax.cache.CacheException: class 
> org.apache.ignite.transactions.TransactionRollbackException: Transaction has 
> been rolled back: 0ed43b47a71--0e1f-597b--0001
> at 
> org.apache.ignite.internal.processors.cache.GridCacheUtils.convertToCacheException(GridCacheUtils.java:1277)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.cacheException(IgniteCacheProxyImpl.java:2084)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.put(IgniteCacheProxyImpl.java:1320)
> at 
> org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.put(GatewayProtectedCacheProxy.java:868)
> at 
> org.apache.ignite.internal.processors.cache.ClusterStateTestUtils.putSomeDataAndCheck(ClusterStateTestUtils.java:101)
> at 
> org.apache.ignite.util.GridCommandHandlerTest.setState(GridCommandHandlerTest.java:979)
> at 
> org.apache.ignite.util.GridCommandHandlerTest.testSetState(GridCommandHandlerTest.java:947)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
> at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
> at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> at 
> org.apache.ignite.testframework.junits.GridAbstractTest$7.run(GridAbstractTest.java:2432)
> at java.lang.Thread.run(Thread.java:748)
>   Caused by: class 
> org.apache.ignite.transactions.TransactionRollbackException: Transaction has 
> been rolled back: 0ed43b47a71--0e1f-597b--0001
> at 
> org.apache.ignite.internal.util.IgniteUtils$11.apply(IgniteUtils.java:977)
> at 
> org.apache.ignite.internal.util.IgniteUtils$11.apply(IgniteUtils.java:975)
> ... 17 more
>   Caused by: class 
> org.apache.ignite.internal.transactions.IgniteTxRollbackCheckedException: 
> Transaction has been rolled back: 
> 0ed43b47a71--0e1f-597b--0001
> at 
> org.apache.ignite.internal.processors.cache.GridCacheAdapter.syncOp(GridCacheAdapter.java:4429)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheAdapter.put0(GridCacheAdapter.java:2624)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:2602)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:2581)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.put(IgniteCacheProxyImpl.java:1317)
> ... 14 more
>   Caused by: class org.apache.ignite.IgniteCheckedException: Failed to 
> perform cache operation (cache topology is not valid): part_cache
> at 
> org.apache.ignite.internal.processors.cache.transactions.IgniteTxImplicitSingleStateImpl.validateTopology(IgniteTxImplicitSingleStateImpl.java:141)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.prepare(GridDhtTxPrepareFuture.java:1105)
> at 
> 

[jira] [Commented] (IGNITE-14864) Schema update. Merge multiple converters stages.

2021-07-15 Thread Konstantin Orlov (Jira)


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

Konstantin Orlov commented on IGNITE-14864:
---

[~amashenkov], I've left few comments. Please see PR.

> Schema update. Merge multiple converters stages.
> 
>
> Key: IGNITE-14864
> URL: https://issues.apache.org/jira/browse/IGNITE-14864
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Andrey Mashenkov
>Assignee: Andrey Mashenkov
>Priority: Major
>  Labels: iep-54, ignite-3
> Fix For: 3.0.0-alpha3
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> Assumed schema was updated a number of times and there are n >1 converters to 
> apply.
> Let's chain converters  to apply all at once rather then one-by-one having a 
> row of intermediate version in between.
> Also, opposite changes like  "adding column A" then "remove column A" or
> "Changing column default" then "remove column A" can be effectively omitted.



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


[jira] [Created] (IGNITE-15129) Improve timestamp generation for transactions

2021-07-15 Thread Alexey Scherbakov (Jira)
Alexey Scherbakov created IGNITE-15129:
--

 Summary: Improve timestamp generation for transactions
 Key: IGNITE-15129
 URL: https://issues.apache.org/jira/browse/IGNITE-15129
 Project: Ignite
  Issue Type: Improvement
Reporter: Alexey Scherbakov
 Fix For: 3.0.0-alpha3


Current timestamp implementation doesn't include globalId part, so is useful 
only then all transactions ids are generated on single node.

It should be improved by adding global unique jvm id to the timestamp.

Additionally, current timestamp uses nanoSeconds, which is far away from real 
time.

Instead, NTP timestamp can be used as a localTime part.

IgniteUuid can be used for this purpose as well - it's the simplest solution.

Also, the perfornace of current implementation may not be optimal - probably it 
should be CAS powered or/and use optimistic locking (StampedLock).



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


[jira] [Commented] (IGNITE-15099) Wrong heartbeat update while waiting for a checkpoint by timeout

2021-07-15 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov commented on IGNITE-15099:


[~shishkovilja], can you please have a look at the patch?

> Wrong heartbeat update while waiting for a checkpoint by timeout
> 
>
> Key: IGNITE-15099
> URL: https://issues.apache.org/jira/browse/IGNITE-15099
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 2.11, 2.12
>Reporter: Ilya Shishkov
>Assignee: Aleksey Plekhanov
>Priority: Minor
>  Labels: ise
> Attachments: Checkpointer_fake_block_master.patch
>
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> This problem occurs under these conditions:
>  * native persistence is turned on
>  * failureDetectionTimeout < checkpointFrequency
>  * checkpoints are sometimes skipped by timeout (more often, more probable 
> the problem occurrence)
> There is a race condition between a listener execution and finishing of a 
> pending future (see CheckpointContextImpl#executor body [1]). In some cases 
> future can finish before listener closure, therefore updating of a heartbeat 
> in listener can occur after call of _blockingSectionBegin_ in 
> Checkpointer#waitCheckpointEvent, i.e. after Checkpointer started to wait for 
> next checkpoint (see [2]).
> {code:java|title=CheckpointContextImpl#executor}
> @Override public Executor executor() {
> return asyncRunner == null ? null : cmd -> {
> try {
> GridFutureAdapter res = new GridFutureAdapter<>();
> res.listen(fut -> heartbeatUpdater.updateHeartbeat()); // 
> Listener is invoked concurrently with pending future finish
> asyncRunner.execute(U.wrapIgniteFuture(cmd, res));
> pendingTaskFuture.add(res);
> }
> catch (RejectedExecutionException e) {
> assert false : "A task should never be rejected by async 
> runner";
> }
> };
> }
> {code}
> {code:java|title=Checkpointer#waitCheckpointEvent}
> try {
> synchronized (this) {
> long remaining = U.nanosToMillis(scheduledCp.nextCpNanos - 
> System.nanoTime());
> while (remaining > 0 && !isCancelled()) {
> blockingSectionBegin();
> try {
> wait(remaining); 
> // At this point and till blockingSectionEnd call heartbeat 
> should be equal to Long.MAX_VALUE
> remaining = U.nanosToMillis(scheduledCp.nextCpNanos - 
> System.nanoTime());
> }
> finally {
> blockingSectionEnd();
> }
> }
> }
> }
> {code}
>  
> If interval between checkpoints (_checkpointFrequency_) is greater than the 
> _failureDetectionTimeout_, then update of heartbeat in _blockingSectionEnd_ 
> may cause an error message in log, because a checkpoint thread is treated as 
> blocked (but in fact it was not).
> *Reproducer of problem:* [3]. Even if test was not failed you can see log 
> message with incorrect heartbeat after waiting for checkpoint.
>  
> Links:
>  # 
> [CheckpointContextImpl#executor|https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/checkpoint/CheckpointContextImpl.java#L104]
>  # 
> [Checkpointer#waitCheckpointEvent|https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/checkpoint/Checkpointer.java#L816]
> # Reproducer: [^Checkpointer_fake_block_master.patch]. 



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


[jira] [Commented] (IGNITE-15086) Design a public tx API

2021-07-15 Thread Alexey Scherbakov (Jira)


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

Alexey Scherbakov commented on IGNITE-15086:


It seems the proposed API is fine at this point.

Dev-list discussion [1]

Waiting for a formal review.

[1] 
[https://lists.apache.org/thread.html/r0d66b3dc788e3caa2afc75aa8792e82a25abe3cda213500cb6238b2c%40%3Cdev.ignite.apache.org%3E]

> Design a public tx API
> --
>
> Key: IGNITE-15086
> URL: https://issues.apache.org/jira/browse/IGNITE-15086
> Project: Ignite
>  Issue Type: Task
>Reporter: Alexey Scherbakov
>Assignee: Alexey Scherbakov
>Priority: Major
>  Labels: iep-61, ignite-3
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> Design a public tx API.
> The proposed design includes async and sync APIs to execute a transaction.
> The transaction facade looks like this:
> {code}
> /**
>  * Ignite Transactions facade.
>  */
> public interface IgniteTransactions {
> /**
>  * Begins the transaction.
>  *
>  * @return The future.
>  */
> CompletableFuture beginAsync();
> /**
>  * Synchronously executes a closure within a transaction.
>  *
>  * @param clo The closure.
>  */
> void runInTransaction(Consumer clo);
> }
> {code}



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


[jira] [Commented] (IGNITE-14866) Calcite. Check SQL function works

2021-07-15 Thread Yury Gerzhedovich (Jira)


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

Yury Gerzhedovich commented on IGNITE-14866:


List of function which works:
JSON:
JSON_EXISTS;
JSON_VALUE;
JSON_QUERY;
JSON_OBJECT;
JSON_ARRAY;
JSON_PRETTY

STRING:
CHAR_LENGTH;
CHARACTER_LENGTH;
UPPER;
LOWER;
POSITION;
TRIM;
OVERLAY;
SUBSTRING;
INITCAP;

STRCMP
REVERSE
REGEXP_REPLACE
SHA1
MD5
LTRIM
TO_BASE64
FROM_BASE64
COMPRESS
CONCAT
TRANSLATE;
ASCII;  
LEFT
RIGHT
REPEAT
SOUNDEX

NUMERIC:
POWER;
ABS;
MOD;
SQRT;
LN;
LOG10;
EXP;
CEIL;
FLOOR;
RAND
ACOS;
ASIN;
ATAN;
ATAN2;
CBRT;
COS;
COT;
DEGREES;
PI();
RADIANS;
ROUND;
SIGN;
SIN;
TAN;
TRUNCATE;

CHR
COSH
SINH
TANH

GENERAL:
NULLIF;
COALESCE;
CAST;
NVL
GREATEST

TIMESTAMP:
TIMESTAMP_ADD;
TIMESTAMP_DIFF;
EXTRACT;
LAST_DAY


> Calcite. Check SQL function works
> -
>
> Key: IGNITE-14866
> URL: https://issues.apache.org/jira/browse/IGNITE-14866
> Project: Ignite
>  Issue Type: New Feature
>  Components: sql
>Reporter: Yury Gerzhedovich
>Assignee: Yury Gerzhedovich
>Priority: Major
>  Labels: calcite2-required, calcite3-required
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> We need to write tests on existing simple SQL functions (nor aggregation or 
> window functions) and have a list of supported functions.



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


[jira] [Created] (IGNITE-15128) Take own control of SQL functions

2021-07-15 Thread Yury Gerzhedovich (Jira)
Yury Gerzhedovich created IGNITE-15128:
--

 Summary: Take own control of SQL functions
 Key: IGNITE-15128
 URL: https://issues.apache.org/jira/browse/IGNITE-15128
 Project: Ignite
  Issue Type: Improvement
  Components: sql
Reporter: Yury Gerzhedovich


As of now, we use a set of 4 database function dialects:

SqlLibrary.STANDARD,
SqlLibrary.POSTGRESQL,
SqlLibrary.ORACLE,
SqlLibrary.MYSQL


Seems we should have owned our dialect with a subset of the aforementioned 
functions and have the ability to modify already exists functions and add a new 
one.

During implementation need to sort out similar functions and choose just one of 
them to avoid duplication, 

See :
org.apache.calcite.util.BuiltInMethod

org.apache.calcite.sql.fun.SqlLibraryOperators
org.apache.calcite.runtime.SqlFunctions

org.apache.ignite.internal.processors.query.calcite.exec.exp.RexImpTable



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


[jira] [Created] (IGNITE-15127) Calcite. Investigate CoreRules.JOIN_COMMUTE[_OUTER] usage.

2021-07-15 Thread Stanilovsky Evgeny (Jira)
Stanilovsky Evgeny created IGNITE-15127:
---

 Summary: Calcite. Investigate CoreRules.JOIN_COMMUTE[_OUTER] usage.
 Key: IGNITE-15127
 URL: https://issues.apache.org/jira/browse/IGNITE-15127
 Project: Ignite
  Issue Type: Improvement
  Components: sql
Reporter: Stanilovsky Evgeny
Assignee: Stanilovsky Evgeny


Looks like join commute rule can dramatically reduce some join costs, 
investigation and tests are required.



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


[jira] [Created] (IGNITE-15126) Cluster hangs when error is thrown on activation

2021-07-15 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-15126:
--

 Summary: Cluster hangs when error is thrown on activation 
 Key: IGNITE-15126
 URL: https://issues.apache.org/jira/browse/IGNITE-15126
 Project: Ignite
  Issue Type: Bug
Reporter: Aleksey Plekhanov


When an error occurs on cluster activation (In methods 

{{IgniteChangeGlobalStateSupport.onActivate()}}) state-change process hangs 
(stay in "in transition" state) and switches the cluster to an inoperable state 
even if the problematic node is stopped by the failure handler.

Reproducer:
{code:java}
public class ErrorOnActivationTest extends GridCommonAbstractTest {
@Override protected IgniteConfiguration getConfiguration(String 
igniteInstanceName) throws Exception {
return super.getConfiguration(igniteInstanceName).setFailureHandler(new 
StopNodeFailureHandler())
.setClusterStateOnStart(ClusterState.INACTIVE);
}

@Test
public void testErrorOnActivation() throws Exception {
Ignite ignite = startGrid(getConfiguration("test1"));
startGrid(getConfiguration("test2"))
.context().internalSubscriptionProcessor().registerDatabaseListener(
new DatabaseLifecycleListener() {
@Override public void 
afterInitialise(IgniteCacheDatabaseSharedManager mgr) throws 
IgniteCheckedException {
throw new IgniteCheckedException("Test");
}
}
);

ignite.cluster().state(ClusterState.ACTIVE);
startClientGrid(); // Hangs here.
}
}
{code}



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


[jira] [Commented] (IGNITE-15069) Fix flaky test: GridCommandHandlerTest.testSetState

2021-07-15 Thread Ignite TC Bot (Jira)


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

Ignite TC Bot commented on IGNITE-15069:


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

> Fix flaky test: GridCommandHandlerTest.testSetState
> ---
>
> Key: IGNITE-15069
> URL: https://issues.apache.org/jira/browse/IGNITE-15069
> Project: Ignite
>  Issue Type: Test
>Reporter: Sergei Ryzhov
>Assignee: Sergei Ryzhov
>Priority: Minor
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> https://ci.ignite.apache.org/buildConfiguration/IgniteTests24Java8_ControlUtilityZookeeper/6073175?expandedTest=build%3A%28id%3A6073175%29%2Cid%3A22184=6073175_22184_1623.22131.22184=debug
> {code:java}
>   [2021-07-05 06:25:53,131][ERROR][main][root] Test failed 
> [test=GridCommandHandlerTest#testSetState, duration=8469]
>   javax.cache.CacheException: class 
> org.apache.ignite.transactions.TransactionRollbackException: Transaction has 
> been rolled back: 0ed43b47a71--0e1f-597b--0001
> at 
> org.apache.ignite.internal.processors.cache.GridCacheUtils.convertToCacheException(GridCacheUtils.java:1277)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.cacheException(IgniteCacheProxyImpl.java:2084)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.put(IgniteCacheProxyImpl.java:1320)
> at 
> org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.put(GatewayProtectedCacheProxy.java:868)
> at 
> org.apache.ignite.internal.processors.cache.ClusterStateTestUtils.putSomeDataAndCheck(ClusterStateTestUtils.java:101)
> at 
> org.apache.ignite.util.GridCommandHandlerTest.setState(GridCommandHandlerTest.java:979)
> at 
> org.apache.ignite.util.GridCommandHandlerTest.testSetState(GridCommandHandlerTest.java:947)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
> at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
> at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
> at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
> at 
> org.apache.ignite.testframework.junits.GridAbstractTest$7.run(GridAbstractTest.java:2432)
> at java.lang.Thread.run(Thread.java:748)
>   Caused by: class 
> org.apache.ignite.transactions.TransactionRollbackException: Transaction has 
> been rolled back: 0ed43b47a71--0e1f-597b--0001
> at 
> org.apache.ignite.internal.util.IgniteUtils$11.apply(IgniteUtils.java:977)
> at 
> org.apache.ignite.internal.util.IgniteUtils$11.apply(IgniteUtils.java:975)
> ... 17 more
>   Caused by: class 
> org.apache.ignite.internal.transactions.IgniteTxRollbackCheckedException: 
> Transaction has been rolled back: 
> 0ed43b47a71--0e1f-597b--0001
> at 
> org.apache.ignite.internal.processors.cache.GridCacheAdapter.syncOp(GridCacheAdapter.java:4429)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheAdapter.put0(GridCacheAdapter.java:2624)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:2602)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:2581)
> at 
> org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.put(IgniteCacheProxyImpl.java:1317)
> ... 14 more
>   Caused by: class org.apache.ignite.IgniteCheckedException: Failed to 
> perform cache operation (cache topology is not valid): part_cache
> at 
> org.apache.ignite.internal.processors.cache.transactions.IgniteTxImplicitSingleStateImpl.validateTopology(IgniteTxImplicitSingleStateImpl.java:141)
> at 
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareFuture.prepare(GridDhtTxPrepareFuture.java:1105)
> at 
> 

[jira] [Updated] (IGNITE-14579) Start rest manager

2021-07-15 Thread Kirill Gusakov (Jira)


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

Kirill Gusakov updated IGNITE-14579:

Remaining Estimate: 72h
 Original Estimate: 72h

> Start rest manager
> --
>
> Key: IGNITE-14579
> URL: https://issues.apache.org/jira/browse/IGNITE-14579
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Alexander Lapin
>Assignee: Kirill Gusakov
>Priority: Major
>  Labels: iep-73
>   Original Estimate: 72h
>  Remaining Estimate: 72h
>
> Update IgntionImpl with code that will start rest manager.



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


[jira] [Created] (IGNITE-15125) Implement naive baseline

2021-07-15 Thread Alexander Lapin (Jira)
Alexander Lapin created IGNITE-15125:


 Summary: Implement naive baseline
 Key: IGNITE-15125
 URL: https://issues.apache.org/jira/browse/IGNITE-15125
 Project: Ignite
  Issue Type: Bug
Reporter: Alexander Lapin
Assignee: Alexander Lapin


In order to satisfy the needs on assignments recalculation on topology changes 
it's required to implement baseline concept. It might be a naive one that will 
contain all topology nodes and will change on every node add/left event.



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


[jira] [Commented] (IGNITE-15122) Calcite. Remove sync mode of RootNode#closeInternal

2021-07-15 Thread Stanilovsky Evgeny (Jira)


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

Stanilovsky Evgeny commented on IGNITE-15122:
-

looks good.

> Calcite. Remove sync mode of RootNode#closeInternal
> ---
>
> Key: IGNITE-15122
> URL: https://issues.apache.org/jira/browse/IGNITE-15122
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Reporter: Konstantin Orlov
>Assignee: Konstantin Orlov
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currently we are waiting on future to complete inside RootNode#closeInternal. 
> It potentially could causes a query to stale in case someone will invoke this 
> method inside a taskExecutor.



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