[jira] [Updated] (IGNITE-12701) Disallow silent deactivation in CLI and REST.

2020-02-26 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12701:
--
Affects Version/s: (was: 2.9)
   2.7.6

> Disallow silent deactivation in CLI and REST.
> -
>
> Key: IGNITE-12701
> URL: https://issues.apache.org/jira/browse/IGNITE-12701
> Project: Ignite
>  Issue Type: Sub-task
>Affects Versions: 2.7.6
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> Disallow silent deactivation through the CLI and REST. 
> Skip JMX call 
> {code:java}
> void IgniteMXBean#active(boolean active)
> {code}



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


[jira] [Updated] (IGNITE-12701) Disallow silent deactivation in CLI and REST.

2020-02-26 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12701:
--
Fix Version/s: 2.9

> Disallow silent deactivation in CLI and REST.
> -
>
> Key: IGNITE-12701
> URL: https://issues.apache.org/jira/browse/IGNITE-12701
> Project: Ignite
>  Issue Type: Sub-task
>Affects Versions: 2.9
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> Disallow silent deactivation through the CLI and REST. 
> Skip JMX call 
> {code:java}
> void IgniteMXBean#active(boolean active)
> {code}



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


[jira] [Commented] (IGNITE-12464) Service metrics

2020-02-27 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin commented on IGNITE-12464:
---

[~agura], several service instances share same metrics. Metrics is raised with 
single or first instance of a service, removed with undeploying of last service 
instance.

> Service metrics
> ---
>
> Key: IGNITE-12464
> URL: https://issues.apache.org/jira/browse/IGNITE-12464
> Project: Ignite
>  Issue Type: Improvement
>Affects Versions: 2.7.6
>Reporter: Nikolay Izhikov
>Assignee: Vladimir Steshin
>Priority: Minor
>  Labels: IEP-35
>  Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> We should provide the following metrics for each deployed service:
> * -Count of executions- - this number seems useless, because, we can compute 
> it just by summing all histograms values.
> * Histogram of executions duration



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


[jira] [Comment Edited] (IGNITE-12701) Disallow silent deactivation in CLI and REST.

2020-02-27 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin edited comment on IGNITE-12701 at 2/27/20 12:31 PM:
-

Changes in public behavior:

1) Involved optional flag 'force' for control.sh (bat) with --deactivate and 
--set-sate:
control.sh --deactivate [--force]
control.sh --set-state INACTIVE[--force]

2) Involved optional parameter 'force=true|false' for REST cluster state 
requests:
http://127.0.0.1:8092/ignite?cmd=deactivate=true
http://127.0.0.1:8092/ignite?cmd=inactive=true
http://127.0.0.1:8092/ignite?cmd=setstate=INACTIVE=true

Major code changes:

1) Added GridClientClusterStateRequestV2.
2) Deprecated GridClientClusterStateRequest.
3) Added flag ‘force’ for REST in GridRestClusterStateRequest
4) Added flag ‘force’ CLI in DeactivateCommand, ClusterStateChangeCommand.
5) Added IgniteFeatures# FORCED_CHANGE_OF_CLUSTER_STATE.
6) Added checking of deactivation safety: GridClusterStateProcessor# 
isDeactivationSafe()
7) Involved o deactivation safety checking in GridClusterStateProcessing and 
GridClientClusterStateImpl.


was (Author: vladsz83):
Major changes:

# Added GridClientClusterStateRequestV2.
# Deprecated GridClientClusterStateRequest.
# Added flag ‘force’ for REST in GridRestClusterStateRequest
# Added flag ‘force’ CLI in DeactivateCommand, ClusterStateChangeCommand.
# Added IgniteFeatures# FORCED_CHANGE_OF_CLUSTER_STATE.
# Added checking of deactivation safety: GridClusterStateProcessor# 
isDeactivationSafe()

> Disallow silent deactivation in CLI and REST.
> -
>
> Key: IGNITE-12701
> URL: https://issues.apache.org/jira/browse/IGNITE-12701
> Project: Ignite
>  Issue Type: Sub-task
>Affects Versions: 2.7.6
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> Disallow silent deactivation through the CLI and REST. 
> Skip JMX call 
> {code:java}
> void IgniteMXBean#active(boolean active)
> {code}



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


[jira] [Comment Edited] (IGNITE-12464) Service metrics

2020-02-27 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin edited comment on IGNITE-12464 at 2/27/20 11:51 AM:
-

[~agura], several service instances share same metrics. Metrics are raised with 
single or first instance of a service, removed with undeploying of last service 
instance.


was (Author: vladsz83):
[~agura], several service instances share same metrics. Metrics is raised with 
single or first instance of a service, removed with undeploying of last service 
instance.

> Service metrics
> ---
>
> Key: IGNITE-12464
> URL: https://issues.apache.org/jira/browse/IGNITE-12464
> Project: Ignite
>  Issue Type: Improvement
>Affects Versions: 2.7.6
>Reporter: Nikolay Izhikov
>Assignee: Vladimir Steshin
>Priority: Minor
>  Labels: IEP-35
>  Time Spent: 1h 10m
>  Remaining Estimate: 0h
>
> We should provide the following metrics for each deployed service:
> * -Count of executions- - this number seems useless, because, we can compute 
> it just by summing all histograms values.
> * Histogram of executions duration



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


[jira] [Comment Edited] (IGNITE-12701) Disallow silent deactivation in CLI and REST.

2020-02-27 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin edited comment on IGNITE-12701 at 2/27/20 12:33 PM:
-

Changes in public behavior:

1) Involved optional flag 'force' for control.sh (bat) with --deactivate and 
--set-sate:
control.sh --deactivate --force
control.sh --set-state INACTIVE --force

2) Involved optional parameter 'force=true|false' for REST cluster state 
requests:
http://127.0.0.1:8092/ignite?cmd=deactivate=true
http://127.0.0.1:8092/ignite?cmd=inactive=true
http://127.0.0.1:8092/ignite?cmd=setstate=INACTIVE=true

Major code changes:

1) Added GridClientClusterStateRequestV2.
2) Deprecated GridClientClusterStateRequest.
3) Added flag ‘force’ for REST in GridRestClusterStateRequest
4) Added flag ‘force’ CLI in DeactivateCommand, ClusterStateChangeCommand.
5) Added IgniteFeatures# FORCED_CHANGE_OF_CLUSTER_STATE.
6) Added checking of deactivation safety: GridClusterStateProcessor# 
isDeactivationSafe()
7) Involved o deactivation safety checking in GridClusterStateProcessing and 
GridClientClusterStateImpl.


was (Author: vladsz83):
Changes in public behavior:

1) Involved optional flag 'force' for control.sh (bat) with --deactivate and 
--set-sate:
control.sh --deactivate [--force]
control.sh --set-state INACTIVE[--force]

2) Involved optional parameter 'force=true|false' for REST cluster state 
requests:
http://127.0.0.1:8092/ignite?cmd=deactivate=true
http://127.0.0.1:8092/ignite?cmd=inactive=true
http://127.0.0.1:8092/ignite?cmd=setstate=INACTIVE=true

Major code changes:

1) Added GridClientClusterStateRequestV2.
2) Deprecated GridClientClusterStateRequest.
3) Added flag ‘force’ for REST in GridRestClusterStateRequest
4) Added flag ‘force’ CLI in DeactivateCommand, ClusterStateChangeCommand.
5) Added IgniteFeatures# FORCED_CHANGE_OF_CLUSTER_STATE.
6) Added checking of deactivation safety: GridClusterStateProcessor# 
isDeactivationSafe()
7) Involved o deactivation safety checking in GridClusterStateProcessing and 
GridClientClusterStateImpl.

> Disallow silent deactivation in CLI and REST.
> -
>
> Key: IGNITE-12701
> URL: https://issues.apache.org/jira/browse/IGNITE-12701
> Project: Ignite
>  Issue Type: Sub-task
>Affects Versions: 2.7.6
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 1h 20m
>  Remaining Estimate: 0h
>
> Disallow silent deactivation through the CLI and REST. 
> Skip JMX call 
> {code:java}
> void IgniteMXBean#active(boolean active)
> {code}



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


[jira] [Assigned] (IGNITE-12581) [REFACTORING] Tests parametrization

2020-01-27 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin reassigned IGNITE-12581:
-

Assignee: Vladimir Steshin

> [REFACTORING] Tests parametrization
> ---
>
> Key: IGNITE-12581
> URL: https://issues.apache.org/jira/browse/IGNITE-12581
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Nikolay Izhikov
>Assignee: Vladimir Steshin
>Priority: Minor
>
> Right now many Ignite tests parametrization implemented via inheritance.
> For example:
> parent - JdbcThinBulkLoadAbstractSelfTest
> extensions - JdbcThinBulkLoadAtomicPartitionedNearSelfTest, 
> JdbcThinBulkLoadAtomicPartitionedSelfTest, 
> JdbcThinBulkLoadAtomicReplicatedSelfTest, 
> JdbcThinBulkLoadTransactionalPartitionedNearSelfTest, 
> JdbcThinBulkLoadTransactionalPartitionedSelfTest, 
> JdbcThinBulkLoadTransactionalReplicatedSelfTest.
>  
> Look like we can significantly reduce tests code base, therefore, improve 
> readability and maintainability without losing any test-cases if we use the 
> JUnit parameterized approach.
>  
> A contributor can use this ticket as an umbrella one and create a sub-ticket 
> for each refactored test-classes.



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


[jira] [Created] (IGNITE-12583) Parametrization of JdbcThinBulkLoadAbstractSelfTest

2020-01-27 Thread Vladimir Steshin (Jira)
Vladimir Steshin created IGNITE-12583:
-

 Summary: Parametrization of JdbcThinBulkLoadAbstractSelfTest
 Key: IGNITE-12583
 URL: https://issues.apache.org/jira/browse/IGNITE-12583
 Project: Ignite
  Issue Type: Sub-task
Reporter: Vladimir Steshin
Assignee: Vladimir Steshin


org.apache.ignite.jdbc.thin.JdbcThinBulkLoadAbstractSelfTest is extended 
several times using just parameter-assigning-getters like 

{code:java}
protected CacheMode cacheMode() { return CacheMode.REPLICATED; }
protected CacheAtomicityMode atomicityMode() { return 
CacheAtomicityMode.TRANSACTIONAL;}
protected boolean nearCache() { return false; }
{code}

Should go with params instead.
 



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


[jira] [Commented] (IGNITE-12595) Parametrization of GridCacheSetAbstractSelfTest

2020-01-29 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin commented on IGNITE-12595:
---

I think this test isn't applicable for parametrization. Found usages of 
different set of sub-classes in several test suits. Also, the subclasses are 
split and used within different packages.

> Parametrization of GridCacheSetAbstractSelfTest
> ---
>
> Key: IGNITE-12595
> URL: https://issues.apache.org/jira/browse/IGNITE-12595
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Trivial
>
> org.apache.ignite.internal.processors.cache.datastructures.GridCacheSetAbstractSelfTest
>  might be used with params. Not the best candidate due to usage/extending in 
> differect sub-packages. But is still able to reduce tests code base. 



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


[jira] [Created] (IGNITE-12606) Parametrize IgniteTxStoreExceptionAbstractSelfTest

2020-01-29 Thread Vladimir Steshin (Jira)
Vladimir Steshin created IGNITE-12606:
-

 Summary: Parametrize IgniteTxStoreExceptionAbstractSelfTest
 Key: IGNITE-12606
 URL: https://issues.apache.org/jira/browse/IGNITE-12606
 Project: Ignite
  Issue Type: Sub-task
Reporter: Vladimir Steshin
Assignee: Vladimir Steshin


IgniteTxStoreExceptionAbstractSelfTest seems to fit well the parametrization. 
It has only single depth of sub-tests which are used in one place together.



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


[jira] [Comment Edited] (IGNITE-12596) Parametrization of IgniteCacheAbstractExecutionContextTest

2020-01-29 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin edited comment on IGNITE-12596 at 1/29/20 3:16 PM:


I think this test isn't applicable for parametrization.

1) Found different usages of set of sublclasses in test suits:

[ IgniteCacheAtomicExecutionContextTest, 
IgniteCacheReplicatedExecutionContextTest ] in IgniteCacheMvccTestSuite1

and

[ IgniteCacheAtomicExecutionContextTest, 
IgniteCacheReplicatedExecutionContextTest, IgniteCacheTxExecutionContextTest ] 
in IgniteCacheTestSuite

2) Found additional inheritances of subclasses 
IgniteCacheAtomicExecutionContextTest. That means it cannot be deleted.


was (Author: vladsz83):
I think this test isn't applicable for parametrization.

* Found different usages of set of sublclasses in test suits:

[ IgniteCacheAtomicExecutionContextTest, 
IgniteCacheReplicatedExecutionContextTest ] in IgniteCacheMvccTestSuite1

and

[ IgniteCacheAtomicExecutionContextTest, 
IgniteCacheReplicatedExecutionContextTest, IgniteCacheTxExecutionContextTest ] 
in IgniteCacheTestSuite

* Found additional inheritances of subclasses 
IgniteCacheAtomicExecutionContextTest. That means it cannot be deleted.

> Parametrization of IgniteCacheAbstractExecutionContextTest
> --
>
> Key: IGNITE-12596
> URL: https://issues.apache.org/jira/browse/IGNITE-12596
> Project: Ignite
>  Issue Type: Sub-task
> Environment: 
> org.apache.ignite.internal.processors.cache.context.IgniteCacheAbstractExecutionContextTest
>  is activated 3 times with just various params via inheritance. The problem 
> is that the extending classes are included in the target test suits not 
> always with entire combinations of params. Sometimes only 2 extendins classes 
> are involved within tests, sometimes 3. I think of using subclasses of 
> IgniteCacheAbstractExecutionContextTest as set of params.
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Minor
>




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


[jira] [Comment Edited] (IGNITE-12596) Parametrization of IgniteCacheAbstractExecutionContextTest

2020-01-29 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin edited comment on IGNITE-12596 at 1/29/20 3:16 PM:


I think this test isn't applicable for parametrization.

* Found different usages of set of sublclasses in test suits:

[ IgniteCacheAtomicExecutionContextTest, 
IgniteCacheReplicatedExecutionContextTest ] in IgniteCacheMvccTestSuite1

and

[ IgniteCacheAtomicExecutionContextTest, 
IgniteCacheReplicatedExecutionContextTest, IgniteCacheTxExecutionContextTest ] 
in IgniteCacheTestSuite

* Found additional inheritances of subclasses 
IgniteCacheAtomicExecutionContextTest. That means it cannot be deleted.


was (Author: vladsz83):
I think this test isn't applicable for parametrization.

# Found different usages of set of sublclasses in test suits:

[ IgniteCacheAtomicExecutionContextTest, 
IgniteCacheReplicatedExecutionContextTest ] in IgniteCacheMvccTestSuite1

and

[ IgniteCacheAtomicExecutionContextTest, 
IgniteCacheReplicatedExecutionContextTest, IgniteCacheTxExecutionContextTest ] 
in IgniteCacheTestSuite

# Found additional inheritances of subclasses 
IgniteCacheAtomicExecutionContextTest. That means it cannot be deleted.

> Parametrization of IgniteCacheAbstractExecutionContextTest
> --
>
> Key: IGNITE-12596
> URL: https://issues.apache.org/jira/browse/IGNITE-12596
> Project: Ignite
>  Issue Type: Sub-task
> Environment: 
> org.apache.ignite.internal.processors.cache.context.IgniteCacheAbstractExecutionContextTest
>  is activated 3 times with just various params via inheritance. The problem 
> is that the extending classes are included in the target test suits not 
> always with entire combinations of params. Sometimes only 2 extendins classes 
> are involved within tests, sometimes 3. I think of using subclasses of 
> IgniteCacheAbstractExecutionContextTest as set of params.
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Minor
>




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


[jira] [Comment Edited] (IGNITE-12596) Parametrization of IgniteCacheAbstractExecutionContextTest

2020-01-29 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin edited comment on IGNITE-12596 at 1/29/20 3:15 PM:


I think this test isn't applicable for parametrization.

# Found different usages of set of sublclasses in test suits:

[ IgniteCacheAtomicExecutionContextTest, 
IgniteCacheReplicatedExecutionContextTest ] in IgniteCacheMvccTestSuite1

and

[ IgniteCacheAtomicExecutionContextTest, 
IgniteCacheReplicatedExecutionContextTest, IgniteCacheTxExecutionContextTest ] 
in IgniteCacheTestSuite

# Found additional inheritances of subclasses 
IgniteCacheAtomicExecutionContextTest. That means it cannot be deleted.


was (Author: vladsz83):
I think this test isn't applicable for parametrization.

* Found different usages of set of sublclasses in test suits:

[ IgniteCacheAtomicExecutionContextTest, 
IgniteCacheReplicatedExecutionContextTest ] in IgniteCacheMvccTestSuite1

and

[ IgniteCacheAtomicExecutionContextTest, 
IgniteCacheReplicatedExecutionContextTest, IgniteCacheTxExecutionContextTest ] 
in IgniteCacheTestSuite

# Found additional inheritances of subclasses 
IgniteCacheAtomicExecutionContextTest. That means it cannot be deleted.

> Parametrization of IgniteCacheAbstractExecutionContextTest
> --
>
> Key: IGNITE-12596
> URL: https://issues.apache.org/jira/browse/IGNITE-12596
> Project: Ignite
>  Issue Type: Sub-task
> Environment: 
> org.apache.ignite.internal.processors.cache.context.IgniteCacheAbstractExecutionContextTest
>  is activated 3 times with just various params via inheritance. The problem 
> is that the extending classes are included in the target test suits not 
> always with entire combinations of params. Sometimes only 2 extendins classes 
> are involved within tests, sometimes 3. I think of using subclasses of 
> IgniteCacheAbstractExecutionContextTest as set of params.
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Minor
>




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


[jira] [Commented] (IGNITE-12596) Parametrization of IgniteCacheAbstractExecutionContextTest

2020-01-29 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin commented on IGNITE-12596:
---

I think this test isn't applicable for parametrization.

* Found different usages of set of sublclasses in test suits:

[ IgniteCacheAtomicExecutionContextTest, 
IgniteCacheReplicatedExecutionContextTest ] in IgniteCacheMvccTestSuite1

and

[ IgniteCacheAtomicExecutionContextTest, 
IgniteCacheReplicatedExecutionContextTest, IgniteCacheTxExecutionContextTest ] 
in IgniteCacheTestSuite

# Found additional inheritances of subclasses 
IgniteCacheAtomicExecutionContextTest. That means it cannot be deleted.

> Parametrization of IgniteCacheAbstractExecutionContextTest
> --
>
> Key: IGNITE-12596
> URL: https://issues.apache.org/jira/browse/IGNITE-12596
> Project: Ignite
>  Issue Type: Sub-task
> Environment: 
> org.apache.ignite.internal.processors.cache.context.IgniteCacheAbstractExecutionContextTest
>  is activated 3 times with just various params via inheritance. The problem 
> is that the extending classes are included in the target test suits not 
> always with entire combinations of params. Sometimes only 2 extendins classes 
> are involved within tests, sometimes 3. I think of using subclasses of 
> IgniteCacheAbstractExecutionContextTest as set of params.
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Minor
>




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


[jira] [Commented] (IGNITE-12583) Parametrization of JdbcThinBulkLoadAbstractSelfTest

2020-01-29 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin commented on IGNITE-12583:
---

[~Pavlukhin], thanks. Sure, going to add the param names in the following 
refactorings.

> Parametrization of JdbcThinBulkLoadAbstractSelfTest
> ---
>
> Key: IGNITE-12583
> URL: https://issues.apache.org/jira/browse/IGNITE-12583
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Minor
>  Time Spent: 3h 40m
>  Remaining Estimate: 0h
>
> org.apache.ignite.jdbc.thin.JdbcThinBulkLoadAbstractSelfTest is extended 
> several times using just parameter-assigning-getters like 
> {code:java}
> protected CacheMode cacheMode() { return CacheMode.REPLICATED; }
> protected CacheAtomicityMode atomicityMode() { return 
> CacheAtomicityMode.TRANSACTIONAL;}
> protected boolean nearCache() { return false; }
> {code}
> Should go with params instead.
>  



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


[jira] [Commented] (IGNITE-12581) [REFACTORING] Tests parametrization

2020-01-29 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin commented on IGNITE-12581:
---

Suggested test to revise for parametrize possibility are:

# CacheContinuousQueryCounterAbstractTest
# GridCacheAbstractLocalStoreSelfTest
# IgniteCacheNodeJoinAbstractTest
# GridAbstractCacheInterceptorRebalanceTest
# GridCacheOnCopyFlagAbstractSelfTest
# IgniteCacheCopyOnReadDisabledAbstractTest
# GridCacheInterceptorAbstractSelfTest
# CacheGetsDistributionAbstractTest
# CacheStoreSessionListenerReadWriteThroughDisabledAbstractTest
# IgniteTxStoreExceptionAbstractSelfTest
# GridCacheSetAbstractSelfTest
# IgniteCacheAbstractExecutionContextTest
# GridCacheAbstractUsersAffinityMapperSelfTest
# IgniteCacheExpiryPolicyWithStoreAbstractTest
# CacheVersionedEntryAbstractTest
# GridCacheEvictionEventAbstractTest
# GridCacheAbstractIteratorsSelfTest
# CacheStoreUsageMultinodeDynamicStartAbstractTest
# GridCacheAbstractFailoverTxSelfTest
# CacheStoreUsageMultinodeStaticStartAbstractTest
# IgniteCachePeekModesAbstractTest

> [REFACTORING] Tests parametrization
> ---
>
> Key: IGNITE-12581
> URL: https://issues.apache.org/jira/browse/IGNITE-12581
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Nikolay Izhikov
>Assignee: Vladimir Steshin
>Priority: Minor
>
> Right now many Ignite tests parametrization implemented via inheritance.
> For example:
> parent - JdbcThinBulkLoadAbstractSelfTest
> extensions - JdbcThinBulkLoadAtomicPartitionedNearSelfTest, 
> JdbcThinBulkLoadAtomicPartitionedSelfTest, 
> JdbcThinBulkLoadAtomicReplicatedSelfTest, 
> JdbcThinBulkLoadTransactionalPartitionedNearSelfTest, 
> JdbcThinBulkLoadTransactionalPartitionedSelfTest, 
> JdbcThinBulkLoadTransactionalReplicatedSelfTest.
>  
> Look like we can significantly reduce tests code base, therefore, improve 
> readability and maintainability without losing any test-cases if we use the 
> JUnit parameterized approach.
>  
> A contributor can use this ticket as an umbrella one and create a sub-ticket 
> for each refactored test-classes.



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


[jira] [Commented] (IGNITE-12606) Parametrize IgniteTxStoreExceptionAbstractSelfTest

2020-01-29 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin commented on IGNITE-12606:
---

Clone of IGNITE-12597

> Parametrize IgniteTxStoreExceptionAbstractSelfTest
> --
>
> Key: IGNITE-12606
> URL: https://issues.apache.org/jira/browse/IGNITE-12606
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Minor
>
> IgniteTxStoreExceptionAbstractSelfTest seems to fit well the parametrization. 
> It has only single depth of sub-tests which are used in one place together.



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


[jira] [Resolved] (IGNITE-12606) Parametrize IgniteTxStoreExceptionAbstractSelfTest

2020-01-29 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin resolved IGNITE-12606.
---
Resolution: Duplicate

> Parametrize IgniteTxStoreExceptionAbstractSelfTest
> --
>
> Key: IGNITE-12606
> URL: https://issues.apache.org/jira/browse/IGNITE-12606
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Minor
>
> IgniteTxStoreExceptionAbstractSelfTest seems to fit well the parametrization. 
> It has only single depth of sub-tests which are used in one place together.



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


[jira] [Closed] (IGNITE-12606) Parametrize IgniteTxStoreExceptionAbstractSelfTest

2020-01-29 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin closed IGNITE-12606.
-
Ignite Flags:   (was: Docs Required,Release Notes Required)

> Parametrize IgniteTxStoreExceptionAbstractSelfTest
> --
>
> Key: IGNITE-12606
> URL: https://issues.apache.org/jira/browse/IGNITE-12606
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Minor
>
> IgniteTxStoreExceptionAbstractSelfTest seems to fit well the parametrization. 
> It has only single depth of sub-tests which are used in one place together.



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


[jira] [Assigned] (IGNITE-12595) Parametrization of GridCacheSetAbstractSelfTest

2020-01-31 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin reassigned IGNITE-12595:
-

Assignee: (was: Vladimir Steshin)

> Parametrization of GridCacheSetAbstractSelfTest
> ---
>
> Key: IGNITE-12595
> URL: https://issues.apache.org/jira/browse/IGNITE-12595
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Priority: Trivial
>
> org.apache.ignite.internal.processors.cache.datastructures.GridCacheSetAbstractSelfTest
>  might be used with params. Not the best candidate due to usage/extending in 
> differect sub-packages. But is still able to reduce tests code base. 



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


[jira] [Commented] (IGNITE-12581) [REFACTORING] Tests parametrization

2020-01-31 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin commented on IGNITE-12581:
---

Attached file with list (smalltests.txt) of the small tests which can be 
reviewed for parameterization refactoring.

> [REFACTORING] Tests parametrization
> ---
>
> Key: IGNITE-12581
> URL: https://issues.apache.org/jira/browse/IGNITE-12581
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Nikolay Izhikov
>Assignee: Vladimir Steshin
>Priority: Minor
> Attachments: smalltests.txt
>
>
> Right now many Ignite tests parametrization implemented via inheritance.
> For example:
> parent - JdbcThinBulkLoadAbstractSelfTest
> extensions - JdbcThinBulkLoadAtomicPartitionedNearSelfTest, 
> JdbcThinBulkLoadAtomicPartitionedSelfTest, 
> JdbcThinBulkLoadAtomicReplicatedSelfTest, 
> JdbcThinBulkLoadTransactionalPartitionedNearSelfTest, 
> JdbcThinBulkLoadTransactionalPartitionedSelfTest, 
> JdbcThinBulkLoadTransactionalReplicatedSelfTest.
>  
> Look like we can significantly reduce tests code base, therefore, improve 
> readability and maintainability without losing any test-cases if we use the 
> JUnit parameterized approach.
>  
> A contributor can use this ticket as an umbrella one and create a sub-ticket 
> for each refactored test-classes.



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


[jira] [Assigned] (IGNITE-12597) IgniteTxStoreExceptionAbstractSelfTest

2020-01-31 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin reassigned IGNITE-12597:
-

Assignee: (was: Vladimir Steshin)

> IgniteTxStoreExceptionAbstractSelfTest
> --
>
> Key: IGNITE-12597
> URL: https://issues.apache.org/jira/browse/IGNITE-12597
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> org.apache.ignite.internal.processors.cache.GridCacheColocatedTxStoreExceptionSelfTest
>  might be parametrized. Extending classes wear only params and are executed 
> in a row



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


[jira] [Assigned] (IGNITE-12596) Parametrization of IgniteCacheAbstractExecutionContextTest

2020-01-31 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin reassigned IGNITE-12596:
-

Assignee: (was: Vladimir Steshin)

> Parametrization of IgniteCacheAbstractExecutionContextTest
> --
>
> Key: IGNITE-12596
> URL: https://issues.apache.org/jira/browse/IGNITE-12596
> Project: Ignite
>  Issue Type: Sub-task
> Environment: 
> org.apache.ignite.internal.processors.cache.context.IgniteCacheAbstractExecutionContextTest
>  is activated 3 times with just various params via inheritance. The problem 
> is that the extending classes are included in the target test suits not 
> always with entire combinations of params. Sometimes only 2 extendins classes 
> are involved within tests, sometimes 3. I think of using subclasses of 
> IgniteCacheAbstractExecutionContextTest as set of params.
>Reporter: Vladimir Steshin
>Priority: Minor
>




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


[jira] [Updated] (IGNITE-12614) Disallow silent deactivation of cluster to prevent in-mem data loss.

2020-01-31 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12614:
--
Description: 
Currently, anyone is able to deactivate cluster with command line utility 
(control.sh). Probably with JMX too. That would lead to data loss when the 
persistence is off. In-memory data is erased during deactivation. Such behavior 
can be considered as unexpected to user. 

Suggestions:

1)  Disallow silent deactivation of cluster keeping caches. Show a warning 
like “Your cluster has in-memory cache configured. During deactivation all data 
from these caches will be cleared!”

2)  Add param ‘--force’ which skips the warning message.

  was:
Currently, anyone is able to deactivate cluster with command line utility 
(control.sh). Probably with JMX too. That would lead to data loss when the 
persistence is off. In-memory data is erased during deactivation. Such behavior 
can be considered as unexpected to user. 

Suggestions:

1)  Disallow silent deactivate cluster keeping caches. Show a warning like 
“Your cluster has in-memory cache configured. During deactivation all data from 
these caches will be cleared!”

2)  Add param ‘--force’ which skips the warning message.


> Disallow silent deactivation of cluster to prevent in-mem data loss.
> 
>
> Key: IGNITE-12614
> URL: https://issues.apache.org/jira/browse/IGNITE-12614
> Project: Ignite
>  Issue Type: Bug
>Reporter: Vladimir Steshin
>Priority: Major
>
> Currently, anyone is able to deactivate cluster with command line utility 
> (control.sh). Probably with JMX too. That would lead to data loss when the 
> persistence is off. In-memory data is erased during deactivation. Such 
> behavior can be considered as unexpected to user. 
> Suggestions:
> 1)Disallow silent deactivation of cluster keeping caches. Show a warning 
> like “Your cluster has in-memory cache configured. During deactivation all 
> data from these caches will be cleared!”
> 2)Add param ‘--force’ which skips the warning message.



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


[jira] [Assigned] (IGNITE-12614) Disallow silent deactivation of cluster to prevent in-mem data loss.

2020-01-31 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin reassigned IGNITE-12614:
-

Assignee: Vladimir Steshin

> Disallow silent deactivation of cluster to prevent in-mem data loss.
> 
>
> Key: IGNITE-12614
> URL: https://issues.apache.org/jira/browse/IGNITE-12614
> Project: Ignite
>  Issue Type: Bug
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>
> Currently, anyone is able to deactivate cluster with command line utility 
> (control.sh). Probably with JMX too. That would lead to data loss when the 
> persistence is off. In-memory data is erased during deactivation. Such 
> behavior can be considered as unexpected to user. 
> Suggestions:
> 1)Disallow silent deactivation of cluster keeping caches. Show a warning 
> like “Your cluster has in-memory cache configured. During deactivation all 
> data from these caches will be cleared!”
> 2)Add param ‘--force’ which skips the warning message.



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


[jira] [Assigned] (IGNITE-12597) IgniteTxStoreExceptionAbstractSelfTest

2020-01-31 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin reassigned IGNITE-12597:
-

Assignee: (was: Vladimir Steshin)

> IgniteTxStoreExceptionAbstractSelfTest
> --
>
> Key: IGNITE-12597
> URL: https://issues.apache.org/jira/browse/IGNITE-12597
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> org.apache.ignite.internal.processors.cache.GridCacheColocatedTxStoreExceptionSelfTest
>  might be parametrized. Extending classes wear only params and are executed 
> in a row



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


[jira] [Assigned] (IGNITE-12597) IgniteTxStoreExceptionAbstractSelfTest

2020-01-31 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin reassigned IGNITE-12597:
-

Assignee: Vladimir Steshin

> IgniteTxStoreExceptionAbstractSelfTest
> --
>
> Key: IGNITE-12597
> URL: https://issues.apache.org/jira/browse/IGNITE-12597
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> org.apache.ignite.internal.processors.cache.GridCacheColocatedTxStoreExceptionSelfTest
>  might be parametrized. Extending classes wear only params and are executed 
> in a row



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


[jira] [Assigned] (IGNITE-12581) [REFACTORING] Tests parametrization

2020-01-31 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin reassigned IGNITE-12581:
-

Assignee: (was: Vladimir Steshin)

> [REFACTORING] Tests parametrization
> ---
>
> Key: IGNITE-12581
> URL: https://issues.apache.org/jira/browse/IGNITE-12581
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Nikolay Izhikov
>Priority: Minor
> Attachments: smalltests.txt
>
>
> Right now many Ignite tests parametrization implemented via inheritance.
> For example:
> parent - JdbcThinBulkLoadAbstractSelfTest
> extensions - JdbcThinBulkLoadAtomicPartitionedNearSelfTest, 
> JdbcThinBulkLoadAtomicPartitionedSelfTest, 
> JdbcThinBulkLoadAtomicReplicatedSelfTest, 
> JdbcThinBulkLoadTransactionalPartitionedNearSelfTest, 
> JdbcThinBulkLoadTransactionalPartitionedSelfTest, 
> JdbcThinBulkLoadTransactionalReplicatedSelfTest.
>  
> Look like we can significantly reduce tests code base, therefore, improve 
> readability and maintainability without losing any test-cases if we use the 
> JUnit parameterized approach.
>  
> A contributor can use this ticket as an umbrella one and create a sub-ticket 
> for each refactored test-classes.



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


[jira] [Updated] (IGNITE-12581) [REFACTORING] Tests parametrization

2020-01-31 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12581:
--
Attachment: smalltests.txt

> [REFACTORING] Tests parametrization
> ---
>
> Key: IGNITE-12581
> URL: https://issues.apache.org/jira/browse/IGNITE-12581
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Nikolay Izhikov
>Assignee: Vladimir Steshin
>Priority: Minor
> Attachments: smalltests.txt
>
>
> Right now many Ignite tests parametrization implemented via inheritance.
> For example:
> parent - JdbcThinBulkLoadAbstractSelfTest
> extensions - JdbcThinBulkLoadAtomicPartitionedNearSelfTest, 
> JdbcThinBulkLoadAtomicPartitionedSelfTest, 
> JdbcThinBulkLoadAtomicReplicatedSelfTest, 
> JdbcThinBulkLoadTransactionalPartitionedNearSelfTest, 
> JdbcThinBulkLoadTransactionalPartitionedSelfTest, 
> JdbcThinBulkLoadTransactionalReplicatedSelfTest.
>  
> Look like we can significantly reduce tests code base, therefore, improve 
> readability and maintainability without losing any test-cases if we use the 
> JUnit parameterized approach.
>  
> A contributor can use this ticket as an umbrella one and create a sub-ticket 
> for each refactored test-classes.



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


[jira] [Created] (IGNITE-12614) Disallow silent deactivation of cluster to prevent in-mem data loss.

2020-01-31 Thread Vladimir Steshin (Jira)
Vladimir Steshin created IGNITE-12614:
-

 Summary: Disallow silent deactivation of cluster to prevent in-mem 
data loss.
 Key: IGNITE-12614
 URL: https://issues.apache.org/jira/browse/IGNITE-12614
 Project: Ignite
  Issue Type: Bug
Reporter: Vladimir Steshin


Currently, anyone is able to deactivate cluster with command line utility 
(control.sh). Probably with JMX too. That would lead to data loss when the 
persistence is off. In-memory data is erased during deactivation. Such behavior 
can be considered as unexpected to user. 

Suggestions:

1)  Disallow silent deactivate cluster keeping caches. Show a warning like 
“Your cluster has in-memory cache configured. During deactivation all data from 
these caches will be cleared!”

2)  Add param ‘--force’ which skips the warning message.



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


[jira] [Assigned] (IGNITE-12597) IgniteTxStoreExceptionAbstractSelfTest

2020-02-03 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin reassigned IGNITE-12597:
-

Assignee: (was: Vladimir Steshin)

> IgniteTxStoreExceptionAbstractSelfTest
> --
>
> Key: IGNITE-12597
> URL: https://issues.apache.org/jira/browse/IGNITE-12597
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> org.apache.ignite.internal.processors.cache.GridCacheColocatedTxStoreExceptionSelfTest
>  might be parametrized. Extending classes wear only params and are executed 
> in a row



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


[jira] [Assigned] (IGNITE-12597) IgniteTxStoreExceptionAbstractSelfTest

2020-02-03 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin reassigned IGNITE-12597:
-

Assignee: Vladimir Steshin

> IgniteTxStoreExceptionAbstractSelfTest
> --
>
> Key: IGNITE-12597
> URL: https://issues.apache.org/jira/browse/IGNITE-12597
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> org.apache.ignite.internal.processors.cache.GridCacheColocatedTxStoreExceptionSelfTest
>  might be parametrized. Extending classes wear only params and are executed 
> in a row



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


[jira] [Created] (IGNITE-12595) Parametrization of GridCacheSetAbstractSelfTest

2020-01-28 Thread Vladimir Steshin (Jira)
Vladimir Steshin created IGNITE-12595:
-

 Summary: Parametrization of GridCacheSetAbstractSelfTest
 Key: IGNITE-12595
 URL: https://issues.apache.org/jira/browse/IGNITE-12595
 Project: Ignite
  Issue Type: Sub-task
Reporter: Vladimir Steshin
Assignee: Vladimir Steshin


org.apache.ignite.internal.processors.cache.datastructures.GridCacheSetAbstractSelfTest
 might be used with params. Not the best candidate, but is still able to reduce 
tests code base.



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


[jira] [Updated] (IGNITE-12595) Parametrization of GridCacheSetAbstractSelfTest

2020-01-28 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12595:
--
Description: 
org.apache.ignite.internal.processors.cache.datastructures.GridCacheSetAbstractSelfTest
 might be used with params. Not the best candidate due to usage/extending in 
differect sub-packages. But is still able to reduce tests code base.   (was: 
org.apache.ignite.internal.processors.cache.datastructures.GridCacheSetAbstractSelfTest
 might be used with params. Not the best candidate, but is still able to reduce 
tests code base.)

> Parametrization of GridCacheSetAbstractSelfTest
> ---
>
> Key: IGNITE-12595
> URL: https://issues.apache.org/jira/browse/IGNITE-12595
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Trivial
>
> org.apache.ignite.internal.processors.cache.datastructures.GridCacheSetAbstractSelfTest
>  might be used with params. Not the best candidate due to usage/extending in 
> differect sub-packages. But is still able to reduce tests code base. 



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


[jira] [Created] (IGNITE-12596) Parametrization of IgniteCacheAbstractExecutionContextTest

2020-01-28 Thread Vladimir Steshin (Jira)
Vladimir Steshin created IGNITE-12596:
-

 Summary: Parametrization of IgniteCacheAbstractExecutionContextTest
 Key: IGNITE-12596
 URL: https://issues.apache.org/jira/browse/IGNITE-12596
 Project: Ignite
  Issue Type: Sub-task
 Environment: 
org.apache.ignite.internal.processors.cache.context.IgniteCacheAbstractExecutionContextTest
 is activated 3 times with just various params via inheritance. The problem is 
that the extending classes are included in the target test suits not always 
with entire combinations of params. Sometimes only 2 extendins classes are 
involved within tests, sometimes 3. I think of using subclasses of 
IgniteCacheAbstractExecutionContextTest as set of params.
Reporter: Vladimir Steshin
Assignee: Vladimir Steshin






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


[jira] [Created] (IGNITE-12597) IgniteTxStoreExceptionAbstractSelfTest

2020-01-28 Thread Vladimir Steshin (Jira)
Vladimir Steshin created IGNITE-12597:
-

 Summary: IgniteTxStoreExceptionAbstractSelfTest
 Key: IGNITE-12597
 URL: https://issues.apache.org/jira/browse/IGNITE-12597
 Project: Ignite
  Issue Type: Sub-task
Reporter: Vladimir Steshin
Assignee: Vladimir Steshin


org.apache.ignite.internal.processors.cache.GridCacheColocatedTxStoreExceptionSelfTest
 might be parametrized. Extending classes wear only params and are executed in 
a row



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


[jira] [Assigned] (IGNITE-12464) Service metrics

2020-02-05 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin reassigned IGNITE-12464:
-

Assignee: Vladimir Steshin

> Service metrics
> ---
>
> Key: IGNITE-12464
> URL: https://issues.apache.org/jira/browse/IGNITE-12464
> Project: Ignite
>  Issue Type: Improvement
>Affects Versions: 2.7.6
>Reporter: Nikolay Izhikov
>Assignee: Vladimir Steshin
>Priority: Minor
>  Labels: IEP-35
>
> We should provide the following metrics for each deployed service:
> * -Count of executions- - this number seems useless, because, we can compute 
> it just by summing all histograms values.
> * Histogram of executions duration



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


[jira] [Created] (IGNITE-12704) Fail of recognition of default scheme in SQL queries.

2020-02-19 Thread Vladimir Steshin (Jira)
Vladimir Steshin created IGNITE-12704:
-

 Summary: Fail of recognition of default scheme in SQL queries.
 Key: IGNITE-12704
 URL: https://issues.apache.org/jira/browse/IGNITE-12704
 Project: Ignite
  Issue Type: Bug
Reporter: Vladimir Steshin


Got a connectionConnection conn = ...;

// execute() - is just a helper function. Creates prepared statement, pass 
params...

// Get all the tables.
List> lst = execute(conn, "select SCHEMA_NAME, TABLE_NAME from
SYS.TABLES");

for( List row : lst ){
String schemaName = (String)row.get(0);
String tableName = (String)row.get(1);

// Shows: "schema: default, table: PERSON"
System.out.println("schema: " +  schemName + ", table: " +
tableName));

// Fails with with: java.sql.SQLException: Failed to parse query.
Схема "DEFAULT" не найдена
execute( conn, "drop table "+schemaName + "."+tableName+"'" );
}

I think this case should fail with error like "only cache created tables
can be removed with drop table. ", not with "scheme not found."
SQL-engine is supposed to accept and understand values it returns itself.



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


[jira] [Updated] (IGNITE-12704) Fail of recognition of default scheme in SQL queries.

2020-02-19 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12704:
--
Description: 


{code:java}
// Got a connection
Connection conn = ...;

// Get all the tables. execute() - is just a helper function. Creates prepared 
statement, pass params...
List> lst = execute(conn, "select SCHEMA_NAME, TABLE_NAME from 
SYS.TABLES");

for( List row : lst ){
String schemaName = (String)row.get(0);
String tableName = (String)row.get(1);

// Shows: "schema: default, table: PERSON"
System.out.println("schema: " +  schemName + ", table: " + tableName));

// Fails with with: java.sql.SQLException: Failed to parse query. Схема 
"DEFAULT" не найдена
execute( conn, "drop table "+schemaName + "."+tableName+"'" );
}


I think this case should fail with error like "only cache created tables
can be removed with drop table. ", not with "scheme not found."
SQL-engine is supposed to accept and understand values it returns itself.

  was:
Got a connectionConnection conn = ...;

// execute() - is just a helper function. Creates prepared statement, pass 
params...

// Get all the tables.
List> lst = execute(conn, "select SCHEMA_NAME, TABLE_NAME from
SYS.TABLES");

for( List row : lst ){
String schemaName = (String)row.get(0);
String tableName = (String)row.get(1);

// Shows: "schema: default, table: PERSON"
System.out.println("schema: " +  schemName + ", table: " +
tableName));

// Fails with with: java.sql.SQLException: Failed to parse query.
Схема "DEFAULT" не найдена
execute( conn, "drop table "+schemaName + "."+tableName+"'" );
}

I think this case should fail with error like "only cache created tables
can be removed with drop table. ", not with "scheme not found."
SQL-engine is supposed to accept and understand values it returns itself.


> Fail of recognition of default scheme in SQL queries.
> -
>
> Key: IGNITE-12704
> URL: https://issues.apache.org/jira/browse/IGNITE-12704
> Project: Ignite
>  Issue Type: Bug
>Reporter: Vladimir Steshin
>Priority: Minor
>
> {code:java}
> // Got a connection
> Connection conn = ...;
> // Get all the tables. execute() - is just a helper function. Creates 
> prepared statement, pass params...
> List> lst = execute(conn, "select SCHEMA_NAME, TABLE_NAME from 
> SYS.TABLES");
> for( List row : lst ){
> String schemaName = (String)row.get(0);
> String tableName = (String)row.get(1);
> // Shows: "schema: default, table: PERSON"
> System.out.println("schema: " +  schemName + ", table: " + 
> tableName));
> // Fails with with: java.sql.SQLException: Failed to parse query. 
> Схема "DEFAULT" не найдена
> execute( conn, "drop table "+schemaName + "."+tableName+"'" );
> }
> 
> I think this case should fail with error like "only cache created tables
> can be removed with drop table. ", not with "scheme not found."
> SQL-engine is supposed to accept and understand values it returns itself.



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


[jira] [Updated] (IGNITE-12704) Fail of recognition of default scheme in SQL queries.

2020-02-19 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12704:
--
Description: 
{code:java}
// Got a connection
Connection conn = ...;

// Get all the tables. execute() - is just a helper function. Creates prepared 
statement, pass params...
List> lst = execute(conn, "select SCHEMA_NAME, TABLE_NAME from 
SYS.TABLES");

for( List row : lst ){
String schemaName = (String)row.get(0);
String tableName = (String)row.get(1);

// Shows: "schema: default, table: PERSON"
System.out.println("schema: " +  schemName + ", table: " + tableName));

// Fails with with: java.sql.SQLException: Failed to parse query. Схема 
"DEFAULT" не найдена
execute( conn, "drop table "+schemaName + "."+tableName+"'" );
}
{code}

I think this case should fail with error like "only cache created tables
can be removed with drop table. ", not with "scheme not found."
SQL-engine is supposed to accept and understand values it returns itself.

  was:


{code:java}
// Got a connection
Connection conn = ...;

// Get all the tables. execute() - is just a helper function. Creates prepared 
statement, pass params...
List> lst = execute(conn, "select SCHEMA_NAME, TABLE_NAME from 
SYS.TABLES");

for( List row : lst ){
String schemaName = (String)row.get(0);
String tableName = (String)row.get(1);

// Shows: "schema: default, table: PERSON"
System.out.println("schema: " +  schemName + ", table: " + tableName));

// Fails with with: java.sql.SQLException: Failed to parse query. Схема 
"DEFAULT" не найдена
execute( conn, "drop table "+schemaName + "."+tableName+"'" );
}


I think this case should fail with error like "only cache created tables
can be removed with drop table. ", not with "scheme not found."
SQL-engine is supposed to accept and understand values it returns itself.


> Fail of recognition of default scheme in SQL queries.
> -
>
> Key: IGNITE-12704
> URL: https://issues.apache.org/jira/browse/IGNITE-12704
> Project: Ignite
>  Issue Type: Bug
>Reporter: Vladimir Steshin
>Priority: Minor
>
> {code:java}
> // Got a connection
> Connection conn = ...;
> // Get all the tables. execute() - is just a helper function. Creates 
> prepared statement, pass params...
> List> lst = execute(conn, "select SCHEMA_NAME, TABLE_NAME from 
> SYS.TABLES");
> for( List row : lst ){
> String schemaName = (String)row.get(0);
> String tableName = (String)row.get(1);
> // Shows: "schema: default, table: PERSON"
> System.out.println("schema: " +  schemName + ", table: " + 
> tableName));
> // Fails with with: java.sql.SQLException: Failed to parse query. 
> Схема "DEFAULT" не найдена
> execute( conn, "drop table "+schemaName + "."+tableName+"'" );
> }
> {code}
> I think this case should fail with error like "only cache created tables
> can be removed with drop table. ", not with "scheme not found."
> SQL-engine is supposed to accept and understand values it returns itself.



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


[jira] [Updated] (IGNITE-12704) Fail of recognition of default scheme in SQL queries.

2020-02-19 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12704:
--
Description: 
{code:java}
// Got a connection
Connection conn = ...;

// Get all the tables. execute() - is just a helper function. Creates prepared 
statement, pass params...
List> lst = execute(conn, "select SCHEMA_NAME, TABLE_NAME from 
SYS.TABLES");

for( List row : lst ){
   String schemaName = (String)row.get(0);

   String tableName = (String)row.get(1);

// Shows: "schema: default, table: PERSON"
System.out.println("schema: " +  schemName + ", table: " + tableName));

// Fails with with: java.sql.SQLException: Failed to parse query. Схема 
"DEFAULT" не найдена
execute( conn, "drop table "+schemaName + "."+tableName+"'" );
}
{code}

I think this case should fail with error like "only cache created tables
can be removed with drop table. ", not with "scheme not found."
SQL-engine is supposed to accept and understand values it returns itself.

  was:
{code:java}
// Got a connection
Connection conn = ...;

// Get all the tables. execute() - is just a helper function. Creates prepared 
statement, pass params...
List> lst = execute(conn, "select SCHEMA_NAME, TABLE_NAME from 
SYS.TABLES");

for( List row : lst ){
String schemaName = (String)row.get(0);
String tableName = (String)row.get(1);

// Shows: "schema: default, table: PERSON"
System.out.println("schema: " +  schemName + ", table: " + tableName));

// Fails with with: java.sql.SQLException: Failed to parse query. Схема 
"DEFAULT" не найдена
execute( conn, "drop table "+schemaName + "."+tableName+"'" );
}
{code}

I think this case should fail with error like "only cache created tables
can be removed with drop table. ", not with "scheme not found."
SQL-engine is supposed to accept and understand values it returns itself.


> Fail of recognition of default scheme in SQL queries.
> -
>
> Key: IGNITE-12704
> URL: https://issues.apache.org/jira/browse/IGNITE-12704
> Project: Ignite
>  Issue Type: Bug
>Reporter: Vladimir Steshin
>Priority: Minor
>
> {code:java}
> // Got a connection
> Connection conn = ...;
> // Get all the tables. execute() - is just a helper function. Creates 
> prepared statement, pass params...
> List> lst = execute(conn, "select SCHEMA_NAME, TABLE_NAME from 
> SYS.TABLES");
> for( List row : lst ){
>String schemaName = (String)row.get(0);
>String tableName = (String)row.get(1);
> // Shows: "schema: default, table: PERSON"
> System.out.println("schema: " +  schemName + ", table: " + tableName));
> // Fails with with: java.sql.SQLException: Failed to parse query. Схема 
> "DEFAULT" не найдена
> execute( conn, "drop table "+schemaName + "."+tableName+"'" );
> }
> {code}
> I think this case should fail with error like "only cache created tables
> can be removed with drop table. ", not with "scheme not found."
> SQL-engine is supposed to accept and understand values it returns itself.



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


[jira] [Updated] (IGNITE-12704) Fail of recognition of default scheme in SQL queries.

2020-02-19 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12704:
--
Description: 
{code:java}
// Got a connection
Connection conn = ...;

// Get all the tables. execute() - is just a helper function. Creates prepared 
statement, pass params...
List> lst = execute(conn, "select SCHEMA_NAME, TABLE_NAME from 
SYS.TABLES");

for( List row : lst ){
   String schemaName = (String)row.get(0);

   String tableName = (String)row.get(1);

// Shows: "schema: default, table: PERSON"
System.out.println("schema: " +  schemName + ", table: " + tableName));

// Fails with with: java.sql.SQLException: Failed to parse query. Схема 
"DEFAULT" не найдена
execute( conn, "drop table "+schemaName + "."+tableName+"'" );
}
{code}

I think this case should fail with error like "only cache created tables can be 
removed with drop table. ", 

Not with "scheme not found."

SQL-engine is supposed to accept and understand values it returns itself.

  was:
{code:java}
// Got a connection
Connection conn = ...;

// Get all the tables. execute() - is just a helper function. Creates prepared 
statement, pass params...
List> lst = execute(conn, "select SCHEMA_NAME, TABLE_NAME from 
SYS.TABLES");

for( List row : lst ){
   String schemaName = (String)row.get(0);

   String tableName = (String)row.get(1);

// Shows: "schema: default, table: PERSON"
System.out.println("schema: " +  schemName + ", table: " + tableName));

// Fails with with: java.sql.SQLException: Failed to parse query. Схема 
"DEFAULT" не найдена
execute( conn, "drop table "+schemaName + "."+tableName+"'" );
}
{code}

I think this case should fail with error like "only cache created tables
can be removed with drop table. ", not with "scheme not found."
SQL-engine is supposed to accept and understand values it returns itself.


> Fail of recognition of default scheme in SQL queries.
> -
>
> Key: IGNITE-12704
> URL: https://issues.apache.org/jira/browse/IGNITE-12704
> Project: Ignite
>  Issue Type: Bug
>Reporter: Vladimir Steshin
>Priority: Minor
>
> {code:java}
> // Got a connection
> Connection conn = ...;
> // Get all the tables. execute() - is just a helper function. Creates 
> prepared statement, pass params...
> List> lst = execute(conn, "select SCHEMA_NAME, TABLE_NAME from 
> SYS.TABLES");
> for( List row : lst ){
>String schemaName = (String)row.get(0);
>String tableName = (String)row.get(1);
> // Shows: "schema: default, table: PERSON"
> System.out.println("schema: " +  schemName + ", table: " + tableName));
> // Fails with with: java.sql.SQLException: Failed to parse query. Схема 
> "DEFAULT" не найдена
> execute( conn, "drop table "+schemaName + "."+tableName+"'" );
> }
> {code}
> I think this case should fail with error like "only cache created tables can 
> be removed with drop table. ", 
> Not with "scheme not found."
> SQL-engine is supposed to accept and understand values it returns itself.



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


[jira] [Commented] (IGNITE-12464) Service metrics

2020-02-21 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin commented on IGNITE-12464:
---

Major changes:
1)  The services are now proxied with 
IgniteServiceProcessor#LocalInvocationHandler which measures service methods 
duration.
2) Service metrics are created for each interface method on service 
deployment, after init(), before execute().
4) Fixed failed tests which used service class directly instead of its 
interface.

> Service metrics
> ---
>
> Key: IGNITE-12464
> URL: https://issues.apache.org/jira/browse/IGNITE-12464
> Project: Ignite
>  Issue Type: Improvement
>Affects Versions: 2.7.6
>Reporter: Nikolay Izhikov
>Assignee: Vladimir Steshin
>Priority: Minor
>  Labels: IEP-35
>  Time Spent: 1h
>  Remaining Estimate: 0h
>
> We should provide the following metrics for each deployed service:
> * -Count of executions- - this number seems useless, because, we can compute 
> it just by summing all histograms values.
> * Histogram of executions duration



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


[jira] [Commented] (IGNITE-12701) Disallow silent deactivation in CLI and REST.

2020-02-21 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin commented on IGNITE-12701:
---

Major changes:

# Added IgniteCluster#state(ClusterState newState, boolean force).
# Deprecated IgniteCluster#state(ClusterState newState).
# Added GridClientClusterStateRequestV2.
# Deprecated GridClientClusterStateRequest.
# Added flag ‘force’ for REST in GridRestClusterStateRequest
# Added flag ‘force’ CLI in DeactivateCommand, ClusterStateChangeCommand.
# Added IgniteFeatures# FORCED_CHANGE_OF_CLUSTER_STATE.
# Added checking of deactivation safety: GridClusterStateProcessor# 
isDeactivationSafe()

> Disallow silent deactivation in CLI and REST.
> -
>
> Key: IGNITE-12701
> URL: https://issues.apache.org/jira/browse/IGNITE-12701
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Time Spent: 40m
>  Remaining Estimate: 0h
>
> Disallow silent deactivation through the CLI and REST. 
> Skip JMX call 
> {code:java}
> void IgniteMXBean#active(boolean active)
> {code}



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


[jira] [Comment Edited] (IGNITE-12464) Service metrics

2020-02-21 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin edited comment on IGNITE-12464 at 2/21/20 5:13 PM:


Major changes:
1)  The services are now proxied with 
IgniteServiceProcessor#LocalInvocationHandler which measures service methods 
duration.
2) Service metrics are created for each interface method on service 
deployment, after init(), before execute().
3) Fixed failed tests which used service class directly instead of its 
interface.


was (Author: vladsz83):
Major changes:
1)  The services are now proxied with 
IgniteServiceProcessor#LocalInvocationHandler which measures service methods 
duration.
2) Service metrics are created for each interface method on service 
deployment, after init(), before execute().
4) Fixed failed tests which used service class directly instead of its 
interface.

> Service metrics
> ---
>
> Key: IGNITE-12464
> URL: https://issues.apache.org/jira/browse/IGNITE-12464
> Project: Ignite
>  Issue Type: Improvement
>Affects Versions: 2.7.6
>Reporter: Nikolay Izhikov
>Assignee: Vladimir Steshin
>Priority: Minor
>  Labels: IEP-35
>  Time Spent: 1h
>  Remaining Estimate: 0h
>
> We should provide the following metrics for each deployed service:
> * -Count of executions- - this number seems useless, because, we can compute 
> it just by summing all histograms values.
> * Histogram of executions duration



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


[jira] [Comment Edited] (IGNITE-12701) Disallow silent deactivation in CLI and REST.

2020-02-21 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin edited comment on IGNITE-12701 at 2/21/20 5:11 PM:


Major changes:

# Added GridClientClusterStateRequestV2.
# Deprecated GridClientClusterStateRequest.
# Added flag ‘force’ for REST in GridRestClusterStateRequest
# Added flag ‘force’ CLI in DeactivateCommand, ClusterStateChangeCommand.
# Added IgniteFeatures# FORCED_CHANGE_OF_CLUSTER_STATE.
# Added checking of deactivation safety: GridClusterStateProcessor# 
isDeactivationSafe()


was (Author: vladsz83):
Major changes:

# Added IgniteCluster#state(ClusterState newState, boolean force).
# Deprecated IgniteCluster#state(ClusterState newState).
# Added GridClientClusterStateRequestV2.
# Deprecated GridClientClusterStateRequest.
# Added flag ‘force’ for REST in GridRestClusterStateRequest
# Added flag ‘force’ CLI in DeactivateCommand, ClusterStateChangeCommand.
# Added IgniteFeatures# FORCED_CHANGE_OF_CLUSTER_STATE.
# Added checking of deactivation safety: GridClusterStateProcessor# 
isDeactivationSafe()

> Disallow silent deactivation in CLI and REST.
> -
>
> Key: IGNITE-12701
> URL: https://issues.apache.org/jira/browse/IGNITE-12701
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Time Spent: 40m
>  Remaining Estimate: 0h
>
> Disallow silent deactivation through the CLI and REST. 
> Skip JMX call 
> {code:java}
> void IgniteMXBean#active(boolean active)
> {code}



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


[jira] [Created] (IGNITE-12701) Disallow silent deactivation in CLI and REST.

2020-02-19 Thread Vladimir Steshin (Jira)
Vladimir Steshin created IGNITE-12701:
-

 Summary: Disallow silent deactivation in CLI and REST.
 Key: IGNITE-12701
 URL: https://issues.apache.org/jira/browse/IGNITE-12701
 Project: Ignite
  Issue Type: Sub-task
Reporter: Vladimir Steshin
Assignee: Vladimir Steshin


Disallow silent deactivation through the CLI and REST. 

Skip JMX call 
{code:java}
void IgniteMXBean#active(boolean active)
{code}




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


[jira] [Created] (IGNITE-12779) Split Ignite and IgniteMXBean, make different behavior of the active(boolean)

2020-03-12 Thread Vladimir Steshin (Jira)
Vladimir Steshin created IGNITE-12779:
-

 Summary: Split Ignite and IgniteMXBean, make different behavior of 
the active(boolean)
 Key: IGNITE-12779
 URL: https://issues.apache.org/jira/browse/IGNITE-12779
 Project: Ignite
  Issue Type: Sub-task
Reporter: Vladimir Steshin
Assignee: Vladimir Steshin


To make cluster deactivation through JMX without sudden erasure in-memory data 
we should:

1)  Add _IgniteMXBean#state(String state, boolean force)_.

2)  Let _IgniteMXBean#state(String state)_ and _IgniteMXBean#active(boolean 
active)_  fail when deactivating cluster with in-memory data.

3)  Separate implementations _Ignite_ and _IgniteMXBean_ from 
_IgniteKernal_. They have same method _void active(boolean active)_ which is 
required with different behavior. In case of _Ignite#active(boolean active)_ it 
should not fail when deactivating cluster with in-memory data.




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


[jira] [Updated] (IGNITE-12773) Reduce number of cluster deactivation methods in internal API.

2020-03-12 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12773:
--
Ignite Flags:   (was: Docs Required,Release Notes Required)

> Reduce number of cluster deactivation methods in internal API.
> --
>
> Key: IGNITE-12773
> URL: https://issues.apache.org/jira/browse/IGNITE-12773
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Minor
>  Time Spent: 2.5h
>  Remaining Estimate: 0h
>
> To reduce number of cluster deactivation methods in internal API we might:
> {code:java}
> 1.Remove
> GridClientClusterState#active()
> 2.Remove
> GridClientClusterState#active(boolean active)
> 3.Remove
> IGridClusterStateProcessor#changeGlobalState(
> boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 4.Remove
> GridClusterStateProcessor#changeGlobalState(
> final boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
> boolean isAutoAdjust
> )
> 5.Remove
> GridClusterStateProcessor#changeGlobalState(
> final boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 6.Remove 
> GridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 7.Add boolean isAutoAdjust to 
> IGridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
> boolean isAutoAdjust
> )
> 8.Add @Override to 
> IGridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
> boolean isAutoAdjust
> )
> 9.  Remove, combine with #8:
> IGridClusterStateProcessor#changeGlobalState0(
> ClusterState state,
> BaselineTopology blt,
> boolean forceChangeBaselineTopology,
> boolean isAutoAdjust
> ) 
> {code}



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


[jira] [Updated] (IGNITE-12773) Reduce number of cluster deactivation methods in internal API.

2020-03-11 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12773:
--
Description: 
To reduce number of cluster deactivation methods in internal API we might:

{code:java}
1.  Remove
GridClientClusterState#active()

2.  Remove
GridClientClusterState#active(boolean active)

3.  Remove
IGridClusterStateProcessor#changeGlobalState(
boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

4.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

5.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

6.  Remove 
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

7.  Add boolean isAutoAdjust to 
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
   /* here */ boolean isAutoAdjust /* here */
)

8.  Add @Override to 
/* here */ @Override /* here */
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

9.  Remove
private IgniteInternalFuture changeGlobalState0(
ClusterState state,
boolean forceDeactivation,
BaselineTopology blt,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
) 
{code}


  was:
To reduce number of cluster deactivation methods in internal API we might:

{code:java}
1.  Remove
GridClientClusterState#active()

2.  Remove
GridClientClusterState#active(boolean active)

3.  Remove
IGridClusterStateProcessor#changeGlobalState(
boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

4.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

5.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

6.  Remove 
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

7.  Add boolean isAutoAdjust to 

IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
   /* here */ boolean isAutoAdjust /* here */
)

8.  Add @Override to 

/* here */ @Override /* here */
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

9.  Remove
private IgniteInternalFuture changeGlobalState0(
ClusterState state,
boolean forceDeactivation,
BaselineTopology blt,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
) 
{code}



> Reduce number of cluster deactivation methods in internal API.
> --
>
> Key: IGNITE-12773
> URL: https://issues.apache.org/jira/browse/IGNITE-12773
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Minor
>
> To reduce number of cluster deactivation methods in internal API we might:
> {code:java}
> 1.Remove
> GridClientClusterState#active()
> 2.Remove
> GridClientClusterState#active(boolean active)
> 3.Remove
> IGridClusterStateProcessor#changeGlobalState(
> boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 4.Remove
> GridClusterStateProcessor#changeGlobalState(
> final boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
> boolean isAutoAdjust
> )
> 5.Remove
> GridClusterStateProcessor#changeGlobalState(
> final boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 6.Remove 
> GridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 7.Add boolean isAutoAdjust to 
> IGridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
>/* here */ boolean isAutoAdjust /* here */
> )
> 8.Add @Override to 
> /* here */ @Override /* here */
> GridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> 

[jira] [Updated] (IGNITE-12773) Reduce number of cluster deactivation methods in internal API.

2020-03-11 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12773:
--
Description: 
To reduce number of cluster deactivation methods in internal API we might:

{code:java}
1.  Remove
GridClientClusterState#active()

2.  Remove
GridClientClusterState#active(boolean active)

3.  Remove
IGridClusterStateProcessor#changeGlobalState(
boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

4.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

5.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

6.  Remove 
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

7.  Add boolean isAutoAdjust to 

IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
   /* here */ boolean isAutoAdjust /* here */
)

8.  Add @Override to 

/* here */ @Override /* here */
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

9.  Remove
private IgniteInternalFuture changeGlobalState0(
ClusterState state,
boolean forceDeactivation,
BaselineTopology blt,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
) 
{code}


  was:
To reduce number of cluster deactivation methods in internal API we might:

{code:java}
1.  Remove
GridClientClusterState#active()

2.  Remove
GridClientClusterState#active(boolean active)

3.  Remove
IGridClusterStateProcessor#changeGlobalState(
boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

4.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

5.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

6.  Remove 
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

7.  Add boolean isAutoAdjust to 
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
   /* here */ boolean isAutoAdjust /* here */
)

8.  Add @Override to 
/* here */ @Override /* here */
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)
{code}



> Reduce number of cluster deactivation methods in internal API.
> --
>
> Key: IGNITE-12773
> URL: https://issues.apache.org/jira/browse/IGNITE-12773
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Minor
>
> To reduce number of cluster deactivation methods in internal API we might:
> {code:java}
> 1.Remove
> GridClientClusterState#active()
> 2.Remove
> GridClientClusterState#active(boolean active)
> 3.Remove
> IGridClusterStateProcessor#changeGlobalState(
> boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 4.Remove
> GridClusterStateProcessor#changeGlobalState(
> final boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
> boolean isAutoAdjust
> )
> 5.Remove
> GridClusterStateProcessor#changeGlobalState(
> final boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 6.Remove 
> GridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 7.Add boolean isAutoAdjust to 
> IGridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
>/* here */ boolean isAutoAdjust /* here */
> )
> 8.Add @Override to 
> /* here */ @Override /* here */
> GridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 9.  Remove
> private IgniteInternalFuture changeGlobalState0(
> ClusterState state,
> boolean forceDeactivation,
> BaselineTopology 

[jira] [Commented] (IGNITE-12773) Reduce number of cluster deactivation methods in internal API.

2020-03-11 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin commented on IGNITE-12773:
---

Done all the chages.

> Reduce number of cluster deactivation methods in internal API.
> --
>
> Key: IGNITE-12773
> URL: https://issues.apache.org/jira/browse/IGNITE-12773
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Minor
>
> To reduce number of cluster deactivation methods in internal API we might:
> {code:java}
> 1.Remove
> GridClientClusterState#active()
> 2.Remove
> GridClientClusterState#active(boolean active)
> 3.Remove
> IGridClusterStateProcessor#changeGlobalState(
> boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 4.Remove
> GridClusterStateProcessor#changeGlobalState(
> final boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
> boolean isAutoAdjust
> )
> 5.Remove
> GridClusterStateProcessor#changeGlobalState(
> final boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 6.Remove 
> GridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 7.Add boolean isAutoAdjust to 
> IGridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
>/* here */ boolean isAutoAdjust /* here */
> )
> 8.Add @Override to 
> /* here */ @Override /* here */
> IGridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
> boolean isAutoAdjust
> )
> 9.  Remove, combine with #8:
> IGridClusterStateProcessor#changeGlobalState0(
> ClusterState state,
> BaselineTopology blt,
> boolean forceChangeBaselineTopology,
> boolean isAutoAdjust
> ) 
> {code}



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


[jira] [Updated] (IGNITE-12773) Reduce number of cluster deactivation methods in internal API.

2020-03-11 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12773:
--
Description: 
To reduce number of cluster deactivation methods in internal API we might:

{code:java}
1.  Remove
GridClientClusterState#active()

2.  Remove
GridClientClusterState#active(boolean active)

3.  Remove
IGridClusterStateProcessor#changeGlobalState(
boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

4.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

5.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

6.  Remove 
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
boolean forceDeactivation,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

7.  Add boolean isAutoAdjust to 
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
boolean forceDeactivation,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
   /* here */ boolean isAutoAdjust /* here */
)

8.  Add @Override to 
/* here */ @Override /* here */
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
boolean forceDeactivation,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)
{code}


  was:
To reduce number of cluster deactivation methods in internal API we might:

1.  Remove
GridClientClusterState#active()

2.  Remove
GridClientClusterState#active(boolean active)

3.  Remove
IGridClusterStateProcessor#changeGlobalState(
boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

4.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

5.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

6.  Remove 
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
boolean forceDeactivation,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

7.  Add boolean isAutoAdjust to 
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
boolean forceDeactivation,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
   /* here */ boolean isAutoAdjust /* here */
)

8.  Add @Override to 
/* here */ @Override /* here */
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
boolean forceDeactivation,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)


> Reduce number of cluster deactivation methods in internal API.
> --
>
> Key: IGNITE-12773
> URL: https://issues.apache.org/jira/browse/IGNITE-12773
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Minor
>
> To reduce number of cluster deactivation methods in internal API we might:
> {code:java}
> 1.Remove
> GridClientClusterState#active()
> 2.Remove
> GridClientClusterState#active(boolean active)
> 3.Remove
> IGridClusterStateProcessor#changeGlobalState(
> boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 4.Remove
> GridClusterStateProcessor#changeGlobalState(
> final boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
> boolean isAutoAdjust
> )
> 5.Remove
> GridClusterStateProcessor#changeGlobalState(
> final boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 6.Remove 
> GridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> boolean forceDeactivation,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 7.Add boolean isAutoAdjust to 
> IGridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> boolean forceDeactivation,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
>/* here */ boolean isAutoAdjust /* here */
> )
> 8.Add @Override to 
> /* here */ @Override /* here */
> GridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> boolean forceDeactivation,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> {code}



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


[jira] [Created] (IGNITE-12773) Reduce number of cluster deactivation methods in internal API.

2020-03-11 Thread Vladimir Steshin (Jira)
Vladimir Steshin created IGNITE-12773:
-

 Summary: Reduce number of cluster deactivation methods in internal 
API.
 Key: IGNITE-12773
 URL: https://issues.apache.org/jira/browse/IGNITE-12773
 Project: Ignite
  Issue Type: Improvement
Reporter: Vladimir Steshin
Assignee: Vladimir Steshin


To reduce number of cluster deactivation methods in internal API we might:

1.  Remove
GridClientClusterState#active()

2.  Remove
GridClientClusterState#active(boolean active)

3.  Remove
IGridClusterStateProcessor#changeGlobalState(
boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

4.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

5.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

6.  Remove 
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
boolean forceDeactivation,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

7.  Add boolean isAutoAdjust to 
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
boolean forceDeactivation,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
   /* here */ boolean isAutoAdjust /* here */
)

8.  Add @Override to 
/* here */ @Override /* here */
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
boolean forceDeactivation,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)



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


[jira] [Updated] (IGNITE-12773) Reduce number of cluster deactivation methods in internal API.

2020-03-11 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12773:
--
Description: 
To reduce number of cluster deactivation methods in internal API we might:

{code:java}
1.  Remove
GridClientClusterState#active()

2.  Remove
GridClientClusterState#active(boolean active)

3.  Remove
IGridClusterStateProcessor#changeGlobalState(
boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

4.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

5.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

6.  Remove 
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

7.  Add boolean isAutoAdjust to 
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
   /* here */ boolean isAutoAdjust /* here */
)

8.  Add @Override to 
/* here */ @Override /* here */
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

9.  Remove, combine with #8:
IGridClusterStateProcessor#changeGlobalState0(
ClusterState state,
BaselineTopology blt,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
) 
{code}


  was:
To reduce number of cluster deactivation methods in internal API we might:

{code:java}
1.  Remove
GridClientClusterState#active()

2.  Remove
GridClientClusterState#active(boolean active)

3.  Remove
IGridClusterStateProcessor#changeGlobalState(
boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

4.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

5.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

6.  Remove 
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

7.  Add boolean isAutoAdjust to 
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
   /* here */ boolean isAutoAdjust /* here */
)

8.  Add @Override to 
/* here */ @Override /* here */
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

9.  Remove, combine with #8:
private IgniteInternalFuture changeGlobalState0(
ClusterState state,
BaselineTopology blt,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
) 
{code}



> Reduce number of cluster deactivation methods in internal API.
> --
>
> Key: IGNITE-12773
> URL: https://issues.apache.org/jira/browse/IGNITE-12773
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Minor
>
> To reduce number of cluster deactivation methods in internal API we might:
> {code:java}
> 1.Remove
> GridClientClusterState#active()
> 2.Remove
> GridClientClusterState#active(boolean active)
> 3.Remove
> IGridClusterStateProcessor#changeGlobalState(
> boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 4.Remove
> GridClusterStateProcessor#changeGlobalState(
> final boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
> boolean isAutoAdjust
> )
> 5.Remove
> GridClusterStateProcessor#changeGlobalState(
> final boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 6.Remove 
> GridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 7.Add boolean isAutoAdjust to 
> IGridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
>/* here */ boolean isAutoAdjust /* here */
> )
> 8.Add @Override to 
> /* here */ @Override /* here */
> 

[jira] [Updated] (IGNITE-12773) Reduce number of cluster deactivation methods in internal API.

2020-03-11 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12773:
--
Description: 
To reduce number of cluster deactivation methods in internal API we might:

{code:java}
1.  Remove
GridClientClusterState#active()

2.  Remove
GridClientClusterState#active(boolean active)

3.  Remove
IGridClusterStateProcessor#changeGlobalState(
boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

4.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

5.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

6.  Remove 
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

7.  Add boolean isAutoAdjust to 
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
   /* here */ boolean isAutoAdjust /* here */
)

8.  Add @Override to 
/* here */ @Override /* here */
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

9.  Remove, combine with #8:
private IgniteInternalFuture changeGlobalState0(
ClusterState state,
BaselineTopology blt,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
) 
{code}


  was:
To reduce number of cluster deactivation methods in internal API we might:

{code:java}
1.  Remove
GridClientClusterState#active()

2.  Remove
GridClientClusterState#active(boolean active)

3.  Remove
IGridClusterStateProcessor#changeGlobalState(
boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

4.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

5.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

6.  Remove 
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

7.  Add boolean isAutoAdjust to 
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
   /* here */ boolean isAutoAdjust /* here */
)

8.  Add @Override to 
/* here */ @Override /* here */
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
boolean forceDeactivation,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

9.  Remove, combine with #8:
private IgniteInternalFuture changeGlobalState0(
ClusterState state,
BaselineTopology blt,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
) 
{code}



> Reduce number of cluster deactivation methods in internal API.
> --
>
> Key: IGNITE-12773
> URL: https://issues.apache.org/jira/browse/IGNITE-12773
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Minor
>
> To reduce number of cluster deactivation methods in internal API we might:
> {code:java}
> 1.Remove
> GridClientClusterState#active()
> 2.Remove
> GridClientClusterState#active(boolean active)
> 3.Remove
> IGridClusterStateProcessor#changeGlobalState(
> boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 4.Remove
> GridClusterStateProcessor#changeGlobalState(
> final boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
> boolean isAutoAdjust
> )
> 5.Remove
> GridClusterStateProcessor#changeGlobalState(
> final boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 6.Remove 
> GridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 7.Add boolean isAutoAdjust to 
> IGridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
>/* here */ boolean isAutoAdjust /* here */
> )
> 8.Add @Override to 
> /* here */ 

[jira] [Updated] (IGNITE-12773) Reduce number of cluster deactivation methods in internal API.

2020-03-11 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12773:
--
Description: 
To reduce number of cluster deactivation methods in internal API we might:

{code:java}
1.  Remove
GridClientClusterState#active()

2.  Remove
GridClientClusterState#active(boolean active)

3.  Remove
IGridClusterStateProcessor#changeGlobalState(
boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

4.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

5.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

6.  Remove 
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

7.  Add boolean isAutoAdjust to 
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
   /* here */ boolean isAutoAdjust /* here */
)

8.  Add @Override to 
/* here */ @Override /* here */
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
boolean forceDeactivation,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

9.  Remove, combine with #8:
private IgniteInternalFuture changeGlobalState0(
ClusterState state,
BaselineTopology blt,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
) 
{code}


  was:
To reduce number of cluster deactivation methods in internal API we might:

{code:java}
1.  Remove
GridClientClusterState#active()

2.  Remove
GridClientClusterState#active(boolean active)

3.  Remove
IGridClusterStateProcessor#changeGlobalState(
boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

4.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

5.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

6.  Remove 
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

7.  Add boolean isAutoAdjust to 
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
   /* here */ boolean isAutoAdjust /* here */
)

8.  Add @Override to 
/* here */ @Override /* here */
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
boolean forceDeactivation,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

9.  Remove, combine with #8:
private IgniteInternalFuture changeGlobalState0(
ClusterState state,
boolean forceDeactivation,
BaselineTopology blt,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
) 
{code}



> Reduce number of cluster deactivation methods in internal API.
> --
>
> Key: IGNITE-12773
> URL: https://issues.apache.org/jira/browse/IGNITE-12773
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Minor
>
> To reduce number of cluster deactivation methods in internal API we might:
> {code:java}
> 1.Remove
> GridClientClusterState#active()
> 2.Remove
> GridClientClusterState#active(boolean active)
> 3.Remove
> IGridClusterStateProcessor#changeGlobalState(
> boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 4.Remove
> GridClusterStateProcessor#changeGlobalState(
> final boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
> boolean isAutoAdjust
> )
> 5.Remove
> GridClusterStateProcessor#changeGlobalState(
> final boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 6.Remove 
> GridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 7.Add boolean isAutoAdjust to 
> IGridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
>/* here */ boolean 

[jira] [Updated] (IGNITE-12773) Reduce number of cluster deactivation methods in internal API.

2020-03-11 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12773:
--
Description: 
To reduce number of cluster deactivation methods in internal API we might:

{code:java}
1.  Remove
GridClientClusterState#active()

2.  Remove
GridClientClusterState#active(boolean active)

3.  Remove
IGridClusterStateProcessor#changeGlobalState(
boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

4.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

5.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

6.  Remove 
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

7.  Add boolean isAutoAdjust to 
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
   /* here */ boolean isAutoAdjust /* here */
)

8.  Add @Override to 
/* here */ @Override /* here */
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
boolean forceDeactivation,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

9.  Remove, combine with #8:
private IgniteInternalFuture changeGlobalState0(
ClusterState state,
boolean forceDeactivation,
BaselineTopology blt,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
) 
{code}


  was:
To reduce number of cluster deactivation methods in internal API we might:

{code:java}
1.  Remove
GridClientClusterState#active()

2.  Remove
GridClientClusterState#active(boolean active)

3.  Remove
IGridClusterStateProcessor#changeGlobalState(
boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

4.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

5.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

6.  Remove 
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

7.  Add boolean isAutoAdjust to 
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
   /* here */ boolean isAutoAdjust /* here */
)

8.  Add @Override to 
/* here */ @Override /* here */
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

9.  Remove
private IgniteInternalFuture changeGlobalState0(
ClusterState state,
boolean forceDeactivation,
BaselineTopology blt,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
) 
{code}



> Reduce number of cluster deactivation methods in internal API.
> --
>
> Key: IGNITE-12773
> URL: https://issues.apache.org/jira/browse/IGNITE-12773
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Minor
>
> To reduce number of cluster deactivation methods in internal API we might:
> {code:java}
> 1.Remove
> GridClientClusterState#active()
> 2.Remove
> GridClientClusterState#active(boolean active)
> 3.Remove
> IGridClusterStateProcessor#changeGlobalState(
> boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 4.Remove
> GridClusterStateProcessor#changeGlobalState(
> final boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
> boolean isAutoAdjust
> )
> 5.Remove
> GridClusterStateProcessor#changeGlobalState(
> final boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 6.Remove 
> GridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 7.Add boolean isAutoAdjust to 
> IGridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
>/* here */ boolean isAutoAdjust /* here */
> )
> 8.Add @Override to 
> /* here 

[jira] [Updated] (IGNITE-12773) Reduce number of cluster deactivation methods in internal API.

2020-03-11 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12773:
--
Description: 
To reduce number of cluster deactivation methods in internal API we might:

{code:java}
1.  Remove
GridClientClusterState#active()

2.  Remove
GridClientClusterState#active(boolean active)

3.  Remove
IGridClusterStateProcessor#changeGlobalState(
boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

4.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

5.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

6.  Remove 
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

7.  Add boolean isAutoAdjust to 
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
   /* here */ boolean isAutoAdjust /* here */
)

8.  Add @Override to 
/* here */ @Override /* here */
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)
{code}


  was:
To reduce number of cluster deactivation methods in internal API we might:

{code:java}
1.  Remove
GridClientClusterState#active()

2.  Remove
GridClientClusterState#active(boolean active)

3.  Remove
IGridClusterStateProcessor#changeGlobalState(
boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

4.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

5.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

6.  Remove 
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
boolean forceDeactivation,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

7.  Add boolean isAutoAdjust to 
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
boolean forceDeactivation,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
   /* here */ boolean isAutoAdjust /* here */
)

8.  Add @Override to 
/* here */ @Override /* here */
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
boolean forceDeactivation,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)
{code}



> Reduce number of cluster deactivation methods in internal API.
> --
>
> Key: IGNITE-12773
> URL: https://issues.apache.org/jira/browse/IGNITE-12773
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Minor
>
> To reduce number of cluster deactivation methods in internal API we might:
> {code:java}
> 1.Remove
> GridClientClusterState#active()
> 2.Remove
> GridClientClusterState#active(boolean active)
> 3.Remove
> IGridClusterStateProcessor#changeGlobalState(
> boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 4.Remove
> GridClusterStateProcessor#changeGlobalState(
> final boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
> boolean isAutoAdjust
> )
> 5.Remove
> GridClusterStateProcessor#changeGlobalState(
> final boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 6.Remove 
> GridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 7.Add boolean isAutoAdjust to 
> IGridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
>/* here */ boolean isAutoAdjust /* here */
> )
> 8.Add @Override to 
> /* here */ @Override /* here */
> GridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> {code}



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


[jira] [Updated] (IGNITE-12773) Reduce number of cluster deactivation methods in internal API.

2020-03-11 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12773:
--
Description: 
To reduce number of cluster deactivation methods in internal API we might:

{code:java}
1.  Remove
GridClientClusterState#active()

2.  Remove
GridClientClusterState#active(boolean active)

3.  Remove
IGridClusterStateProcessor#changeGlobalState(
boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

4.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

5.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

6.  Remove 
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

7.  Add boolean isAutoAdjust to 
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

8.  Add @Override to 
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

9.  Remove, combine with #8:
IGridClusterStateProcessor#changeGlobalState0(
ClusterState state,
BaselineTopology blt,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
) 
{code}


  was:
To reduce number of cluster deactivation methods in internal API we might:

{code:java}
1.  Remove
GridClientClusterState#active()

2.  Remove
GridClientClusterState#active(boolean active)

3.  Remove
IGridClusterStateProcessor#changeGlobalState(
boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

4.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

5.  Remove
GridClusterStateProcessor#changeGlobalState(
final boolean activate,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

6.  Remove 
GridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology
)

7.  Add boolean isAutoAdjust to 
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
   /* here */ boolean isAutoAdjust /* here */
)

8.  Add @Override to 
/* here */ @Override /* here */
IGridClusterStateProcessor#changeGlobalState(
ClusterState state,
Collection baselineNodes,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
)

9.  Remove, combine with #8:
IGridClusterStateProcessor#changeGlobalState0(
ClusterState state,
BaselineTopology blt,
boolean forceChangeBaselineTopology,
boolean isAutoAdjust
) 
{code}



> Reduce number of cluster deactivation methods in internal API.
> --
>
> Key: IGNITE-12773
> URL: https://issues.apache.org/jira/browse/IGNITE-12773
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Minor
>
> To reduce number of cluster deactivation methods in internal API we might:
> {code:java}
> 1.Remove
> GridClientClusterState#active()
> 2.Remove
> GridClientClusterState#active(boolean active)
> 3.Remove
> IGridClusterStateProcessor#changeGlobalState(
> boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 4.Remove
> GridClusterStateProcessor#changeGlobalState(
> final boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
> boolean isAutoAdjust
> )
> 5.Remove
> GridClusterStateProcessor#changeGlobalState(
> final boolean activate,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 6.Remove 
> GridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology
> )
> 7.Add boolean isAutoAdjust to 
> IGridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> boolean forceChangeBaselineTopology,
> boolean isAutoAdjust
> )
> 8.Add @Override to 
> IGridClusterStateProcessor#changeGlobalState(
> ClusterState state,
> Collection baselineNodes,
> 

[jira] [Updated] (IGNITE-12779) Split implementations of Ignite and IgniteMXBean, make behavior of their active(boolean) different

2020-04-06 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12779:
--
Description: 
To make cluster deactivation through JMX without sudden erasure of in-memory 
data we should:

1) Set IgniteMXBean.active(false) and IgniteMXBean.state("inactive") throwing 
an exception if deactivation would clear in-memory data.

2) Extract IgniteMXBean from IgniteKernal.

3) Add IgniteMXBean.state(String, boolean)


Additionally, as discussed, improve comments _"If {@code true}, cluster 
deactivation will be forced."_ : 
add a link to full description.

  was:
To make cluster deactivation through JMX without sudden erasure of in-memory 
data we should:

1) Set IgniteMXBean.active(false) and IgniteMXBean.state("inactive") throwing 
an exception if deactivation would clear in-memory data.

2) Extract IgniteMXBean from IgniteKernal.

3) Add IgniteMXBean.state(String, boolean)


> Split implementations of Ignite and IgniteMXBean, make behavior of their 
> active(boolean) different 
> ---
>
> Key: IGNITE-12779
> URL: https://issues.apache.org/jira/browse/IGNITE-12779
> Project: Ignite
>  Issue Type: Sub-task
>Affects Versions: 2.8
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 3h 20m
>  Remaining Estimate: 0h
>
> To make cluster deactivation through JMX without sudden erasure of in-memory 
> data we should:
> 1) Set IgniteMXBean.active(false) and IgniteMXBean.state("inactive") throwing 
> an exception if deactivation would clear in-memory data.
> 2) Extract IgniteMXBean from IgniteKernal.
> 3) Add IgniteMXBean.state(String, boolean)
> Additionally, as discussed, improve comments _"If {@code true}, cluster 
> deactivation will be forced."_ : 
> add a link to full description.



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


[jira] [Updated] (IGNITE-12779) Split implementations of Ignite and IgniteMXBean, make behavior of their active(boolean) different

2020-04-06 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12779:
--
Description: 
To make cluster deactivation through JMX without sudden erasure of in-memory 
data we should:

1) Set IgniteMXBean.active(false) and IgniteMXBean.state("inactive") throwing 
an exception if deactivation would clear in-memory data.

2) Extract IgniteMXBean from IgniteKernal.

3) Add IgniteMXBean.state(String, boolean)


Additionally, as discussed, improve comments 
_If {@code true}, cluster deactivation will be forced._ : 
add a link to full description.

  was:
To make cluster deactivation through JMX without sudden erasure of in-memory 
data we should:

1) Set IgniteMXBean.active(false) and IgniteMXBean.state("inactive") throwing 
an exception if deactivation would clear in-memory data.

2) Extract IgniteMXBean from IgniteKernal.

3) Add IgniteMXBean.state(String, boolean)


Additionally, as discussed, improve comments _"If {@code true}, cluster 
deactivation will be forced."_ : 
add a link to full description.


> Split implementations of Ignite and IgniteMXBean, make behavior of their 
> active(boolean) different 
> ---
>
> Key: IGNITE-12779
> URL: https://issues.apache.org/jira/browse/IGNITE-12779
> Project: Ignite
>  Issue Type: Sub-task
>Affects Versions: 2.8
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 3h 20m
>  Remaining Estimate: 0h
>
> To make cluster deactivation through JMX without sudden erasure of in-memory 
> data we should:
> 1) Set IgniteMXBean.active(false) and IgniteMXBean.state("inactive") throwing 
> an exception if deactivation would clear in-memory data.
> 2) Extract IgniteMXBean from IgniteKernal.
> 3) Add IgniteMXBean.state(String, boolean)
> Additionally, as discussed, improve comments 
> _If {@code true}, cluster deactivation will be forced._ : 
> add a link to full description.



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


[jira] [Updated] (IGNITE-12779) Split implementations of Ignite and IgniteMXBean, make behavior of their active(boolean) different

2020-04-06 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12779:
--
Description: 
To make cluster deactivation through JMX without sudden erasure of in-memory 
data we should:

1) Set IgniteMXBean.active(false) and IgniteMXBean.state("inactive") throwing 
an exception if deactivation would clear in-memory data.

2) Extract IgniteMXBean from IgniteKernal.

3) Add IgniteMXBean.state(String, boolean)

Additionally, as discussed, we should improve comments
{code:java}
/** If {@code true}, cluster deactivation will be forced. */
{code}
Let's add a link to a full description.

  was:
To make cluster deactivation through JMX without sudden erasure of in-memory 
data we should:

1) Set IgniteMXBean.active(false) and IgniteMXBean.state("inactive") throwing 
an exception if deactivation would clear in-memory data.

2) Extract IgniteMXBean from IgniteKernal.

3) Add IgniteMXBean.state(String, boolean)

Additionally, as discussed, improve comments
{code:java}
/** If {@code true}, cluster deactivation will be forced. */
{code}
- add a link to full description.


> Split implementations of Ignite and IgniteMXBean, make behavior of their 
> active(boolean) different 
> ---
>
> Key: IGNITE-12779
> URL: https://issues.apache.org/jira/browse/IGNITE-12779
> Project: Ignite
>  Issue Type: Sub-task
>Affects Versions: 2.8
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 3h 20m
>  Remaining Estimate: 0h
>
> To make cluster deactivation through JMX without sudden erasure of in-memory 
> data we should:
> 1) Set IgniteMXBean.active(false) and IgniteMXBean.state("inactive") throwing 
> an exception if deactivation would clear in-memory data.
> 2) Extract IgniteMXBean from IgniteKernal.
> 3) Add IgniteMXBean.state(String, boolean)
> Additionally, as discussed, we should improve comments
> {code:java}
> /** If {@code true}, cluster deactivation will be forced. */
> {code}
> Let's add a link to a full description.



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


[jira] [Updated] (IGNITE-12779) Split implementations of Ignite and IgniteMXBean, make behavior of their active(boolean) different

2020-04-06 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12779:
--
Description: 
To make cluster deactivation through JMX without sudden erasure of in-memory 
data we should:

1) Set IgniteMXBean.active(false) and IgniteMXBean.state("inactive") throwing 
an exception if deactivation would clear in-memory data.

2) Extract IgniteMXBean from IgniteKernal.

3) Add IgniteMXBean.state(String, boolean)

Additionally, as discussed, improve comments
{code:java}
/** If {@code true}, cluster deactivation will be forced. */
{code}
- add a link to full description.

  was:
To make cluster deactivation through JMX without sudden erasure of in-memory 
data we should:

1) Set IgniteMXBean.active(false) and IgniteMXBean.state("inactive") throwing 
an exception if deactivation would clear in-memory data.

2) Extract IgniteMXBean from IgniteKernal.

3) Add IgniteMXBean.state(String, boolean)


Additionally, as discussed, improve comments 
_If {@code true}, cluster deactivation will be forced._ : 
add a link to full description.


> Split implementations of Ignite and IgniteMXBean, make behavior of their 
> active(boolean) different 
> ---
>
> Key: IGNITE-12779
> URL: https://issues.apache.org/jira/browse/IGNITE-12779
> Project: Ignite
>  Issue Type: Sub-task
>Affects Versions: 2.8
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 3h 20m
>  Remaining Estimate: 0h
>
> To make cluster deactivation through JMX without sudden erasure of in-memory 
> data we should:
> 1) Set IgniteMXBean.active(false) and IgniteMXBean.state("inactive") throwing 
> an exception if deactivation would clear in-memory data.
> 2) Extract IgniteMXBean from IgniteKernal.
> 3) Add IgniteMXBean.state(String, boolean)
> Additionally, as discussed, improve comments
> {code:java}
> /** If {@code true}, cluster deactivation will be forced. */
> {code}
> - add a link to full description.



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


[jira] [Updated] (IGNITE-12779) Split implementations of Ignite and IgniteMXBean, make behavior of their active(boolean) different

2020-04-06 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12779:
--
Description: 
To make cluster deactivation through JMX without sudden erasure of in-memory 
data we should:

1) Set IgniteMXBean.active(false) and IgniteMXBean.state("inactive") throwing 
an exception if deactivation would clear in-memory data.

2) Extract IgniteMXBean from IgniteKernal.

3) Add IgniteMXBean.state(String, boolean)



Additionally, as discussed, we should improve comments
{code:java}
/** If {@code true}, cluster deactivation will be forced. */
{code}
Let's add a link to a full description.

  was:
To make cluster deactivation through JMX without sudden erasure of in-memory 
data we should:

1) Set IgniteMXBean.active(false) and IgniteMXBean.state("inactive") throwing 
an exception if deactivation would clear in-memory data.

2) Extract IgniteMXBean from IgniteKernal.

3) Add IgniteMXBean.state(String, boolean)

Additionally, as discussed, we should improve comments
{code:java}
/** If {@code true}, cluster deactivation will be forced. */
{code}
Let's add a link to a full description.


> Split implementations of Ignite and IgniteMXBean, make behavior of their 
> active(boolean) different 
> ---
>
> Key: IGNITE-12779
> URL: https://issues.apache.org/jira/browse/IGNITE-12779
> Project: Ignite
>  Issue Type: Sub-task
>Affects Versions: 2.8
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 3h 20m
>  Remaining Estimate: 0h
>
> To make cluster deactivation through JMX without sudden erasure of in-memory 
> data we should:
> 1) Set IgniteMXBean.active(false) and IgniteMXBean.state("inactive") throwing 
> an exception if deactivation would clear in-memory data.
> 2) Extract IgniteMXBean from IgniteKernal.
> 3) Add IgniteMXBean.state(String, boolean)
> Additionally, as discussed, we should improve comments
> {code:java}
> /** If {@code true}, cluster deactivation will be forced. */
> {code}
> Let's add a link to a full description.



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


[jira] [Updated] (IGNITE-12779) Split implementations of Ignite and IgniteMXBean, make different behavior of their active(boolean)

2020-03-13 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12779:
--
Summary: Split implementations of Ignite and IgniteMXBean, make different 
behavior of their active(boolean)  (was: Split Ignite and IgniteMXBean, make 
different behavior of the active(boolean))

> Split implementations of Ignite and IgniteMXBean, make different behavior of 
> their active(boolean)
> --
>
> Key: IGNITE-12779
> URL: https://issues.apache.org/jira/browse/IGNITE-12779
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> To make cluster deactivation through JMX without sudden erasure in-memory 
> data we should:
> 1)Add _IgniteMXBean#state(String state, boolean force)_.
> 2)Let _IgniteMXBean#state(String state)_ and _IgniteMXBean#active(boolean 
> active)_  fail when deactivating cluster with in-memory data.
> 3)Separate implementations _Ignite_ and _IgniteMXBean_ from 
> _IgniteKernal_. They have same method _void active(boolean active)_ which is 
> required with different behavior. In case of _Ignite#active(boolean active)_ 
> it should not fail when deactivating cluster with in-memory data.



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


[jira] [Updated] (IGNITE-12779) Split implementations of Ignite and IgniteMXBean, make behavior of their active(boolean) different

2020-03-13 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12779:
--
Summary: Split implementations of Ignite and IgniteMXBean, make behavior of 
their active(boolean) different   (was: Split implementations of Ignite and 
IgniteMXBean, make different behavior of their active(boolean))

> Split implementations of Ignite and IgniteMXBean, make behavior of their 
> active(boolean) different 
> ---
>
> Key: IGNITE-12779
> URL: https://issues.apache.org/jira/browse/IGNITE-12779
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> To make cluster deactivation through JMX without sudden erasure in-memory 
> data we should:
> 1)Add _IgniteMXBean#state(String state, boolean force)_.
> 2)Let _IgniteMXBean#state(String state)_ and _IgniteMXBean#active(boolean 
> active)_  fail when deactivating cluster with in-memory data.
> 3)Separate implementations _Ignite_ and _IgniteMXBean_ from 
> _IgniteKernal_. They have same method _void active(boolean active)_ which is 
> required with different behavior. In case of _Ignite#active(boolean active)_ 
> it should not fail when deactivating cluster with in-memory data.



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


[jira] [Issue Comment Deleted] (IGNITE-12464) Service metrics

2020-04-02 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12464:
--
Comment: was deleted

(was: Major changes:
1)  The services are now proxied with 
IgniteServiceProcessor#LocalInvocationHandler which measures service methods 
duration.
2) Service metrics are created for each interface method on service 
deployment, after init(), before execute().
3) Fixed failed tests which used service class directly instead of its 
interface.)

> Service metrics
> ---
>
> Key: IGNITE-12464
> URL: https://issues.apache.org/jira/browse/IGNITE-12464
> Project: Ignite
>  Issue Type: Improvement
>Affects Versions: 2.8
>Reporter: Nikolay Izhikov
>Assignee: Vladimir Steshin
>Priority: Minor
>  Labels: IEP-35
>  Time Spent: 17.5h
>  Remaining Estimate: 0h
>
> We should provide the following metrics for each deployed service:
> * -Count of executions- - this number seems useless, because, we can compute 
> it just by summing all histograms values.
> * Histogram of executions duration



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


[jira] [Updated] (IGNITE-12739) Optimistic serializable transactions may fail infinitely when read-through is enabled

2020-03-27 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12739:
--
Ignite Flags:   (was: Docs Required,Release Notes Required)

> Optimistic serializable transactions may fail infinitely when read-through is 
> enabled
> -
>
> Key: IGNITE-12739
> URL: https://issues.apache.org/jira/browse/IGNITE-12739
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexey Goncharuk
>Assignee: Vladimir Steshin
>Priority: Major
> Attachments: ReplicatedOptimisticTxTest.java
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> In current design it is possible that the same key-value pair will be stored 
> with different versions on primary and backup nodes. For example, a 
> read-through is invoked separately on primary backup and values are stored 
> with node local version.
> With this precondition, if an optimistic serializable transaction is started 
> from a backup node, the serializable check version is read from backup, but 
> validated on primary node, which will fail the transaction with optimistic 
> read/write conflict exception until the versions are overwritten to the same 
> value (for example, via a pessimistic transaction).
> While we need to additionally investigate whether we want to change the 
> read-through logic to ensure the same value and version on all nodes, this 
> particular scenario should be fixed by always enforcing reading from a 
> primary node inside an optimistic serializable transaction.
> The reproducer is attached. A known workaround is to disable read load 
> balancing by setting "-DIGNITE_READ_LOAD_BALANCING=false" system property.



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


[jira] [Updated] (IGNITE-12739) Optimistic serializable transactions may fail infinitely when read-through is enabled

2020-03-27 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12739:
--
Fix Version/s: 2.9

> Optimistic serializable transactions may fail infinitely when read-through is 
> enabled
> -
>
> Key: IGNITE-12739
> URL: https://issues.apache.org/jira/browse/IGNITE-12739
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexey Goncharuk
>Assignee: Vladimir Steshin
>Priority: Major
> Fix For: 2.9
>
> Attachments: ReplicatedOptimisticTxTest.java
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> In current design it is possible that the same key-value pair will be stored 
> with different versions on primary and backup nodes. For example, a 
> read-through is invoked separately on primary backup and values are stored 
> with node local version.
> With this precondition, if an optimistic serializable transaction is started 
> from a backup node, the serializable check version is read from backup, but 
> validated on primary node, which will fail the transaction with optimistic 
> read/write conflict exception until the versions are overwritten to the same 
> value (for example, via a pessimistic transaction).
> While we need to additionally investigate whether we want to change the 
> read-through logic to ensure the same value and version on all nodes, this 
> particular scenario should be fixed by always enforcing reading from a 
> primary node inside an optimistic serializable transaction.
> The reproducer is attached. A known workaround is to disable read load 
> balancing by setting "-DIGNITE_READ_LOAD_BALANCING=false" system property.



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


[jira] [Updated] (IGNITE-12739) Optimistic serializable transactions may fail infinitely when read-through is enabled

2020-03-27 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12739:
--
Affects Version/s: 2.8

> Optimistic serializable transactions may fail infinitely when read-through is 
> enabled
> -
>
> Key: IGNITE-12739
> URL: https://issues.apache.org/jira/browse/IGNITE-12739
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 2.8
>Reporter: Alexey Goncharuk
>Assignee: Vladimir Steshin
>Priority: Major
> Fix For: 2.9
>
> Attachments: ReplicatedOptimisticTxTest.java
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> In current design it is possible that the same key-value pair will be stored 
> with different versions on primary and backup nodes. For example, a 
> read-through is invoked separately on primary backup and values are stored 
> with node local version.
> With this precondition, if an optimistic serializable transaction is started 
> from a backup node, the serializable check version is read from backup, but 
> validated on primary node, which will fail the transaction with optimistic 
> read/write conflict exception until the versions are overwritten to the same 
> value (for example, via a pessimistic transaction).
> While we need to additionally investigate whether we want to change the 
> read-through logic to ensure the same value and version on all nodes, this 
> particular scenario should be fixed by always enforcing reading from a 
> primary node inside an optimistic serializable transaction.
> The reproducer is attached. A known workaround is to disable read load 
> balancing by setting "-DIGNITE_READ_LOAD_BALANCING=false" system property.



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


[jira] [Updated] (IGNITE-12779) Split implementations of Ignite and IgniteMXBean, make behavior of their active(boolean) different

2020-03-27 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-12779:
--
Description: 
To make cluster deactivation through JMX without sudden erasure of in-memory 
data we should:

1) Set IgniteMXBean.active(false) and IgniteMXBean.state("inactive") throwing 
an exception if deactivation would clear in-memory data.

2) Extract IgniteMXBean from IgniteKernal.

3) Add IgniteMXBean.state(String, boolean)

  was:
To make cluster deactivation through JMX without sudden erasure in-memory data 
we should:

1) Set IgniteMXBean.active(false) and IgniteMXBean.state("inactive") throwing 
an exception if deactivation would clear in-memory data.

2) Extract IgniteMXBean from IgniteKernal.

3) Add IgniteMXBean.state(String, boolean)


> Split implementations of Ignite and IgniteMXBean, make behavior of their 
> active(boolean) different 
> ---
>
> Key: IGNITE-12779
> URL: https://issues.apache.org/jira/browse/IGNITE-12779
> Project: Ignite
>  Issue Type: Sub-task
>Affects Versions: 2.8
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
> Fix For: 2.9
>
>  Time Spent: 3h 20m
>  Remaining Estimate: 0h
>
> To make cluster deactivation through JMX without sudden erasure of in-memory 
> data we should:
> 1) Set IgniteMXBean.active(false) and IgniteMXBean.state("inactive") throwing 
> an exception if deactivation would clear in-memory data.
> 2) Extract IgniteMXBean from IgniteKernal.
> 3) Add IgniteMXBean.state(String, boolean)



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


[jira] [Updated] (IGNITE-13016) Fix backward checking of failed node.

2020-05-15 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13016:
--
Description: 
We should fix 3 drawbacks in the backward checking of failed node:

1) It has hardcoded timeout 100ms:
{code:java}
private boolean ServerImpls.isConnectionRefused(SocketAddress addr) {
try (Socket sock = new Socket()) {
sock.connect(addr, 100);
}
catch (ConnectException e) {
return true;
}
catch (IOException e) {
return false;
}

return false;
}
{code}

2) Maximal interval to check previous node in the ring is:

{code:java}
TcpDiscoveryHandshakeResponse res =
new TcpDiscoveryHandshakeResponse(...);

...

// We got message from previous in less than double 
connection check interval.
boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now;

if (ok) {
// Check case when previous node suddenly died. 
This will speed up
// node failing.
...

}

res.previousNodeAlive(ok);
{code}



  was:
Backward checking of failed node rely on hardcoced timeout 100ms:

{code:java}
private boolean ServerImpls.isConnectionRefused(SocketAddress addr) {
try (Socket sock = new Socket()) {
sock.connect(addr, 100);
}
catch (ConnectException e) {
return true;
}
catch (IOException e) {
return false;
}

return false;
}
{code}

We should make it bound to configurable params like 
IgniteConfiguration.failureDetectionTimeout.

Also, the maximal interval to chech previous node is 


Summary: Fix backward checking of failed node.  (was: Remove hardcoded 
values/timeouts from backward checking of failed node.)

> Fix backward checking of failed node.
> -
>
> Key: IGNITE-13016
> URL: https://issues.apache.org/jira/browse/IGNITE-13016
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
>
> We should fix 3 drawbacks in the backward checking of failed node:
> 1) It has hardcoded timeout 100ms:
> {code:java}
> private boolean ServerImpls.isConnectionRefused(SocketAddress addr) {
> try (Socket sock = new Socket()) {
> sock.connect(addr, 100);
> }
> catch (ConnectException e) {
> return true;
> }
> catch (IOException e) {
> return false;
> }
> return false;
> }
> {code}
> 2) Maximal interval to check previous node in the ring is:
> {code:java}
> TcpDiscoveryHandshakeResponse res =
> new TcpDiscoveryHandshakeResponse(...);
> ...
> // We got message from previous in less than double 
> connection check interval.
> boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now;
> if (ok) {
> // Check case when previous node suddenly died. 
> This will speed up
> // node failing.
> ...
> }
> res.previousNodeAlive(ok);
> {code}



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


[jira] [Updated] (IGNITE-13016) Fix backward checking of failed node.

2020-05-15 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13016:
--
Description: 
We should fix 3 drawbacks in the backward checking of failed node:

1) It has hardcoded timeout 100ms:
{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
sock.connect(addr, 100);
   ...
}
{code}

2) Maximal interval to check previous node should be reconsidered, bound to 
configurable params:
{code:java}
   TcpDiscoveryHandshakeResponse res = new TcpDiscoveryHandshakeResponse(...);

   ...

   // We got message from previous in less than double connection check 
interval.
   boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; //Why '2 * 
CON_CHECK_INTERVAL', not a failureDetectionTimeout.

   if (ok) {
  // Check case when previous node suddenly died. This will speed up
  // node failing.

  ...
}

res.previousNodeAlive(ok);
{code}

3) Any negative result of the connection checking should be considered as node 
failed. Currently, we look only at refused connection. Any other exceptions, 
including a timeout, are treated as living connection: 

{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
   catch (ConnectException e) {
  return true;
   }
   catch (IOException e) {
  return false;//Why a timeout doesn't mean lost connection?
   }

   return false;
}
{code}

  was:
We should fix 3 drawbacks in the backward checking of failed node:

1) It has hardcoded timeout 100ms:
{code:java}
private boolean ServerImpls.isConnectionRefused(SocketAddress addr) {
try (Socket sock = new Socket()) {
sock.connect(addr, 100);
}
catch (ConnectException e) {
return true;
}
catch (IOException e) {
return false;
}

return false;
}
{code}

2) Maximal interval to check previous node in the ring is:

{code:java}
TcpDiscoveryHandshakeResponse res =
new TcpDiscoveryHandshakeResponse(...);

...

// We got message from previous in less than double 
connection check interval.
boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now;

if (ok) {
// Check case when previous node suddenly died. 
This will speed up
// node failing.
...

}

res.previousNodeAlive(ok);
{code}




> Fix backward checking of failed node.
> -
>
> Key: IGNITE-13016
> URL: https://issues.apache.org/jira/browse/IGNITE-13016
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
>
> We should fix 3 drawbacks in the backward checking of failed node:
> 1) It has hardcoded timeout 100ms:
> {code:java}
> private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
>...
> sock.connect(addr, 100);
>...
> }
> {code}
> 2) Maximal interval to check previous node should be reconsidered, bound to 
> configurable params:
> {code:java}
>TcpDiscoveryHandshakeResponse res = new TcpDiscoveryHandshakeResponse(...);
>...
>// We got message from previous in less than double connection check 
> interval.
>boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; //Why '2 * 
> CON_CHECK_INTERVAL', not a failureDetectionTimeout.
>if (ok) {
>   // Check case when previous node suddenly died. This will speed up
>   // node failing.
>   ...
> }
> res.previousNodeAlive(ok);
> {code}
> 3) Any negative result of the connection checking should be considered as 
> node failed. Currently, we look only at refused connection. Any other 
> exceptions, including a timeout, are treated as living connection: 
> {code:java}
> private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
>...
>catch (ConnectException e) {
>   return true;
>}
>catch (IOException e) {
>   return false;//Why a timeout doesn't mean lost connection?
>}
>return false;
> }
> {code}



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


[jira] [Updated] (IGNITE-13016) Fix backward checking of failed node.

2020-05-15 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13016:
--
Description: 
We should fix 3 drawbacks in the backward checking of failed node:

1) It has hardcoded timeout 100ms:
{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
sock.connect(addr, 100);
   ...
}
{code}

2) Maximal interval to check previous node should be reconsidered. It should 
rely on configurable param:
{code:java}
   TcpDiscoveryHandshakeResponse res = new TcpDiscoveryHandshakeResponse(...);
   ...
   // We got message from previous in less than double connection check 
interval.
   boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; //Why '2 * 
CON_CHECK_INTERVAL', not a failureDetectionTimeout.

   if (ok) {
  // Check case when previous node suddenly died. This will speed up
  // node failing.
  ...
}

res.previousNodeAlive(ok);
{code}

3) Any negative result of the connection checking should be considered as node 
failed. Currently, we look only at refused connection. Any other exceptions, 
including a timeout, are treated as living connection: 

{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
   catch (ConnectException e) {
  return true;
   }
   catch (IOException e) {
  return false;//Why a timeout doesn't mean lost connection?
   }

   return false;
}
{code}

  was:
We should fix 3 drawbacks in the backward checking of failed node:

1) It has hardcoded timeout 100ms:
{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
sock.connect(addr, 100);
   ...
}
{code}

2) Maximal interval to check previous node should be reconsidered, bound to 
configurable params:
{code:java}
   TcpDiscoveryHandshakeResponse res = new TcpDiscoveryHandshakeResponse(...);

   ...

   // We got message from previous in less than double connection check 
interval.
   boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; //Why '2 * 
CON_CHECK_INTERVAL', not a failureDetectionTimeout.

   if (ok) {
  // Check case when previous node suddenly died. This will speed up
  // node failing.

  ...
}

res.previousNodeAlive(ok);
{code}

3) Any negative result of the connection checking should be considered as node 
failed. Currently, we look only at refused connection. Any other exceptions, 
including a timeout, are treated as living connection: 

{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
   catch (ConnectException e) {
  return true;
   }
   catch (IOException e) {
  return false;//Why a timeout doesn't mean lost connection?
   }

   return false;
}
{code}


> Fix backward checking of failed node.
> -
>
> Key: IGNITE-13016
> URL: https://issues.apache.org/jira/browse/IGNITE-13016
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
>
> We should fix 3 drawbacks in the backward checking of failed node:
> 1) It has hardcoded timeout 100ms:
> {code:java}
> private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
>...
> sock.connect(addr, 100);
>...
> }
> {code}
> 2) Maximal interval to check previous node should be reconsidered. It should 
> rely on configurable param:
> {code:java}
>TcpDiscoveryHandshakeResponse res = new TcpDiscoveryHandshakeResponse(...);
>...
>// We got message from previous in less than double connection check 
> interval.
>boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; //Why '2 * 
> CON_CHECK_INTERVAL', not a failureDetectionTimeout.
>if (ok) {
>   // Check case when previous node suddenly died. This will speed up
>   // node failing.
>   ...
> }
> res.previousNodeAlive(ok);
> {code}
> 3) Any negative result of the connection checking should be considered as 
> node failed. Currently, we look only at refused connection. Any other 
> exceptions, including a timeout, are treated as living connection: 
> {code:java}
> private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
>...
>catch (ConnectException e) {
>   return true;
>}
>catch (IOException e) {
>   return false;//Why a timeout doesn't mean lost connection?
>}
>return false;
> }
> {code}



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


[jira] [Updated] (IGNITE-13017) Remove hardcoded delay from re-marking failed node as alive.

2020-05-15 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13017:
--
Labels: iep-45  (was: )

> Remove hardcoded delay from re-marking failed node as alive.
> 
>
> Key: IGNITE-13017
> URL: https://issues.apache.org/jira/browse/IGNITE-13017
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
>
> We should remove hardcoded timeout from:
> {code:java}
> boolean 
> ServerImpl.CrossRingMessageSendState.markLastFailedNodeAlive() {
> if (state == RingMessageSendState.FORWARD_PASS || state == 
> RingMessageSendState.BACKWARD_PASS) {
>...
> if (--failedNodes <= 0) {
> ...
> state = RingMessageSendState.STARTING_POINT;
> try {
> Thread.sleep(200);
> }
> catch (InterruptedException e) {
> Thread.currentThread().interrupt();
> }
> }
> return true;
> }
> return false;
> }
> {code}
> This can bring additional 200ms to duration of failed node detection.



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


[jira] [Updated] (IGNITE-13017) Remove hardcoded delay from re-marking failed node as alive.

2020-05-15 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13017:
--
Summary: Remove hardcoded delay from re-marking failed node as alive.  
(was: Remove delay of 200ms from re-marking failed node as alive.)

> Remove hardcoded delay from re-marking failed node as alive.
> 
>
> Key: IGNITE-13017
> URL: https://issues.apache.org/jira/browse/IGNITE-13017
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>
> We should remove hardcoded timeout from:
> {code:java}
> boolean 
> ServerImpl.CrossRingMessageSendState.markLastFailedNodeAlive() {
> if (state == RingMessageSendState.FORWARD_PASS || state == 
> RingMessageSendState.BACKWARD_PASS) {
>...
> if (--failedNodes <= 0) {
> ...
> state = RingMessageSendState.STARTING_POINT;
> try {
> Thread.sleep(200);
> }
> catch (InterruptedException e) {
> Thread.currentThread().interrupt();
> }
> }
> return true;
> }
> return false;
> }
> {code}
> This can bring additional 200ms to duration of failed node detection.



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


[jira] [Created] (IGNITE-13017) Remove delay of 200ms from re-marking failed node as alive.

2020-05-15 Thread Vladimir Steshin (Jira)
Vladimir Steshin created IGNITE-13017:
-

 Summary: Remove delay of 200ms from re-marking failed node as 
alive.
 Key: IGNITE-13017
 URL: https://issues.apache.org/jira/browse/IGNITE-13017
 Project: Ignite
  Issue Type: Sub-task
Reporter: Vladimir Steshin
Assignee: Vladimir Steshin


We should remove hardcoded timeout from:

{code:java}
boolean ServerImpl.CrossRingMessageSendState.markLastFailedNodeAlive() {
if (state == RingMessageSendState.FORWARD_PASS || state == 
RingMessageSendState.BACKWARD_PASS) {
   ...

if (--failedNodes <= 0) {
...

state = RingMessageSendState.STARTING_POINT;

try {
Thread.sleep(200);
}
catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}

return true;
}

return false;
}
{code}

This can bring additional 200ms to duration of failed node detection.



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


[jira] [Updated] (IGNITE-13016) Remove hardcoded values/timeouts from backward checking of failed node.

2020-05-15 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13016:
--
Labels: iep-45  (was: )

> Remove hardcoded values/timeouts from backward checking of failed node.
> ---
>
> Key: IGNITE-13016
> URL: https://issues.apache.org/jira/browse/IGNITE-13016
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
>
> Backward checking of failed node rely on hardcoced timeout 100ms:
> {code:java}
> private boolean ServerImpls.isConnectionRefused(SocketAddress addr) {
> try (Socket sock = new Socket()) {
> sock.connect(addr, 100);
> }
> catch (ConnectException e) {
> return true;
> }
> catch (IOException e) {
> return false;
> }
> return false;
> }
> {code}
> We should make it bound to configurable params like 
> IgniteConfiguration.failureDetectionTimeout



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


[jira] [Created] (IGNITE-13016) Remove hardcoded values/timeouts from backward checking of failed node.

2020-05-15 Thread Vladimir Steshin (Jira)
Vladimir Steshin created IGNITE-13016:
-

 Summary: Remove hardcoded values/timeouts from backward checking 
of failed node.
 Key: IGNITE-13016
 URL: https://issues.apache.org/jira/browse/IGNITE-13016
 Project: Ignite
  Issue Type: Sub-task
Reporter: Vladimir Steshin
Assignee: Vladimir Steshin


Backward checking of failed node rely on hardcoced timeout 100ms:

{code:java}
private boolean ServerImpls.isConnectionRefused(SocketAddress addr) {
try (Socket sock = new Socket()) {
sock.connect(addr, 100);
}
catch (ConnectException e) {
return true;
}
catch (IOException e) {
return false;
}

return false;
}
{code}

We should make it bound to configurable params like 
IgniteConfiguration.failureDetectionTimeout




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


[jira] [Updated] (IGNITE-13016) Fix backward checking of failed node.

2020-05-15 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13016:
--
Description: 
We should fix 3 drawbacks in the backward checking of failed node:

1) It has hardcoded timeout 100ms:
{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
sock.connect(addr, 100);
   ...
}
{code}


2) Maximal interval to check previous node should be reconsidered. It should 
rely on configurable param:
{code:java}
   TcpDiscoveryHandshakeResponse res = new TcpDiscoveryHandshakeResponse(...);
   ...
   // We got message from previous in less than double connection check 
interval.
   boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; //Why '2 * 
CON_CHECK_INTERVAL', not a failureDetectionTimeout.

   if (ok) {
  // Check case when previous node suddenly died. This will speed up
  // node failing.
  ...
}

res.previousNodeAlive(ok);
{code}


3) Any negative result of the connection checking should be considered as node 
failed. Currently, we look only at refused connection. Any other exceptions, 
including a timeout, are treated as living connection: 

{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
   catch (ConnectException e) {
  return true;
   }
   catch (IOException e) {
  return false;//Why a timeout doesn't mean lost connection?
   }

   return false;
}
{code}

  was:
We should fix 3 drawbacks in the backward checking of failed node:

1) It has hardcoded timeout 100ms:
{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
sock.connect(addr, 100);
   ...
}
{code}

2) Maximal interval to check previous node should be reconsidered. It should 
rely on configurable param:
{code:java}
   TcpDiscoveryHandshakeResponse res = new TcpDiscoveryHandshakeResponse(...);
   ...
   // We got message from previous in less than double connection check 
interval.
   boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; //Why '2 * 
CON_CHECK_INTERVAL', not a failureDetectionTimeout.

   if (ok) {
  // Check case when previous node suddenly died. This will speed up
  // node failing.
  ...
}

res.previousNodeAlive(ok);
{code}

3) Any negative result of the connection checking should be considered as node 
failed. Currently, we look only at refused connection. Any other exceptions, 
including a timeout, are treated as living connection: 

{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
   catch (ConnectException e) {
  return true;
   }
   catch (IOException e) {
  return false;//Why a timeout doesn't mean lost connection?
   }

   return false;
}
{code}


> Fix backward checking of failed node.
> -
>
> Key: IGNITE-13016
> URL: https://issues.apache.org/jira/browse/IGNITE-13016
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
>
> We should fix 3 drawbacks in the backward checking of failed node:
> 1) It has hardcoded timeout 100ms:
> {code:java}
> private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
>...
> sock.connect(addr, 100);
>...
> }
> {code}
> 2) Maximal interval to check previous node should be reconsidered. It should 
> rely on configurable param:
> {code:java}
>TcpDiscoveryHandshakeResponse res = new TcpDiscoveryHandshakeResponse(...);
>...
>// We got message from previous in less than double connection check 
> interval.
>boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; //Why '2 * 
> CON_CHECK_INTERVAL', not a failureDetectionTimeout.
>if (ok) {
>   // Check case when previous node suddenly died. This will speed up
>   // node failing.
>   ...
> }
> res.previousNodeAlive(ok);
> {code}
> 3) Any negative result of the connection checking should be considered as 
> node failed. Currently, we look only at refused connection. Any other 
> exceptions, including a timeout, are treated as living connection: 
> {code:java}
> private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
>...
>catch (ConnectException e) {
>   return true;
>}
>catch (IOException e) {
>   return false;//Why a timeout doesn't mean lost connection?
>}
>return false;
> }
> {code}



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


[jira] [Updated] (IGNITE-13016) Fix backward checking of failed node.

2020-05-15 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13016:
--
Description: 
We should fix 3 drawbacks in the backward checking of failed node:

1) We should replace hardcoded timeout 100ms with a parameter like 
failureDetectionTimeout:
{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
sock.connect(addr, 100);
   ...
}
{code}


2) Maximal interval to check previous node should be reconsidered. It should 
rely on configurable param:
{code:java}
   TcpDiscoveryHandshakeResponse res = new TcpDiscoveryHandshakeResponse(...);
   ...
   // We got message from previous in less than double connection check 
interval.
   boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; //Why '2 * 
CON_CHECK_INTERVAL', not a failureDetectionTimeout.

   if (ok) {
  // Check case when previous node suddenly died. This will speed up
  // node failing.
  ...
}

res.previousNodeAlive(ok);
{code}


3) Any negative result of the connection checking should be considered as node 
failed. Currently, we look only at refused connection. Any other exceptions, 
including a timeout, are treated as living connection: 

{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
   catch (ConnectException e) {
  return true;
   }
   catch (IOException e) {
  return false;//Why a timeout doesn't mean lost connection?
   }

   return false;
}
{code}


  was:
We should fix 3 drawbacks in the backward checking of failed node:

1) It has hardcoded timeout 100ms:
{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
sock.connect(addr, 100);
   ...
}
{code}


2) Maximal interval to check previous node should be reconsidered. It should 
rely on configurable param:
{code:java}
   TcpDiscoveryHandshakeResponse res = new TcpDiscoveryHandshakeResponse(...);
   ...
   // We got message from previous in less than double connection check 
interval.
   boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; //Why '2 * 
CON_CHECK_INTERVAL', not a failureDetectionTimeout.

   if (ok) {
  // Check case when previous node suddenly died. This will speed up
  // node failing.
  ...
}

res.previousNodeAlive(ok);
{code}


3) Any negative result of the connection checking should be considered as node 
failed. Currently, we look only at refused connection. Any other exceptions, 
including a timeout, are treated as living connection: 

{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
   catch (ConnectException e) {
  return true;
   }
   catch (IOException e) {
  return false;//Why a timeout doesn't mean lost connection?
   }

   return false;
}
{code}


> Fix backward checking of failed node.
> -
>
> Key: IGNITE-13016
> URL: https://issues.apache.org/jira/browse/IGNITE-13016
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
>
> We should fix 3 drawbacks in the backward checking of failed node:
> 1) We should replace hardcoded timeout 100ms with a parameter like 
> failureDetectionTimeout:
> {code:java}
> private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
>...
> sock.connect(addr, 100);
>...
> }
> {code}
> 2) Maximal interval to check previous node should be reconsidered. It should 
> rely on configurable param:
> {code:java}
>TcpDiscoveryHandshakeResponse res = new TcpDiscoveryHandshakeResponse(...);
>...
>// We got message from previous in less than double connection check 
> interval.
>boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; //Why '2 * 
> CON_CHECK_INTERVAL', not a failureDetectionTimeout.
>if (ok) {
>   // Check case when previous node suddenly died. This will speed up
>   // node failing.
>   ...
> }
> res.previousNodeAlive(ok);
> {code}
> 3) Any negative result of the connection checking should be considered as 
> node failed. Currently, we look only at refused connection. Any other 
> exceptions, including a timeout, are treated as living connection: 
> {code:java}
> private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
>...
>catch (ConnectException e) {
>   return true;
>}
>catch (IOException e) {
>   return false;//Why a timeout doesn't mean lost connection?
>}
>return false;
> }
> {code}



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


[jira] [Created] (IGNITE-13018) Get rid of duplicated checking of failed node.

2020-05-15 Thread Vladimir Steshin (Jira)
Vladimir Steshin created IGNITE-13018:
-

 Summary: Get rid of duplicated checking of failed node.
 Key: IGNITE-13018
 URL: https://issues.apache.org/jira/browse/IGNITE-13018
 Project: Ignite
  Issue Type: Sub-task
Reporter: Vladimir Steshin
Assignee: Vladimir Steshin


Failed node checking should be simplified to one step: ping node (send a 
message) from previous one in the ring and wait for response within 
IgniteConfiguration.failureDetectionTimeout. If node doesn't respond, we should 
consider it failed. Extra steps of connection checking may seriously delay 
failure detection, bring confusion and weird behavior.



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


[jira] [Updated] (IGNITE-13018) Get rid of duplicated checking of failed node.

2020-05-15 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13018:
--
Labels: iep-45  (was: )

> Get rid of duplicated checking of failed node.
> --
>
> Key: IGNITE-13018
> URL: https://issues.apache.org/jira/browse/IGNITE-13018
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
>
> Failed node checking should be simplified to one step: ping node (send a 
> message) from previous one in the ring and wait for response within 
> IgniteConfiguration.failureDetectionTimeout. If node doesn't respond, we 
> should consider it failed. Extra steps of connection checking may seriously 
> delay failure detection, bring confusion and weird behavior.



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


[jira] [Updated] (IGNITE-13016) Remove hardcoded values/timeouts from backward checking of failed node.

2020-05-15 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13016:
--
Description: 
Backward checking of failed node rely on hardcoced timeout 100ms:

{code:java}
private boolean ServerImpls.isConnectionRefused(SocketAddress addr) {
try (Socket sock = new Socket()) {
sock.connect(addr, 100);
}
catch (ConnectException e) {
return true;
}
catch (IOException e) {
return false;
}

return false;
}
{code}

We should make it bound to configurable params like 
IgniteConfiguration.failureDetectionTimeout.

Also, the maximal interval to chech previous node is 


  was:
Backward checking of failed node rely on hardcoced timeout 100ms:

{code:java}
private boolean ServerImpls.isConnectionRefused(SocketAddress addr) {
try (Socket sock = new Socket()) {
sock.connect(addr, 100);
}
catch (ConnectException e) {
return true;
}
catch (IOException e) {
return false;
}

return false;
}
{code}

We should make it bound to configurable params like 
IgniteConfiguration.failureDetectionTimeout



> Remove hardcoded values/timeouts from backward checking of failed node.
> ---
>
> Key: IGNITE-13016
> URL: https://issues.apache.org/jira/browse/IGNITE-13016
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
>
> Backward checking of failed node rely on hardcoced timeout 100ms:
> {code:java}
> private boolean ServerImpls.isConnectionRefused(SocketAddress addr) {
> try (Socket sock = new Socket()) {
> sock.connect(addr, 100);
> }
> catch (ConnectException e) {
> return true;
> }
> catch (IOException e) {
> return false;
> }
> return false;
> }
> {code}
> We should make it bound to configurable params like 
> IgniteConfiguration.failureDetectionTimeout.
> Also, the maximal interval to chech previous node is 



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


[jira] [Updated] (IGNITE-13016) Fix backward checking of failed node.

2020-05-15 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13016:
--
Description: 
We should fix 3 drawbacks in the backward checking of failed node:

1) We should replace hardcoded timeout 100ms with a parameter like 
failureDetectionTimeout:
{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
sock.connect(addr, 100);
   ...
}
{code}


2) Maximal interval to check previous node should be reconsidered. It should 
rely on configurable param like failureDetectionTimeout:
{code:java}
   TcpDiscoveryHandshakeResponse res = new TcpDiscoveryHandshakeResponse(...);
   ...
   // We got message from previous in less than double connection check 
interval.
   boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; //Why '2 * 
CON_CHECK_INTERVAL', not a failureDetectionTimeout?

   if (ok) {
  // Check case when previous node suddenly died. This will speed up
  // node failing.
  ...
}

res.previousNodeAlive(ok);
{code}


3) Any negative result of the connection checking should be considered as node 
failed. Currently, we look only at refused connection. Any other exceptions, 
including a timeout, are treated as living connection: 

{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
   catch (ConnectException e) {
  return true;
   }
   catch (IOException e) {
  return false;//Why a timeout doesn't mean lost connection?
   }

   return false;
}
{code}


  was:
We should fix 3 drawbacks in the backward checking of failed node:

1) We should replace hardcoded timeout 100ms with a parameter like 
failureDetectionTimeout:
{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
sock.connect(addr, 100);
   ...
}
{code}


2) Maximal interval to check previous node should be reconsidered. It should 
rely on configurable param:
{code:java}
   TcpDiscoveryHandshakeResponse res = new TcpDiscoveryHandshakeResponse(...);
   ...
   // We got message from previous in less than double connection check 
interval.
   boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; //Why '2 * 
CON_CHECK_INTERVAL', not a failureDetectionTimeout.

   if (ok) {
  // Check case when previous node suddenly died. This will speed up
  // node failing.
  ...
}

res.previousNodeAlive(ok);
{code}


3) Any negative result of the connection checking should be considered as node 
failed. Currently, we look only at refused connection. Any other exceptions, 
including a timeout, are treated as living connection: 

{code:java}
private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
   ...
   catch (ConnectException e) {
  return true;
   }
   catch (IOException e) {
  return false;//Why a timeout doesn't mean lost connection?
   }

   return false;
}
{code}



> Fix backward checking of failed node.
> -
>
> Key: IGNITE-13016
> URL: https://issues.apache.org/jira/browse/IGNITE-13016
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
>
> We should fix 3 drawbacks in the backward checking of failed node:
> 1) We should replace hardcoded timeout 100ms with a parameter like 
> failureDetectionTimeout:
> {code:java}
> private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
>...
> sock.connect(addr, 100);
>...
> }
> {code}
> 2) Maximal interval to check previous node should be reconsidered. It should 
> rely on configurable param like failureDetectionTimeout:
> {code:java}
>TcpDiscoveryHandshakeResponse res = new TcpDiscoveryHandshakeResponse(...);
>...
>// We got message from previous in less than double connection check 
> interval.
>boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; //Why '2 * 
> CON_CHECK_INTERVAL', not a failureDetectionTimeout?
>if (ok) {
>   // Check case when previous node suddenly died. This will speed up
>   // node failing.
>   ...
> }
> res.previousNodeAlive(ok);
> {code}
> 3) Any negative result of the connection checking should be considered as 
> node failed. Currently, we look only at refused connection. Any other 
> exceptions, including a timeout, are treated as living connection: 
> {code:java}
> private boolean ServerImpl.isConnectionRefused(SocketAddress addr) {
>...
>catch (ConnectException e) {
>   return true;
>}
>catch (IOException e) {
>   return false;//Why a timeout doesn't mean lost connection?
>}
>return false;
> }
> {code}



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


[jira] [Updated] (IGNITE-13012) Make node connection checking rely on the configuration. Simplify node ping routine.

2020-05-14 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:
--
Labels: iep-45  (was: )

> Make node connection checking rely on the configuration. Simplify node ping 
> routine.
> 
>
> Key: IGNITE-13012
> URL: https://issues.apache.org/jira/browse/IGNITE-13012
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
>
> Current noted-to-node connection checking has several drawbacks:
> 1)Minimal connection checking interval is not bound to failure detection 
> parameters: 
> static int ServerImpls.CON_CHECK_INTERVAL = 500;
> 2)Connection checking is made as ability of periodical message sending 
> (TcpDiscoveryConnectionCheckMessage). It is bound to own time (ServerImpl. 
> RingMessageWorker.lastTimeConnCheckMsgSent), not to common time of last sent 
> message. This is weird because any discovery message actually checks 
> connection. And TpDiscoveryConnectionCheckMessage is just an addition when 
> message queue is empty for a long time.
> 3)Period of Node-to-Node connection checking can be sometimes shortened 
> for strange reason: if no sent or received message appears within 
> failureDetectionTimeout. Here, despite we have minimal period of connection 
> checking (ServerImpls.CON_CHECK_INTERVAL), we can also send 
> TpDiscoveryConnectionCheckMessage before this period exhausted. Moreover, 
> this premature node ping relies also on time of last received message. 
> Imagine: if node 2 receives no message from node 1 within some time it 
> decides to do extra ping node 3 not waiting for regular ping interval. Such 
> behavior makes confusion and gives no additional guaranties.
> 4)If #3 happens, node writes in the log on INFO: “Local node seems to be 
> disconnected from topology …” whereas it is not actually disconnected. User 
> can see this message if he typed failureDetectionTimeout < 500ms. I wouldn’t 
> like seeing INFO in a log saying a node is might be disconnected. This sounds 
> like some troubles raised in network. But not as everything is OK. 
> Suggestions:
> 1)Make connection check interval be based on failureDetectionTimeout or 
> similar params.
> 2)Make connection check interval rely on common time of last sent 
> message. Not on dedicated time.
> 3)Remove additional, random, quickened connection checking.
> 4)Do not worry user with “Node disconnected” when everything is OK.



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


[jira] [Created] (IGNITE-13012) Make node connection checking rely on the configuration. Simplify node ping routine.

2020-05-14 Thread Vladimir Steshin (Jira)
Vladimir Steshin created IGNITE-13012:
-

 Summary: Make node connection checking rely on the configuration. 
Simplify node ping routine.
 Key: IGNITE-13012
 URL: https://issues.apache.org/jira/browse/IGNITE-13012
 Project: Ignite
  Issue Type: Improvement
Reporter: Vladimir Steshin
Assignee: Vladimir Steshin



Current noted-to-node connection checking has several drawbacks:
1)  Minimal connection checking interval is not bound to failure detection 
parameters: 
static int ServerImpls.CON_CHECK_INTERVAL = 500;
2)  Connection checking is made as ability of periodical message sending 
(TcpDiscoveryConnectionCheckMessage). It is bound to own time (ServerImpl. 
RingMessageWorker.lastTimeConnCheckMsgSent), not to common time of last sent 
message. This is weird because any discovery message actually checks 
connection. And TpDiscoveryConnectionCheckMessage is just an addition when 
message queue is empty for a long time.
3)  Period of Node-to-Node connection checking can be sometimes shortened 
for strange reason: if no sent or received message appears within 
failureDetectionTimeout. Here, despite we have minimal period of connection 
checking (ServerImpls.CON_CHECK_INTERVAL), we can also send 
TpDiscoveryConnectionCheckMessage before this period exhausted. Moreover, this 
premature node ping relies also on time of last received message. Imagine: if 
node 2 receives no message from node 1 within some time it decides to do extra 
ping node 3 not waiting for regular ping interval. Such behavior makes 
confusion and gives no additional guaranties.
4)  If #3 happens, node writes in the log on INFO: “Local node seems to be 
disconnected from topology …” whereas it is not actually disconnected. User can 
see this message if he typed failureDetectionTimeout < 500ms. I wouldn’t like 
seeing INFO in a log saying a node is might be disconnected. This sounds like 
some troubles raised in network. But not as everything is OK. 

Suggestions:
1)  Make connection check interval be based on failureDetectionTimeout or 
similar params.
2)  Make connection check interval rely on common time of last sent 
message. Not on dedicated time.
3)  Remove additional, random, quickened connection checking.
4)  Do not worry user with “Node disconnected” when everything is OK.



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


[jira] [Updated] (IGNITE-13012) Make node connection checking rely on the configuration. Simplify node ping routine.

2020-05-14 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:
--
Description: 
Current noted-to-node connection checking has several drawbacks:

1)  Minimal connection checking interval is not bound to failure detection 
parameters: 
static int ServerImpls.CON_CHECK_INTERVAL = 500;

2)  Connection checking is made as ability of periodical message sending 
(TcpDiscoveryConnectionCheckMessage). It is bound to own time (ServerImpl. 
RingMessageWorker.lastTimeConnCheckMsgSent), not to common time of last sent 
message. This is weird because any discovery message actually checks 
connection. And TpDiscoveryConnectionCheckMessage is just an addition when 
message queue is empty for a long time.

3)  Period of Node-to-Node connection checking can be sometimes shortened 
for strange reason: if no sent or received message appears within 
failureDetectionTimeout. Here, despite we have minimal period of connection 
checking (ServerImpls.CON_CHECK_INTERVAL), we can also send 
TpDiscoveryConnectionCheckMessage before this period exhausted. Moreover, this 
premature node ping relies also on time of last received message. Imagine: if 
node 2 receives no message from node 1 within some time it decides to do extra 
ping node 3 not waiting for regular ping interval. Such behavior makes 
confusion and gives no additional guaranties.

4)  If #3 happens, node writes in the log on INFO: “Local node seems to be 
disconnected from topology …” whereas it is not actually disconnected. User can 
see this message if he typed failureDetectionTimeout < 500ms. I wouldn’t like 
seeing INFO in a log saying a node is might be disconnected. This sounds like 
some troubles raised in network. But not as everything is OK. 

Suggestions:
1)  Make connection check interval be based on failureDetectionTimeout or 
similar params.
2)  Make connection check interval rely on common time of last sent 
message. Not on dedicated time.
3)  Remove additional, random, quickened connection checking.
4)  Do not worry user with “Node disconnected” when everything is OK.

  was:
Current noted-to-node connection checking has several drawbacks:
1)  Minimal connection checking interval is not bound to failure detection 
parameters: 
static int ServerImpls.CON_CHECK_INTERVAL = 500;

2)  Connection checking is made as ability of periodical message sending 
(TcpDiscoveryConnectionCheckMessage). It is bound to own time (ServerImpl. 
RingMessageWorker.lastTimeConnCheckMsgSent), not to common time of last sent 
message. This is weird because any discovery message actually checks 
connection. And TpDiscoveryConnectionCheckMessage is just an addition when 
message queue is empty for a long time.

3)  Period of Node-to-Node connection checking can be sometimes shortened 
for strange reason: if no sent or received message appears within 
failureDetectionTimeout. Here, despite we have minimal period of connection 
checking (ServerImpls.CON_CHECK_INTERVAL), we can also send 
TpDiscoveryConnectionCheckMessage before this period exhausted. Moreover, this 
premature node ping relies also on time of last received message. Imagine: if 
node 2 receives no message from node 1 within some time it decides to do extra 
ping node 3 not waiting for regular ping interval. Such behavior makes 
confusion and gives no additional guaranties.

4)  If #3 happens, node writes in the log on INFO: “Local node seems to be 
disconnected from topology …” whereas it is not actually disconnected. User can 
see this message if he typed failureDetectionTimeout < 500ms. I wouldn’t like 
seeing INFO in a log saying a node is might be disconnected. This sounds like 
some troubles raised in network. But not as everything is OK. 

Suggestions:
1)  Make connection check interval be based on failureDetectionTimeout or 
similar params.
2)  Make connection check interval rely on common time of last sent 
message. Not on dedicated time.
3)  Remove additional, random, quickened connection checking.
4)  Do not worry user with “Node disconnected” when everything is OK.


> Make node connection checking rely on the configuration. Simplify node ping 
> routine.
> 
>
> Key: IGNITE-13012
> URL: https://issues.apache.org/jira/browse/IGNITE-13012
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
>
> Current noted-to-node connection checking has several drawbacks:
> 1)Minimal connection checking interval is not bound to failure detection 
> parameters: 
> static int ServerImpls.CON_CHECK_INTERVAL = 500;
> 2)Connection checking is made as 

[jira] [Updated] (IGNITE-13012) Make node connection checking rely on the configuration. Simplify node ping routine.

2020-05-14 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:
--
Description: 
Current noted-to-node connection checking has several drawbacks:
1)  Minimal connection checking interval is not bound to failure detection 
parameters: 
static int ServerImpls.CON_CHECK_INTERVAL = 500;

2)  Connection checking is made as ability of periodical message sending 
(TcpDiscoveryConnectionCheckMessage). It is bound to own time (ServerImpl. 
RingMessageWorker.lastTimeConnCheckMsgSent), not to common time of last sent 
message. This is weird because any discovery message actually checks 
connection. And TpDiscoveryConnectionCheckMessage is just an addition when 
message queue is empty for a long time.

3)  Period of Node-to-Node connection checking can be sometimes shortened 
for strange reason: if no sent or received message appears within 
failureDetectionTimeout. Here, despite we have minimal period of connection 
checking (ServerImpls.CON_CHECK_INTERVAL), we can also send 
TpDiscoveryConnectionCheckMessage before this period exhausted. Moreover, this 
premature node ping relies also on time of last received message. Imagine: if 
node 2 receives no message from node 1 within some time it decides to do extra 
ping node 3 not waiting for regular ping interval. Such behavior makes 
confusion and gives no additional guaranties.

4)  If #3 happens, node writes in the log on INFO: “Local node seems to be 
disconnected from topology …” whereas it is not actually disconnected. User can 
see this message if he typed failureDetectionTimeout < 500ms. I wouldn’t like 
seeing INFO in a log saying a node is might be disconnected. This sounds like 
some troubles raised in network. But not as everything is OK. 

Suggestions:
1)  Make connection check interval be based on failureDetectionTimeout or 
similar params.
2)  Make connection check interval rely on common time of last sent 
message. Not on dedicated time.
3)  Remove additional, random, quickened connection checking.
4)  Do not worry user with “Node disconnected” when everything is OK.

  was:
Current noted-to-node connection checking has several drawbacks:
1)  Minimal connection checking interval is not bound to failure detection 
parameters: 
static int ServerImpls.CON_CHECK_INTERVAL = 500;

2)  Connection checking is made as ability of periodical message sending 
(TcpDiscoveryConnectionCheckMessage). It is bound to own time (ServerImpl. 
RingMessageWorker.lastTimeConnCheckMsgSent), not to common time of last sent 
message. This is weird because any discovery message actually checks 
connection. And TpDiscoveryConnectionCheckMessage is just an addition when 
message queue is empty for a long time.

3)  Period of Node-to-Node connection checking can be sometimes shortened 
for strange reason: if no sent or received message appears within 
failureDetectionTimeout. Here, despite we have minimal period of connection 
checking (ServerImpls.CON_CHECK_INTERVAL), we can also send 
TpDiscoveryConnectionCheckMessage before this period exhausted. Moreover, this 
premature node ping relies also on time of last received message. Imagine: if 
node 2 receives no message from node 1 within some time it decides to do extra 
ping node 3 not waiting for regular ping interval. Such behavior makes 
confusion and gives no additional guaranties.
See `ServerImpl.connectionChecking()`

4)  If #3 happens, node writes in the log on INFO: “Local node seems to be 
disconnected from topology …” whereas it is not actually disconnected. User can 
see this message if he typed failureDetectionTimeout < 500ms. I wouldn’t like 
seeing INFO in a log saying a node is might be disconnected. This sounds like 
some troubles raised in network. But not as everything is OK. 

Suggestions:
1)  Make connection check interval be based on failureDetectionTimeout or 
similar params.
2)  Make connection check interval rely on common time of last sent 
message. Not on dedicated time.
3)  Remove additional, random, quickened connection checking.
4)  Do not worry user with “Node disconnected” when everything is OK.


> Make node connection checking rely on the configuration. Simplify node ping 
> routine.
> 
>
> Key: IGNITE-13012
> URL: https://issues.apache.org/jira/browse/IGNITE-13012
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
>
> Current noted-to-node connection checking has several drawbacks:
> 1)Minimal connection checking interval is not bound to failure detection 
> parameters: 
> static int ServerImpls.CON_CHECK_INTERVAL = 500;
> 2)  

[jira] [Updated] (IGNITE-13012) Make node connection checking rely on the configuration. Simplify node ping routine.

2020-05-14 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:
--
Description: 
Current noted-to-node connection checking has several drawbacks:
1)  Minimal connection checking interval is not bound to failure detection 
parameters: 
static int ServerImpls.CON_CHECK_INTERVAL = 500;

2)  Connection checking is made as ability of periodical message sending 
(TcpDiscoveryConnectionCheckMessage). It is bound to own time (ServerImpl. 
RingMessageWorker.lastTimeConnCheckMsgSent), not to common time of last sent 
message. This is weird because any discovery message actually checks 
connection. And TpDiscoveryConnectionCheckMessage is just an addition when 
message queue is empty for a long time.

3)  Period of Node-to-Node connection checking can be sometimes shortened 
for strange reason: if no sent or received message appears within 
failureDetectionTimeout. Here, despite we have minimal period of connection 
checking (ServerImpls.CON_CHECK_INTERVAL), we can also send 
TpDiscoveryConnectionCheckMessage before this period exhausted. Moreover, this 
premature node ping relies also on time of last received message. Imagine: if 
node 2 receives no message from node 1 within some time it decides to do extra 
ping node 3 not waiting for regular ping interval. Such behavior makes 
confusion and gives no additional guaranties.
See `ServerImpl.connectionChecking()`

4)  If #3 happens, node writes in the log on INFO: “Local node seems to be 
disconnected from topology …” whereas it is not actually disconnected. User can 
see this message if he typed failureDetectionTimeout < 500ms. I wouldn’t like 
seeing INFO in a log saying a node is might be disconnected. This sounds like 
some troubles raised in network. But not as everything is OK. 

Suggestions:
1)  Make connection check interval be based on failureDetectionTimeout or 
similar params.
2)  Make connection check interval rely on common time of last sent 
message. Not on dedicated time.
3)  Remove additional, random, quickened connection checking.
4)  Do not worry user with “Node disconnected” when everything is OK.

  was:

Current noted-to-node connection checking has several drawbacks:
1)  Minimal connection checking interval is not bound to failure detection 
parameters: 
static int ServerImpls.CON_CHECK_INTERVAL = 500;
2)  Connection checking is made as ability of periodical message sending 
(TcpDiscoveryConnectionCheckMessage). It is bound to own time (ServerImpl. 
RingMessageWorker.lastTimeConnCheckMsgSent), not to common time of last sent 
message. This is weird because any discovery message actually checks 
connection. And TpDiscoveryConnectionCheckMessage is just an addition when 
message queue is empty for a long time.
3)  Period of Node-to-Node connection checking can be sometimes shortened 
for strange reason: if no sent or received message appears within 
failureDetectionTimeout. Here, despite we have minimal period of connection 
checking (ServerImpls.CON_CHECK_INTERVAL), we can also send 
TpDiscoveryConnectionCheckMessage before this period exhausted. Moreover, this 
premature node ping relies also on time of last received message. Imagine: if 
node 2 receives no message from node 1 within some time it decides to do extra 
ping node 3 not waiting for regular ping interval. Such behavior makes 
confusion and gives no additional guaranties.
4)  If #3 happens, node writes in the log on INFO: “Local node seems to be 
disconnected from topology …” whereas it is not actually disconnected. User can 
see this message if he typed failureDetectionTimeout < 500ms. I wouldn’t like 
seeing INFO in a log saying a node is might be disconnected. This sounds like 
some troubles raised in network. But not as everything is OK. 

Suggestions:
1)  Make connection check interval be based on failureDetectionTimeout or 
similar params.
2)  Make connection check interval rely on common time of last sent 
message. Not on dedicated time.
3)  Remove additional, random, quickened connection checking.
4)  Do not worry user with “Node disconnected” when everything is OK.


> Make node connection checking rely on the configuration. Simplify node ping 
> routine.
> 
>
> Key: IGNITE-13012
> URL: https://issues.apache.org/jira/browse/IGNITE-13012
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
>
> Current noted-to-node connection checking has several drawbacks:
> 1)Minimal connection checking interval is not bound to failure detection 
> parameters: 
> static int ServerImpls.CON_CHECK_INTERVAL = 500;
> 2)

[jira] [Updated] (IGNITE-13014) Remove double checking of node availability. Fix hardcoded values.

2020-05-15 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13014:
--
Description: 
For the present, we have duplicated checking of node availability. This 
prolongs node failure detection and gives no additional benefits. There are 
mesh and hardcoded values in this routine.

Let's imagine node 2 doesn't answer any more. Node 1 becomes unable to ping 
node 2 and asks Node 3 to establish permanent connection instead of node 2. 
Despite node 2 has been already pinged within configured timeouts, node 3 try 
to connect to node 2 too. 


Disadvantages:

1)  Possible long detection of node failure up to 
ServerImpl.CON_CHECK_INTERVAL + 2 * IgniteConfiguretion.failureDetectionTimeout 
+ 300ms. See ‘WostCase.txt’

2)  Unexpected, not-configurable decision to check availability of previous 
node based on ‘2 * ServerImpl.CON_CHECK_INTERVAL‘:

// We got message from previous in less than double connection check interval.
boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; 

If ‘ok == true’ node 3 checks node 2.

3)  Double node checking brings several not-configurable hardcoded delays:
Node 3 checks node 2 with hardcoded timeout 100ms:
ServerImpl.isConnectionRefused():

sock.connect(addr, 100);

Checking availability of previous node considers any exception but 
ConnectionException (connection refused) as existing connection. Even a 
timeout. See ServerImpl.isConnectionRefused().

  was:
For the present, we have duplicated checking of node availability. This 
prolongs node failure detection and gives no additional benefits. There are 
mesh and hardcoded values in this routine.
Let's imagine node 2 doesn't answer any more. Node 1 becomes unable to ping 
node 2 and asks Node 3 to establish permanent connection instead of node 2. 
Despite node 2 has been already pinged within configured timeouts, node 3 try 
to connect to node 2 too. 
Disadvantages:
1)  Possible long detection of node failure up to 
ServerImpl.CON_CHECK_INTERVAL + 2 * IgniteConfiguretion.failureDetectionTimeout 
+ 300ms. See ‘WostCase.txt’

2)  Unexpected, not-configurable decision to check availability of previous 
node based on ‘2 * ServerImpl.CON_CHECK_INTERVAL‘:

// We got message from previous in less than double connection check interval.
boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; 

If ‘ok == true’ node 3 checks node 2.

3)  Double node checking brings several not-configurable hardcoded delays:
Node 3 checks node 2 with hardcoded timeout 100ms:
ServerImpl.isConnectionRefused():

sock.connect(addr, 100);

Checking availability of previous node considers any exception but 
ConnectionException (connection refused) as existing connection. Even a 
timeout. See ServerImpl.isConnectionRefused().


> Remove double checking of node availability. Fix hardcoded values.
> --
>
> Key: IGNITE-13014
> URL: https://issues.apache.org/jira/browse/IGNITE-13014
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>
> For the present, we have duplicated checking of node availability. This 
> prolongs node failure detection and gives no additional benefits. There are 
> mesh and hardcoded values in this routine.
> Let's imagine node 2 doesn't answer any more. Node 1 becomes unable to ping 
> node 2 and asks Node 3 to establish permanent connection instead of node 2. 
> Despite node 2 has been already pinged within configured timeouts, node 3 try 
> to connect to node 2 too. 
> Disadvantages:
> 1)Possible long detection of node failure up to 
> ServerImpl.CON_CHECK_INTERVAL + 2 * 
> IgniteConfiguretion.failureDetectionTimeout + 300ms. See ‘WostCase.txt’
> 2)Unexpected, not-configurable decision to check availability of previous 
> node based on ‘2 * ServerImpl.CON_CHECK_INTERVAL‘:
> // We got message from previous in less than double connection check interval.
> boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; 
> If ‘ok == true’ node 3 checks node 2.
> 3)Double node checking brings several not-configurable hardcoded delays:
> Node 3 checks node 2 with hardcoded timeout 100ms:
> ServerImpl.isConnectionRefused():
> sock.connect(addr, 100);
> Checking availability of previous node considers any exception but 
> ConnectionException (connection refused) as existing connection. Even a 
> timeout. See ServerImpl.isConnectionRefused().



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


[jira] [Created] (IGNITE-13014) Remove long, double checking of node availability. Fix hardcoded values.

2020-05-15 Thread Vladimir Steshin (Jira)
Vladimir Steshin created IGNITE-13014:
-

 Summary: Remove long, double checking of node availability. Fix 
hardcoded values.
 Key: IGNITE-13014
 URL: https://issues.apache.org/jira/browse/IGNITE-13014
 Project: Ignite
  Issue Type: Improvement
Reporter: Vladimir Steshin
Assignee: Vladimir Steshin


For the present, we have duplicated checking of node availability. This 
prolongs node failure detection and gives no additional benefits. There are 
mesh and hardcoded values in this routine.
Let's imagine node 2 doesn't answer any more. Node 1 becomes unable to ping 
node 2 and asks Node 3 to establish permanent connection instead of node 2. 
Despite node 2 has been already pinged within configured timeouts, node 3 try 
to connect to node 2 too. 
Disadvantages:
1)  Possible long detection of node failure up to 
ServerImpl.CON_CHECK_INTERVAL + 2 * IgniteConfiguretion.failureDetectionTimeout 
+ 300ms. See ‘WostCase.txt’

2)  Unexpected, not-configurable decision to check availability of previous 
node based on ‘2 * ServerImpl.CON_CHECK_INTERVAL‘:

// We got message from previous in less than double connection check interval.
boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; 

If ‘ok == true’ node 3 checks node 2.

3)  Double node checking brings several not-configurable hardcoded delays:
Node 3 checks node 2 with hardcoded timeout 100ms:
ServerImpl.isConnectionRefused():

sock.connect(addr, 100);

Checking availability of previous node considers any exception but 
ConnectionException (connection refused) as existing connection. Even a 
timeout. See ServerImpl.isConnectionRefused().



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


[jira] [Updated] (IGNITE-13014) Remove double checking of node availability. Fix hardcoded values.

2020-05-15 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13014:
--
Attachment: WostCase.txt

> Remove double checking of node availability. Fix hardcoded values.
> --
>
> Key: IGNITE-13014
> URL: https://issues.apache.org/jira/browse/IGNITE-13014
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
> Attachments: WostCase.txt
>
>
> For the present, we have duplicated checking of node availability. This 
> prolongs node failure detection and gives no additional benefits. There are 
> mesh and hardcoded values in this routine.
> Let's imagine node 2 doesn't answer any more. Node 1 becomes unable to ping 
> node 2 and asks Node 3 to establish permanent connection instead of node 2. 
> Despite node 2 has been already pinged within configured timeouts, node 3 try 
> to connect to node 2 too. 
> Disadvantages:
> 1)Possible long detection of node failure up to 
> ServerImpl.CON_CHECK_INTERVAL + 2 * 
> IgniteConfiguretion.failureDetectionTimeout + 300ms. See ‘WostCase.txt’
> 2)Unexpected, not-configurable decision to check availability of previous 
> node based on ‘2 * ServerImpl.CON_CHECK_INTERVAL‘:
> // We got message from previous in less than double connection check interval.
> boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; 
> If ‘ok == true’ node 3 checks node 2.
> 3)Double node checking brings several not-configurable hardcoded delays:
> Node 3 checks node 2 with hardcoded timeout 100ms:
> ServerImpl.isConnectionRefused():
> sock.connect(addr, 100);
> Checking availability of previous node considers any exception but 
> ConnectionException (connection refused) as existing connection. Even a 
> timeout. See ServerImpl.isConnectionRefused().



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


[jira] [Updated] (IGNITE-13014) Remove double checking of node availability. Fix hardcoded values.

2020-05-15 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13014:
--
Summary: Remove double checking of node availability. Fix hardcoded values. 
 (was: Remove long, double checking of node availability. Fix hardcoded values.)

> Remove double checking of node availability. Fix hardcoded values.
> --
>
> Key: IGNITE-13014
> URL: https://issues.apache.org/jira/browse/IGNITE-13014
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>
> For the present, we have duplicated checking of node availability. This 
> prolongs node failure detection and gives no additional benefits. There are 
> mesh and hardcoded values in this routine.
> Let's imagine node 2 doesn't answer any more. Node 1 becomes unable to ping 
> node 2 and asks Node 3 to establish permanent connection instead of node 2. 
> Despite node 2 has been already pinged within configured timeouts, node 3 try 
> to connect to node 2 too. 
> Disadvantages:
> 1)Possible long detection of node failure up to 
> ServerImpl.CON_CHECK_INTERVAL + 2 * 
> IgniteConfiguretion.failureDetectionTimeout + 300ms. See ‘WostCase.txt’
> 2)Unexpected, not-configurable decision to check availability of previous 
> node based on ‘2 * ServerImpl.CON_CHECK_INTERVAL‘:
> // We got message from previous in less than double connection check interval.
> boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; 
> If ‘ok == true’ node 3 checks node 2.
> 3)Double node checking brings several not-configurable hardcoded delays:
> Node 3 checks node 2 with hardcoded timeout 100ms:
> ServerImpl.isConnectionRefused():
> sock.connect(addr, 100);
> Checking availability of previous node considers any exception but 
> ConnectionException (connection refused) as existing connection. Even a 
> timeout. See ServerImpl.isConnectionRefused().



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


[jira] [Updated] (IGNITE-13014) Remove double checking of node availability. Fix hardcoded values.

2020-05-15 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13014:
--
Labels: iep-45  (was: )

> Remove double checking of node availability. Fix hardcoded values.
> --
>
> Key: IGNITE-13014
> URL: https://issues.apache.org/jira/browse/IGNITE-13014
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
> Attachments: WostCase.txt
>
>
> For the present, we have duplicated checking of node availability. This 
> prolongs node failure detection and gives no additional benefits. There are 
> mesh and hardcoded values in this routine.
> Let's imagine node 2 doesn't answer any more. Node 1 becomes unable to ping 
> node 2 and asks Node 3 to establish permanent connection instead of node 2. 
> Despite node 2 has been already pinged within configured timeouts, node 3 try 
> to connect to node 2 too. 
> Disadvantages:
> 1)Possible long detection of node failure up to 
> ServerImpl.CON_CHECK_INTERVAL + 2 * 
> IgniteConfiguretion.failureDetectionTimeout + 300ms. See ‘WostCase.txt’
> 2)Unexpected, not-configurable decision to check availability of previous 
> node based on ‘2 * ServerImpl.CON_CHECK_INTERVAL‘:
> // We got message from previous in less than double connection check interval.
> boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; 
> If ‘ok == true’ node 3 checks node 2.
> 3)Double node checking brings several not-configurable hardcoded delays:
> Node 3 checks node 2 with hardcoded timeout 100ms:
> ServerImpl.isConnectionRefused():
> sock.connect(addr, 100);
> Checking availability of previous node considers any exception but 
> ConnectionException (connection refused) as existing connection. Even a 
> timeout. See ServerImpl.isConnectionRefused().



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


[jira] [Updated] (IGNITE-13014) Remove double checking of node availability. Fix hardcoded values.

2020-05-15 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13014:
--
Description: 
For the present, we have duplicated checking of node availability. This 
prolongs node failure detection and gives no additional benefits. There are 
mesh and hardcoded values in this routine.

Let's imagine node 2 doesn't answer any more. Node 1 becomes unable to ping 
node 2 and asks Node 3 to establish permanent connection instead of node 2. 
Despite node 2 has been already pinged within configured timeouts, node 3 try 
to connect to node 2 too. 


Disadvantages:

1)  Possible long detection of node failure up to 
ServerImpl.CON_CHECK_INTERVAL + 2 * IgniteConfiguretion.failureDetectionTimeout 
+ 300ms. See ‘WostCase.txt’

2)  Unexpected, not-configurable decision to check availability of previous 
node based on ‘2 * ServerImpl.CON_CHECK_INTERVAL‘:

// We got message from previous in less than double connection check interval.
boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; 

If ‘ok == true’ node 3 checks node 2.

3)  Double node checking brings several not-configurable hardcoded delays:
Node 3 checks node 2 with hardcoded timeout 100ms:
ServerImpl.isConnectionRefused():

sock.connect(addr, 100);

4) Node 1 marks Node 2 alive anew with hardcoded 200ms. See 
ServerImpl.CrossRingMessageSendState.markLastFailedNodeAlive():
{code:java}
try {
   Thread.sleep(200);
}
catch (InterruptedException e) {
   Thread.currentThread().interrupt();
}
{code}

5) Checking availability of previous node considers any exception but 
ConnectionException (connection refused) as existing connection. Even a 
timeout. See ServerImpl.isConnectionRefused():

{code:java}
try (Socket sock = new Socket()) {
   sock.connect(addr, 100);
}
catch (ConnectException e) {
   return true;
}
catch (IOException e) {
   return false; //Consideres as OK.
}
{code}


  was:
For the present, we have duplicated checking of node availability. This 
prolongs node failure detection and gives no additional benefits. There are 
mesh and hardcoded values in this routine.

Let's imagine node 2 doesn't answer any more. Node 1 becomes unable to ping 
node 2 and asks Node 3 to establish permanent connection instead of node 2. 
Despite node 2 has been already pinged within configured timeouts, node 3 try 
to connect to node 2 too. 


Disadvantages:

1)  Possible long detection of node failure up to 
ServerImpl.CON_CHECK_INTERVAL + 2 * IgniteConfiguretion.failureDetectionTimeout 
+ 300ms. See ‘WostCase.txt’

2)  Unexpected, not-configurable decision to check availability of previous 
node based on ‘2 * ServerImpl.CON_CHECK_INTERVAL‘:

// We got message from previous in less than double connection check interval.
boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; 

If ‘ok == true’ node 3 checks node 2.

3)  Double node checking brings several not-configurable hardcoded delays:
Node 3 checks node 2 with hardcoded timeout 100ms:
ServerImpl.isConnectionRefused():

sock.connect(addr, 100);

4) Node 1 marks Node 2 alive anew with hardcoded 200ms. See 
ServerImpl.CrossRingMessageSendState.markLastFailedNodeAlive():
{code:java}
try {
   Thread.sleep(200);
}
catch (InterruptedException e) {
   Thread.currentThread().interrupt();
}
{code}

5) Checking availability of previous node considers any exception but 
ConnectionException (connection refused) as existing connection. Even a 
timeout. See ServerImpl.isConnectionRefused():

{code:java}
 try (Socket sock = new Socket()) {
sock.connect(addr, 100);
}
catch (ConnectException e) {
return true;
}
catch (IOException e) {
return false; //Consideres as OK.
}
{code}



> Remove double checking of node availability. Fix hardcoded values.
> --
>
> Key: IGNITE-13014
> URL: https://issues.apache.org/jira/browse/IGNITE-13014
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
> Attachments: WostCase.txt
>
>
> For the present, we have duplicated checking of node availability. This 
> prolongs node failure detection and gives no additional benefits. There are 
> mesh and hardcoded values in this routine.
> Let's imagine node 2 doesn't answer any more. Node 1 becomes unable to ping 
> node 2 and asks Node 3 to establish permanent connection instead of node 2. 
> Despite node 2 has been already pinged within configured timeouts, node 3 try 
> to connect to node 2 too. 
> Disadvantages:
> 1)Possible long detection of node failure up to 
> ServerImpl.CON_CHECK_INTERVAL + 2 * 
> IgniteConfiguretion.failureDetectionTimeout 

[jira] [Updated] (IGNITE-13014) Remove double checking of node availability. Fix hardcoded values.

2020-05-15 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13014:
--
Description: 
For the present, we have duplicated checking of node availability. This 
prolongs node failure detection and gives no additional benefits. There are 
mesh and hardcoded values in this routine.

Let's imagine node 2 doesn't answer any more. Node 1 becomes unable to ping 
node 2 and asks Node 3 to establish permanent connection instead of node 2. 
Despite node 2 has been already pinged within configured timeouts, node 3 try 
to connect to node 2 too. 


Disadvantages:

1)  Possible long detection of node failure up to 
ServerImpl.CON_CHECK_INTERVAL + 2 * IgniteConfiguretion.failureDetectionTimeout 
+ 300ms. See ‘WostCase.txt’

2)  Unexpected, not-configurable decision to check availability of previous 
node based on ‘2 * ServerImpl.CON_CHECK_INTERVAL‘:

// We got message from previous in less than double connection check interval.
boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; 

If ‘ok == true’ node 3 checks node 2.

3)  Double node checking brings several not-configurable hardcoded delays:
Node 3 checks node 2 with hardcoded timeout 100ms:
ServerImpl.isConnectionRefused():

sock.connect(addr, 100);

4) Node 1 marks Node 2 alive anew with hardcoded 200ms. See 
ServerImpl.CrossRingMessageSendState.markLastFailedNodeAlive():
{code:java}
try {
   Thread.sleep(200);
}
catch (InterruptedException e) {
   Thread.currentThread().interrupt();
}
{code}

5) Checking availability of previous node considers any exception but 
ConnectionException (connection refused) as existing connection. Even a 
timeout. See ServerImpl.isConnectionRefused():

{code:java}
 try (Socket sock = new Socket()) {
sock.connect(addr, 100);
}
catch (ConnectException e) {
return true;
}
catch (IOException e) {
return false; //Consideres as OK.
}
{code}


  was:
For the present, we have duplicated checking of node availability. This 
prolongs node failure detection and gives no additional benefits. There are 
mesh and hardcoded values in this routine.

Let's imagine node 2 doesn't answer any more. Node 1 becomes unable to ping 
node 2 and asks Node 3 to establish permanent connection instead of node 2. 
Despite node 2 has been already pinged within configured timeouts, node 3 try 
to connect to node 2 too. 


Disadvantages:

1)  Possible long detection of node failure up to 
ServerImpl.CON_CHECK_INTERVAL + 2 * IgniteConfiguretion.failureDetectionTimeout 
+ 300ms. See ‘WostCase.txt’

2)  Unexpected, not-configurable decision to check availability of previous 
node based on ‘2 * ServerImpl.CON_CHECK_INTERVAL‘:

// We got message from previous in less than double connection check interval.
boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; 

If ‘ok == true’ node 3 checks node 2.

3)  Double node checking brings several not-configurable hardcoded delays:
Node 3 checks node 2 with hardcoded timeout 100ms:
ServerImpl.isConnectionRefused():

sock.connect(addr, 100);

Checking availability of previous node considers any exception but 
ConnectionException (connection refused) as existing connection. Even a 
timeout. See ServerImpl.isConnectionRefused().


> Remove double checking of node availability. Fix hardcoded values.
> --
>
> Key: IGNITE-13014
> URL: https://issues.apache.org/jira/browse/IGNITE-13014
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
> Attachments: WostCase.txt
>
>
> For the present, we have duplicated checking of node availability. This 
> prolongs node failure detection and gives no additional benefits. There are 
> mesh and hardcoded values in this routine.
> Let's imagine node 2 doesn't answer any more. Node 1 becomes unable to ping 
> node 2 and asks Node 3 to establish permanent connection instead of node 2. 
> Despite node 2 has been already pinged within configured timeouts, node 3 try 
> to connect to node 2 too. 
> Disadvantages:
> 1)Possible long detection of node failure up to 
> ServerImpl.CON_CHECK_INTERVAL + 2 * 
> IgniteConfiguretion.failureDetectionTimeout + 300ms. See ‘WostCase.txt’
> 2)Unexpected, not-configurable decision to check availability of previous 
> node based on ‘2 * ServerImpl.CON_CHECK_INTERVAL‘:
> // We got message from previous in less than double connection check interval.
> boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; 
> If ‘ok == true’ node 3 checks node 2.
> 3)Double node checking brings several not-configurable hardcoded delays:
> Node 3 checks node 2 with 

[jira] [Updated] (IGNITE-13014) Remove double checking of node availability. Fix hardcoded values.

2020-05-15 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13014:
--
Description: 
For the present, we have duplicated checking of node availability. This 
prolongs node failure detection and gives no additional benefits. There are 
mesh and hardcoded values in this routine.

Let's imagine node 2 doesn't answer any more. Node 1 becomes unable to ping 
node 2 and asks Node 3 to establish permanent connection instead of node 2. 
Despite node 2 has been already pinged within configured timeouts, node 3 try 
to connect to node 2 too. 


Disadvantages:

1)  Possible long detection of node failure up to 
ServerImpl.CON_CHECK_INTERVAL + 2 * IgniteConfiguretion.failureDetectionTimeout 
+ 300ms. See ‘WostCase.txt’

2)  Unexpected, not-configurable decision to check availability of previous 
node based on ‘2 * ServerImpl.CON_CHECK_INTERVAL‘:
{code:java}
// We got message from previous in less than double connection check interval.
boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; 
{code}

If ‘ok == true’ node 3 checks node 2.

3)  Double node checking brings several not-configurable hardcoded delays:
Node 3 checks node 2 with hardcoded timeout 100ms:
ServerImpl.isConnectionRefused():
{code:java}
sock.connect(addr, 100);
{code}

4) Node 1 marks Node 2 alive anew with hardcoded 200ms. See 
ServerImpl.CrossRingMessageSendState.markLastFailedNodeAlive():
{code:java}
try {
   Thread.sleep(200);
}
catch (InterruptedException e) {
   Thread.currentThread().interrupt();
}
{code}

5) Checking availability of previous node considers any exception but 
ConnectionException (connection refused) as existing connection. Even a 
timeout. See ServerImpl.isConnectionRefused():

{code:java}
try (Socket sock = new Socket()) {
   sock.connect(addr, 100);
}
catch (ConnectException e) {
   return true;
}
catch (IOException e) {
   return false; //Consideres as OK.
}
{code}


  was:
For the present, we have duplicated checking of node availability. This 
prolongs node failure detection and gives no additional benefits. There are 
mesh and hardcoded values in this routine.

Let's imagine node 2 doesn't answer any more. Node 1 becomes unable to ping 
node 2 and asks Node 3 to establish permanent connection instead of node 2. 
Despite node 2 has been already pinged within configured timeouts, node 3 try 
to connect to node 2 too. 


Disadvantages:

1)  Possible long detection of node failure up to 
ServerImpl.CON_CHECK_INTERVAL + 2 * IgniteConfiguretion.failureDetectionTimeout 
+ 300ms. See ‘WostCase.txt’

2)  Unexpected, not-configurable decision to check availability of previous 
node based on ‘2 * ServerImpl.CON_CHECK_INTERVAL‘:

// We got message from previous in less than double connection check interval.
boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; 

If ‘ok == true’ node 3 checks node 2.

3)  Double node checking brings several not-configurable hardcoded delays:
Node 3 checks node 2 with hardcoded timeout 100ms:
ServerImpl.isConnectionRefused():

sock.connect(addr, 100);

4) Node 1 marks Node 2 alive anew with hardcoded 200ms. See 
ServerImpl.CrossRingMessageSendState.markLastFailedNodeAlive():
{code:java}
try {
   Thread.sleep(200);
}
catch (InterruptedException e) {
   Thread.currentThread().interrupt();
}
{code}

5) Checking availability of previous node considers any exception but 
ConnectionException (connection refused) as existing connection. Even a 
timeout. See ServerImpl.isConnectionRefused():

{code:java}
try (Socket sock = new Socket()) {
   sock.connect(addr, 100);
}
catch (ConnectException e) {
   return true;
}
catch (IOException e) {
   return false; //Consideres as OK.
}
{code}



> Remove double checking of node availability. Fix hardcoded values.
> --
>
> Key: IGNITE-13014
> URL: https://issues.apache.org/jira/browse/IGNITE-13014
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
> Attachments: WostCase.txt
>
>
> For the present, we have duplicated checking of node availability. This 
> prolongs node failure detection and gives no additional benefits. There are 
> mesh and hardcoded values in this routine.
> Let's imagine node 2 doesn't answer any more. Node 1 becomes unable to ping 
> node 2 and asks Node 3 to establish permanent connection instead of node 2. 
> Despite node 2 has been already pinged within configured timeouts, node 3 try 
> to connect to node 2 too. 
> Disadvantages:
> 1)Possible long detection of node failure up to 
> ServerImpl.CON_CHECK_INTERVAL + 2 * 
> IgniteConfiguretion.failureDetectionTimeout + 300ms. See ‘WostCase.txt’
> 2)Unexpected, 

[jira] [Updated] (IGNITE-13014) Remove double checking of node availability. Fix hardcoded values.

2020-05-15 Thread Vladimir Steshin (Jira)


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

Vladimir Steshin updated IGNITE-13014:
--
Description: 
For the present, we have double checking of node availability. This prolongs 
node failure detection and gives no additional benefits. There are mesh and 
hardcoded values in this routine.

Let's imagine node 2 doesn't answer any more. Node 1 becomes unable to ping 
node 2 and asks Node 3 to establish permanent connection instead of node 2. 
Node 3 may try to check node 2 too. Or may not.

Proposal:
Do not check failed node second time. Keep failure detection within expected 
timeouts (IgniteConfiguration.failureDetectionTimeout).


Drawbacks:

1)  Possible long detection of node failure up to 
ServerImpl.CON_CHECK_INTERVAL + 2 * IgniteConfiguretion.failureDetectionTimeout 
+ 300ms. See ‘WostCase.txt’

2)  Unexpected, not-configurable decision to check availability of previous 
node based on ‘2 * ServerImpl.CON_CHECK_INTERVAL‘:
{code:java}
// We got message from previous in less than double connection check interval.
boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; 
{code}

If ‘ok == true’ node 3 checks node 2.

3)  Several not-configurable hardcoded delays:
Node 3 checks node 2 with hardcoded timeout 100ms:
ServerImpl.isConnectionRefused():
{code:java}
sock.connect(addr, 100);
{code}

Node 1 marks Node 2 alive anew with hardcoded 200ms. See 
ServerImpl.CrossRingMessageSendState.markLastFailedNodeAlive():
{code:java}
try {
   Thread.sleep(200);
}
catch (InterruptedException e) {
   Thread.currentThread().interrupt();
}
{code}

4) Checking availability of previous node considers any exception but 
ConnectionException (connection refused) as existing connection. Even a 
timeout. See ServerImpl.isConnectionRefused():

{code:java}
try (Socket sock = new Socket()) {
   sock.connect(addr, 100);
}
catch (ConnectException e) {
   return true;
}
catch (IOException e) {
   return false; //Consideres as OK.
}
{code}


  was:
For the present, we have duplicated checking of node availability. This 
prolongs node failure detection and gives no additional benefits. There are 
mesh and hardcoded values in this routine.

Let's imagine node 2 doesn't answer any more. Node 1 becomes unable to ping 
node 2 and asks Node 3 to establish permanent connection instead of node 2. 
Despite node 2 has been already pinged within configured timeouts, node 3 try 
to connect to node 2 too. 


Disadvantages:

1)  Possible long detection of node failure up to 
ServerImpl.CON_CHECK_INTERVAL + 2 * IgniteConfiguretion.failureDetectionTimeout 
+ 300ms. See ‘WostCase.txt’

2)  Unexpected, not-configurable decision to check availability of previous 
node based on ‘2 * ServerImpl.CON_CHECK_INTERVAL‘:
{code:java}
// We got message from previous in less than double connection check interval.
boolean ok = rcvdTime + CON_CHECK_INTERVAL * 2 >= now; 
{code}

If ‘ok == true’ node 3 checks node 2.

3)  Double node checking brings several not-configurable hardcoded delays:
Node 3 checks node 2 with hardcoded timeout 100ms:
ServerImpl.isConnectionRefused():
{code:java}
sock.connect(addr, 100);
{code}

4) Node 1 marks Node 2 alive anew with hardcoded 200ms. See 
ServerImpl.CrossRingMessageSendState.markLastFailedNodeAlive():
{code:java}
try {
   Thread.sleep(200);
}
catch (InterruptedException e) {
   Thread.currentThread().interrupt();
}
{code}

5) Checking availability of previous node considers any exception but 
ConnectionException (connection refused) as existing connection. Even a 
timeout. See ServerImpl.isConnectionRefused():

{code:java}
try (Socket sock = new Socket()) {
   sock.connect(addr, 100);
}
catch (ConnectException e) {
   return true;
}
catch (IOException e) {
   return false; //Consideres as OK.
}
{code}



> Remove double checking of node availability. Fix hardcoded values.
> --
>
> Key: IGNITE-13014
> URL: https://issues.apache.org/jira/browse/IGNITE-13014
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: iep-45
> Attachments: WostCase.txt
>
>
> For the present, we have double checking of node availability. This prolongs 
> node failure detection and gives no additional benefits. There are mesh and 
> hardcoded values in this routine.
> Let's imagine node 2 doesn't answer any more. Node 1 becomes unable to ping 
> node 2 and asks Node 3 to establish permanent connection instead of node 2. 
> Node 3 may try to check node 2 too. Or may not.
> Proposal:
> Do not check failed node second time. Keep failure detection within expected 
> timeouts (IgniteConfiguration.failureDetectionTimeout).
> Drawbacks:
> 1)Possible long detection of 

  1   2   3   4   5   6   7   8   9   10   >