[jira] [Created] (IGNITE-13710) Calcite integration. Fix or to union rule logic

2020-11-16 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-13710:
-

 Summary: Calcite integration. Fix or to union rule logic
 Key: IGNITE-13710
 URL: https://issues.apache.org/jira/browse/IGNITE-13710
 Project: Ignite
  Issue Type: Bug
  Components: sql
Reporter: Igor Seliverstov






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


[jira] [Created] (IGNITE-13515) Performance drop when there are many thin clients per server

2020-10-02 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-13515:
-

 Summary: Performance drop when there are many thin clients per 
server
 Key: IGNITE-13515
 URL: https://issues.apache.org/jira/browse/IGNITE-13515
 Project: Ignite
  Issue Type: Task
  Components: clients
Reporter: Igor Seliverstov
Assignee: Igor Seliverstov


There is a performance drop when running many thin clients per node:
{noformat}
4 nodes - 1 thin client java - ~5500 pps (put per second)
4 nodes - 2 thin clients java - ~5000 pps
4 nodes - 4 thin clients java - ~4000 pps
4 nodes - 10 thin clients java - ~1500 pps
4 nodes - ~100 thin clients java - ~100 pps
{noformat}

May be related to sync request processing in connection thread pool on server 
side. Need to investigate and fix if possible.



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


[jira] [Created] (IGNITE-13461) Calcite integration. Wrong behavior on thick client side planning.

2020-09-19 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-13461:
-

 Summary: Calcite integration. Wrong behavior on thick client side 
planning.
 Key: IGNITE-13461
 URL: https://issues.apache.org/jira/browse/IGNITE-13461
 Project: Ignite
  Issue Type: Bug
  Components: sql
Reporter: Igor Seliverstov
Assignee: Igor Seliverstov


Query planner tries to use index physical structures at a client side, also it 
tries to access affinity manager, that isn't started on the client.



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


[jira] [Created] (IGNITE-13247) Calcite integration. Move QueryCursorEx.isQuery() flag to a proper place.

2020-07-13 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-13247:
-

 Summary: Calcite integration. Move QueryCursorEx.isQuery() flag to 
a proper place.
 Key: IGNITE-13247
 URL: https://issues.apache.org/jira/browse/IGNITE-13247
 Project: Ignite
  Issue Type: Improvement
Reporter: Igor Seliverstov


Since QueryCursorEx is used in continuous queries, we should move SQL query 
related flag to another place.



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


[jira] [Created] (IGNITE-13117) Calcite integration. Update Calcite version to 1.23.0

2020-06-04 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-13117:
-

 Summary: Calcite integration. Update Calcite version to 1.23.0
 Key: IGNITE-13117
 URL: https://issues.apache.org/jira/browse/IGNITE-13117
 Project: Ignite
  Issue Type: Improvement
Reporter: Igor Seliverstov
Assignee: Igor Seliverstov


There are two important features in the new Calcite release what we need to 
solve current planner issues:  top-down traits propagation and bottom-up traits 
derivation



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


[jira] [Created] (IGNITE-12991) Calcite integration. Pass cancel flag to VolcanoPlanner

2020-05-07 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12991:
-

 Summary: Calcite integration. Pass cancel flag to VolcanoPlanner
 Key: IGNITE-12991
 URL: https://issues.apache.org/jira/browse/IGNITE-12991
 Project: Ignite
  Issue Type: Improvement
Reporter: Igor Seliverstov


see {{AbstractRelOptPlanner.java:91}}, here {{CancelFlag}} is used to cancel 
planning loop. We need to pass it into a newly created context and bind its 
state with {{PlanningContext#queryCancel}} to break possible infinite planning 
loop. See also {{PlanningContext#unwrap}}



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


[jira] [Created] (IGNITE-12972) Calcite integration. Serialization refactoring

2020-04-30 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12972:
-

 Summary: Calcite integration. Serialization refactoring
 Key: IGNITE-12972
 URL: https://issues.apache.org/jira/browse/IGNITE-12972
 Project: Ignite
  Issue Type: Improvement
Reporter: Igor Seliverstov
Assignee: Igor Seliverstov


Currently we need quite a lot of classes to serialize, send and deserialize a 
prepared plan (in scope of node-to-node communications). It's better to do that 
by analogy with Calcite's RelJsonReader/RelJsonWriter. This way we may omit 
necessity to maintain lots of classes preserving functionality.



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


[jira] [Created] (IGNITE-12909) Calcite integration. Explain command support

2020-04-17 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12909:
-

 Summary: Calcite integration. Explain command support
 Key: IGNITE-12909
 URL: https://issues.apache.org/jira/browse/IGNITE-12909
 Project: Ignite
  Issue Type: Task
Reporter: Igor Seliverstov


Support EXPLAIN command



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


[jira] [Created] (IGNITE-12900) Calcite integration. Use RowHandler to access fields.

2020-04-15 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12900:
-

 Summary: Calcite integration. Use RowHandler to access fields.
 Key: IGNITE-12900
 URL: https://issues.apache.org/jira/browse/IGNITE-12900
 Project: Ignite
  Issue Type: Task
Reporter: Igor Seliverstov


Currently only Object[] can be used as a row because most of execution nodes 
require Object[] as a row type. Let's use generic row types with appropriate 
RowHandler in execution nodes and compiled expressions to get more flexibility.



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


[jira] [Created] (IGNITE-12899) Calcite integration. Distribution multitrait

2020-04-15 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12899:
-

 Summary: Calcite integration. Distribution multitrait
 Key: IGNITE-12899
 URL: https://issues.apache.org/jira/browse/IGNITE-12899
 Project: Ignite
  Issue Type: Task
Reporter: Igor Seliverstov


Currently Ignite nodes have single distribution value which isn't true in 
several cases like:
 # a partitioned table with a key alias should have 2 distribution traits: by 
_key and by key alias (id for example) - without distribution by _key column 
almost impossible to implement IGNITE-12692
 # After inner / cross join the result should have several hash distributions 
(by left and by right keys) - it may be important on join transpose optimization



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


[jira] [Created] (IGNITE-12871) Calcite integration. Broadcast to hash conversion without exchange.

2020-04-07 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12871:
-

 Summary: Calcite integration. Broadcast to hash conversion without 
exchange.
 Key: IGNITE-12871
 URL: https://issues.apache.org/jira/browse/IGNITE-12871
 Project: Ignite
  Issue Type: Improvement
Reporter: Igor Seliverstov


Use a partition filter instead of network communications



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


[jira] [Created] (IGNITE-12868) Calcite integration. LEFT, RIGHT join support.

2020-04-06 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12868:
-

 Summary: Calcite integration. LEFT, RIGHT join support.
 Key: IGNITE-12868
 URL: https://issues.apache.org/jira/browse/IGNITE-12868
 Project: Ignite
  Issue Type: New Feature
Reporter: Igor Seliverstov






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


[jira] [Created] (IGNITE-12864) Calcite integration. UNION support.

2020-04-06 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12864:
-

 Summary: Calcite integration. UNION support.
 Key: IGNITE-12864
 URL: https://issues.apache.org/jira/browse/IGNITE-12864
 Project: Ignite
  Issue Type: New Feature
Reporter: Igor Seliverstov






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


[jira] [Created] (IGNITE-12820) Calcite integration. Do not use AbstarctConverter while planning.

2020-03-20 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12820:
-

 Summary: Calcite integration. Do not use AbstarctConverter while 
planning.
 Key: IGNITE-12820
 URL: https://issues.apache.org/jira/browse/IGNITE-12820
 Project: Ignite
  Issue Type: Improvement
Reporter: Igor Seliverstov


We need to change traits explicitly without AbstractConverter's and appropriate 
rules.



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


[jira] [Created] (IGNITE-12819) Calcite integration. Cost system.

2020-03-20 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12819:
-

 Summary: Calcite integration. Cost system.
 Key: IGNITE-12819
 URL: https://issues.apache.org/jira/browse/IGNITE-12819
 Project: Ignite
  Issue Type: Task
Reporter: Igor Seliverstov


Current implementation doesn't suit our needs for particular reasons. We need 
to introduce our own one taking into account such parameters as IO operations, 
memory usage, CPU usage, disk usage etc.



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


[jira] [Created] (IGNITE-12792) Calcite integration. Update Calcite version to 1.22.0

2020-03-17 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12792:
-

 Summary: Calcite integration. Update Calcite version to 1.22.0
 Key: IGNITE-12792
 URL: https://issues.apache.org/jira/browse/IGNITE-12792
 Project: Ignite
  Issue Type: Improvement
Reporter: Igor Seliverstov
Assignee: Igor Seliverstov






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


[jira] [Created] (IGNITE-12776) Calcite integration. An exception occurred when a replicated cache is used in a query.

2020-03-12 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12776:
-

 Summary: Calcite integration. An exception occurred when a 
replicated cache is used in a query.
 Key: IGNITE-12776
 URL: https://issues.apache.org/jira/browse/IGNITE-12776
 Project: Ignite
  Issue Type: Bug
Reporter: Igor Seliverstov
Assignee: Igor Seliverstov






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


[jira] [Created] (IGNITE-12747) Calcite integration. Correlated queries support.

2020-03-04 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12747:
-

 Summary: Calcite integration. Correlated queries support.
 Key: IGNITE-12747
 URL: https://issues.apache.org/jira/browse/IGNITE-12747
 Project: Ignite
  Issue Type: New Feature
Reporter: Igor Seliverstov






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


[jira] [Created] (IGNITE-12708) Calcite integration. Expressions factory base implementation.

2020-02-20 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12708:
-

 Summary: Calcite integration. Expressions factory base 
implementation.
 Key: IGNITE-12708
 URL: https://issues.apache.org/jira/browse/IGNITE-12708
 Project: Ignite
  Issue Type: New Feature
  Components: sql
Reporter: Igor Seliverstov
Assignee: Igor Seliverstov


We need to implement basic environment for expressions evaluation.

Expressions should exist in two types - compiled and interpreted.

Expressions should be compiled in dedicated thread pull and eventually replace 
interpreted ones.



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


[jira] [Created] (IGNITE-12700) Calcite integration. Aggregates support.

2020-02-19 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12700:
-

 Summary: Calcite integration. Aggregates support.
 Key: IGNITE-12700
 URL: https://issues.apache.org/jira/browse/IGNITE-12700
 Project: Ignite
  Issue Type: New Feature
  Components: sql
Reporter: Igor Seliverstov
Assignee: Igor Seliverstov






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


[jira] [Created] (IGNITE-12695) Calcite integration. DML support. MERGE support

2020-02-18 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12695:
-

 Summary: Calcite integration. DML support. MERGE support
 Key: IGNITE-12695
 URL: https://issues.apache.org/jira/browse/IGNITE-12695
 Project: Ignite
  Issue Type: New Feature
Reporter: Igor Seliverstov






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


[jira] [Created] (IGNITE-12692) Calcite integration. DML. Skip reducer optimization.

2020-02-17 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12692:
-

 Summary: Calcite integration. DML. Skip reducer optimization.
 Key: IGNITE-12692
 URL: https://issues.apache.org/jira/browse/IGNITE-12692
 Project: Ignite
  Issue Type: Improvement
Reporter: Igor Seliverstov


Having plan tree we easily can check whether a final modification may be 
executed on data nodes directly or not. We should implement such kind of 
optimization.



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


[jira] [Created] (IGNITE-12639) Calcite integration. DML support.

2020-02-07 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12639:
-

 Summary: Calcite integration. DML support.
 Key: IGNITE-12639
 URL: https://issues.apache.org/jira/browse/IGNITE-12639
 Project: Ignite
  Issue Type: New Feature
Reporter: Igor Seliverstov
Assignee: Igor Seliverstov






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


[jira] [Created] (IGNITE-12633) Calcite integration. Query cancel purpose.

2020-02-06 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12633:
-

 Summary: Calcite integration. Query cancel purpose.
 Key: IGNITE-12633
 URL: https://issues.apache.org/jira/browse/IGNITE-12633
 Project: Ignite
  Issue Type: Improvement
  Components: sql
Reporter: Igor Seliverstov


Currently on a query participant node left whole query is cancelled, but the 
end user doesn't know the purpose. We should pass causing cancel exception to 
end user.



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


[jira] [Created] (IGNITE-12620) Calcite integration. Index Nested Loop Join/Hash Join

2020-02-04 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12620:
-

 Summary: Calcite integration. Index Nested Loop Join/Hash Join
 Key: IGNITE-12620
 URL: https://issues.apache.org/jira/browse/IGNITE-12620
 Project: Ignite
  Issue Type: New Feature
Reporter: Igor Seliverstov


We may implement the feature the next way:
 # For each row from left node consume whole dataset from right node
 # Pass join condition as an argument of request() method of the right node
 # In case a data source at right is an index scan
 ## If there is no cursor opened - create a new cursor using bounds from 
request 
 ## If there is an existing cursor - just check the cursor was opened using the 
same condition as passed one.
 ## After the right node signals EOD consume a next row from left and repeat 
from p 2.
 # In case a data source at right is a table scan with huge amount of rows
 ## If there is no cursor opened - create a new cursor ignoring passed condition
 ## If there is an existing cursor - just check the cursor was opened using the 
same condition as passed one.
 ## After the right node signals EOD consume a next row from left and repeat 
from p 2.
 # In case a data source at right is remote / is a table scan with small number 
of rows/ is a filter node with good enough selectivity
 ## Create a hash index for a data source
 ## If there is no cursor opened - create a new cursor using bounds from 
request 
 ## If there is an existing cursor - just check the cursor was opened using the 
same condition as passed one.
 ## After the right node signals EOD consume a next row from left and repeat 
from p 2.

 Consider implementation specifics at optimization time, choose the cheapest 
variant



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


[jira] [Created] (IGNITE-12602) Calcite integration. JDBC Thin driver support.

2020-01-29 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12602:
-

 Summary: Calcite integration. JDBC Thin driver support.
 Key: IGNITE-12602
 URL: https://issues.apache.org/jira/browse/IGNITE-12602
 Project: Ignite
  Issue Type: Task
Reporter: Igor Seliverstov


Provide a way to use experimental engine via JDBC thin driver.



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


[jira] [Created] (IGNITE-12592) Calcite integration. Query load balancing.

2020-01-28 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12592:
-

 Summary: Calcite integration. Query load balancing.
 Key: IGNITE-12592
 URL: https://issues.apache.org/jira/browse/IGNITE-12592
 Project: Ignite
  Issue Type: Task
Reporter: Igor Seliverstov


Currently all query tasks execute in a query pool. The pool contains a limited 
number of threads, so, in case of long running scan operation other query tasks 
will starve.

We need to limit time a thread spends inside {{ScanNode#requestInternal 
method}}.

See appropriate TODO



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


[jira] [Created] (IGNITE-12586) Calcite integration. NodesMapping simplification.

2020-01-27 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12586:
-

 Summary: Calcite integration. NodesMapping simplification.
 Key: IGNITE-12586
 URL: https://issues.apache.org/jira/browse/IGNITE-12586
 Project: Ignite
  Issue Type: Improvement
Reporter: Igor Seliverstov


Seems turning {{List assignments}} to {{Map 
assignments}} may significantly reduce occupied memory.



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


[jira] [Created] (IGNITE-12585) Calcite integration. Splitter improvements.

2020-01-27 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12585:
-

 Summary: Calcite integration. Splitter improvements.
 Key: IGNITE-12585
 URL: https://issues.apache.org/jira/browse/IGNITE-12585
 Project: Ignite
  Issue Type: Improvement
Reporter: Igor Seliverstov


Currently in case a head fragment of a query plan have broadcast distribution 
it causes OptimisticPlanningException and additional fragment split each time 
it's mapped on topology on a client node. Seems it's quite usual case, so, we 
should cover it properly.



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


[jira] [Created] (IGNITE-12566) Calcite integration. Expressions evaluation.

2020-01-22 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12566:
-

 Summary: Calcite integration. Expressions evaluation.
 Key: IGNITE-12566
 URL: https://issues.apache.org/jira/browse/IGNITE-12566
 Project: Ignite
  Issue Type: Task
Reporter: Igor Seliverstov


Currently we use a part of Calcite "Bindables" to evaluate expressions at the 
execution time. Using it we 
 * lose a control on how expressions are evaluated
 * cannot implement several important optimizations, like "keepBinary"
 * can use only Object[] as a row, which causes a lot of array copy operations 
and unnecessary allocations at the execution time
 * suffer from delays, which go from expressions compilation process when it's 
more efficient to start from interpretation and compile an expression on 
repeatable execution only

We need to implement expressions interpreter and our own expression compiler 
taking Ignite specifics in consideration.



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


[jira] [Created] (IGNITE-12564) Calcite integration. Exceptions handling.

2020-01-22 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12564:
-

 Summary: Calcite integration. Exceptions handling.
 Key: IGNITE-12564
 URL: https://issues.apache.org/jira/browse/IGNITE-12564
 Project: Ignite
  Issue Type: Task
Reporter: Igor Seliverstov


There are several exceptions types that may be thrown at
 * parsing and validation time
 * planning time
 * mapping time
 * execution time

All of them should be handled properly.



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


[jira] [Created] (IGNITE-12563) Calcite integration. Reset and remap queries on topology change.

2020-01-22 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12563:
-

 Summary: Calcite integration. Reset and remap queries on topology 
change.
 Key: IGNITE-12563
 URL: https://issues.apache.org/jira/browse/IGNITE-12563
 Project: Ignite
  Issue Type: Task
  Components: sql
Reporter: Igor Seliverstov


A query should:
 * be silently remapped in case an actual topology version at query plan 
materialization time differs from a topology version at the time locations was 
calculated
 * be cancelled with appropriate exception in case one of responsible nodes 
left a cluster after execution is started.



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


[jira] [Created] (IGNITE-12455) Calcite integration. Partition pruning.

2019-12-16 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12455:
-

 Summary: Calcite integration. Partition pruning.
 Key: IGNITE-12455
 URL: https://issues.apache.org/jira/browse/IGNITE-12455
 Project: Ignite
  Issue Type: Improvement
Reporter: Igor Seliverstov


In scope of fragment info calculation we're able to prune partitions on the 
basis of filter condition, query parameters, affinity and tables distribution.

This optimization may dramatically reduce query execution time/needed resources.



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


[jira] [Created] (IGNITE-12449) Calcite integration. Execution flow.

2019-12-13 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12449:
-

 Summary: Calcite integration. Execution flow.
 Key: IGNITE-12449
 URL: https://issues.apache.org/jira/browse/IGNITE-12449
 Project: Ignite
  Issue Type: Task
Reporter: Igor Seliverstov


We need to introduce query execution environment.

Execution should:
* use streaming approach
* have suspend/resume ability
* work in event loop threads



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


[jira] [Created] (IGNITE-12448) Calcite integration. Communication protocol.

2019-12-13 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12448:
-

 Summary: Calcite integration. Communication protocol.
 Key: IGNITE-12448
 URL: https://issues.apache.org/jira/browse/IGNITE-12448
 Project: Ignite
  Issue Type: Task
  Components: sql
Reporter: Igor Seliverstov


We need to introduce a communication protocol between query fragments in scope 
of query execution.
* Protocol should have Push semantics with back pressure ability
* Protocol have to provide ordering guaranties - the data batches processed in 
same order they sent to remote node.
* Protocol have to provide delivery guaranties.



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


[jira] [Created] (IGNITE-12446) Calcite integration. Fix javadocs and code style.

2019-12-13 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12446:
-

 Summary: Calcite integration. Fix javadocs and code style.
 Key: IGNITE-12446
 URL: https://issues.apache.org/jira/browse/IGNITE-12446
 Project: Ignite
  Issue Type: Task
  Components: sql
Reporter: Igor Seliverstov
Assignee: Igor Seliverstov


Fix javadocs and code style



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


[jira] [Created] (IGNITE-12251) Calcite exchange rules

2019-10-01 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12251:
-

 Summary: Calcite exchange rules
 Key: IGNITE-12251
 URL: https://issues.apache.org/jira/browse/IGNITE-12251
 Project: Ignite
  Issue Type: Task
  Components: sql
Reporter: Igor Seliverstov
Assignee: Igor Seliverstov


Need to implement IgniteDistributionTraitDef and utility methods (to calculate 
distribution trait for each node type based on its position, type and children 
nodes)



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


[jira] [Created] (IGNITE-12248) Apache Calcite based query execution engine

2019-09-30 Thread Igor Seliverstov (Jira)
Igor Seliverstov created IGNITE-12248:
-

 Summary: Apache Calcite based query execution engine
 Key: IGNITE-12248
 URL: https://issues.apache.org/jira/browse/IGNITE-12248
 Project: Ignite
  Issue Type: Task
  Components: sql
Reporter: Igor Seliverstov
Assignee: Igor Seliverstov


Currently used H2 based query execution engine has a number of critical 
limitations Which do not allow to execute an arbitrary query.

The ticket aims to show potential of a new, Calcite based, execution engine 
which may act not worse than current one on co-located queries, provide a boost 
for queries, using distributed joins, and provide an ability to execute 
arbitrary queries, requiring more than one map-reduce step in execution flow.

[IEP 
link|https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=130028084]
[Dev list 
thread|http://apache-ignite-developers.2346864.n4.nabble.com/New-SQL-execution-engine-td43724.html]



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


[jira] [Created] (IGNITE-11433) MVCC: Link entry versions at the Data Store layer.

2019-02-27 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-11433:
-

 Summary: MVCC: Link entry versions at the Data Store layer.
 Key: IGNITE-11433
 URL: https://issues.apache.org/jira/browse/IGNITE-11433
 Project: Ignite
  Issue Type: Improvement
  Components: mvcc, sql
Reporter: Igor Seliverstov






--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-11238) Possible hang on exchange

2019-02-06 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-11238:
-

 Summary: Possible hang on exchange
 Key: IGNITE-11238
 URL: https://issues.apache.org/jira/browse/IGNITE-11238
 Project: Ignite
  Issue Type: Bug
  Components: general
Reporter: Igor Seliverstov


Currently we may hang on exchange for a while (two network timeouts) waiting 
for release a latch (see {{GridDhtPartitionsExchangeFuture#waitPartitionRelease 
releaseLatch}}) in case a processing topology version has not been added to 
discovery history yet but client acknowledge already received by coordinator:

{code:java}
[2019-02-06 
17:43:17,009][ERROR][sys-#43%mvcc.CacheMvccPartitionedSqlCoordinatorFailoverTest0%][ExchangeLatchManager]
 Topology AffinityTopologyVersion [topVer=24, minorTopVer=0] not found in 
discovery history ; consider increasing IGNITE_DISCOVERY_HISTORY_SIZE property. 
Current value is -1
class org.apache.ignite.IgniteException: Topology AffinityTopologyVersion 
[topVer=24, minorTopVer=0] not found in discovery history ; consider increasing 
IGNITE_DISCOVERY_HISTORY_SIZE property. Current value is -1
at 
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.latch.ExchangeLatchManager.aliveNodesForTopologyVer(ExchangeLatchManager.java:260)
at 
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.latch.ExchangeLatchManager.getLatchCoordinator(ExchangeLatchManager.java:302)
at 
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.latch.ExchangeLatchManager.processAck(ExchangeLatchManager.java:351)
at 
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.latch.ExchangeLatchManager.lambda$new$0(ExchangeLatchManager.java:121)
at 
org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1561)
at 
org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1189)
at 
org.apache.ignite.internal.managers.communication.GridIoManager.access$4200(GridIoManager.java:127)
at 
org.apache.ignite.internal.managers.communication.GridIoManager$8.run(GridIoManager.java:1086)
at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
{code}

This way the received ack won't be processed, so, we will be waiting for retry:
{code:java}
// Try to resend ack.
releaseLatch.countDown();
{code}

To solve the issue we need to test whether the version is present in discovery 
history and put it into a pending map if i isn't so (see 
{{ExchangeLatchManager#pendingAcks}})



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-11173) MVCC TX: Acquire write version if coordinator changed in the middle of tx.

2019-02-01 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-11173:
-

 Summary: MVCC TX: Acquire write version if coordinator changed in 
the middle of tx.
 Key: IGNITE-11173
 URL: https://issues.apache.org/jira/browse/IGNITE-11173
 Project: Ignite
  Issue Type: New Feature
  Components: mvcc
Reporter: Igor Seliverstov


Current implementation suppose all transactions on previous coordinator were 
finished before new coordinator has been initialized, but there is a case when 
it isn't true. 

A tx which hasn't obtained a topology lock (hasn't done any updates) doesn't 
prevent a topology change, this way nothing prevent new transactions start.

All newly created txs suppose all updates on previous coordinator are finished 
- this mean a possible update of mapped on previous coordinator txs is 
considered as stale regardless the tx is still active. We make such txs 
readonly to not break the visibility checking logic (see IGNITE-8841).

There are two possible ways to allow writes after coordinator is changed:
* collect active txs and their dependencies and populate the active txs list 
with them during a new coordinator initialization - this approach is quite 
complex and have obvious issues like necessity of using full tx versions in a 
snapshot
* acquire a new version right after topology locked for writes using previously 
acquired "read" version for possible write conflicts detecting and visibility 
checking.

I would prefer the second option as fully understandable and relatively easy to 
implement.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-11121) MVCC TX: AssertionError in discovery manager on BLT change.

2019-01-29 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-11121:
-

 Summary: MVCC TX: AssertionError in discovery manager on BLT 
change.
 Key: IGNITE-11121
 URL: https://issues.apache.org/jira/browse/IGNITE-11121
 Project: Ignite
  Issue Type: Bug
Reporter: Igor Seliverstov
 Fix For: 2.8


The next exception occurred in logs on BLT change.
{noformat}
[12:11:36,912][SEVERE][sys-#87][GridClosureProcessor] Closure execution failed 
with error.
java.lang.AssertionError
at 
org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.node(GridDiscoveryManager.java:1794)
at 
org.apache.ignite.internal.managers.communication.GridIoManager.sendToGridTopic(GridIoManager.java:1693)
at 
org.apache.ignite.internal.processors.cache.transactions.IgniteTxManager$NodeFailureTimeoutObject.lambda$onTimeout0$16553d7$1(IgniteTxManager.java:2592)
at 
org.apache.ignite.internal.util.future.GridFutureAdapter.notifyListener(GridFutureAdapter.java:399)
at 
org.apache.ignite.internal.util.future.GridFutureAdapter.listen(GridFutureAdapter.java:354)
at 
org.apache.ignite.internal.processors.cache.transactions.IgniteTxManager$NodeFailureTimeoutObject.onTimeout0(IgniteTxManager.java:2588)
at 
org.apache.ignite.internal.processors.cache.transactions.IgniteTxManager$NodeFailureTimeoutObject.access$3300(IgniteTxManager.java:2505)
at 
org.apache.ignite.internal.processors.cache.transactions.IgniteTxManager$NodeFailureTimeoutObject$1.run(IgniteTxManager.java:2623)
at 
org.apache.ignite.internal.util.IgniteUtils.wrapThreadLoader(IgniteUtils.java:6874)
at 
org.apache.ignite.internal.processors.closure.GridClosureProcessor$1.body(GridClosureProcessor.java:827)
at 
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)
at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
{noformat}

>From the stack trace I see there is a node failure which causes transactions 
>recovery and uninitialized Mvcc coordinator (it means there are no server 
>nodes, or there is a coordinatorAssignClosure which returns no result, or a 
>recovering node was not activated)

the scenario, where the exception may be observed:

* Start a cluster
* Load some data (from client node, the client node is shut down after that)
* Calculate hash
* Add new server node
* Change BLT
* Wait for rebalance
* Calculate new hash and check it is the same as previously calculated



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-11068) MVCC TX: Do not create TxLog and do not start vacuum workers in case there are no MVCC caches on the node.

2019-01-24 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-11068:
-

 Summary: MVCC TX: Do not create TxLog and do not start vacuum 
workers in case there are no MVCC caches on the node.
 Key: IGNITE-11068
 URL: https://issues.apache.org/jira/browse/IGNITE-11068
 Project: Ignite
  Issue Type: Improvement
Reporter: Igor Seliverstov






--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-10956) MVCC TX: Move queryEnlisted flag from IgniteTxLocalAdapter to IgniteTxState

2019-01-16 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-10956:
-

 Summary: MVCC TX: Move queryEnlisted flag from 
IgniteTxLocalAdapter to IgniteTxState
 Key: IGNITE-10956
 URL: https://issues.apache.org/jira/browse/IGNITE-10956
 Project: Ignite
  Issue Type: Improvement
  Components: mvcc
Reporter: Igor Seliverstov


queryEnlisted flag represents a transaction state (like txState.empty(), in 
other words shows whether there were some updates on MVCC caches or not). It 
makes sense to move such flag to IgniteTxState.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-10829) MVCC TX: Lazy query execution for query enlists.

2018-12-27 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-10829:
-

 Summary: MVCC TX: Lazy query execution for query enlists.
 Key: IGNITE-10829
 URL: https://issues.apache.org/jira/browse/IGNITE-10829
 Project: Ignite
  Issue Type: Improvement
  Components: mvcc
Affects Versions: 2.7
Reporter: Igor Seliverstov
 Fix For: 2.8


Implement lazy query execution using semantic goes from IGNITE-9171.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-10730) MVCC TX: Batch WAL datarecords

2018-12-18 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-10730:
-

 Summary: MVCC TX: Batch WAL datarecords
 Key: IGNITE-10730
 URL: https://issues.apache.org/jira/browse/IGNITE-10730
 Project: Ignite
  Issue Type: Improvement
  Components: mvcc
Reporter: Igor Seliverstov


on MVCC updates we make changes one by one and WAL records are written straight 
after successful update under the same checkpoint lock. This produces 
contention on wal flush operations and harm overall performance. But we need 
only one guarantee - all the records have to be written into the log before 
prepare start. That means we free to batch such writes (for example 10 rows in 
one data record) it shouldn't cause memory issues but will resolve contention.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-10729) MVCC TX: Improvements.

2018-12-18 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-10729:
-

 Summary: MVCC TX: Improvements.
 Key: IGNITE-10729
 URL: https://issues.apache.org/jira/browse/IGNITE-10729
 Project: Ignite
  Issue Type: Improvement
  Components: mvcc
Reporter: Igor Seliverstov


Currently there are several problems:
1) vacuum doesn't have change set, this means it travers all data to find 
invisible entries; hanse it breaks read statistics and make all data set "hot" 
- we should travers data entries instead, and only those entries, which was 
updated (linked to newer versions), moreover, vacuum should travers only those 
data pages, which were updated after last successful vacuum (at least one entry 
on the data page was linked to a never one)

2) vacuum travers over partitions instead of data entries, so, there possible 
some races like: reader checks an entry; updater removes this entry from 
partition; vacuum doesn't see the entry and clean TxLog -> reader cannot check 
the entry state with TxLog and gets an exception. This race prevents an 
optimization when all entries, older than last successful vacuum version, are 
considered as COMMITTED (see previous suggestion)

3) all entry versions are placed in BTrees, so, we cannot do updates like PG - 
just adding a new version and linking the old one to it. Having only one 
unversioned item per row in all indexes making possible fast invoke operations 
on such indexes in MVCC mode. Also it let us not to update all indexes on each 
update operation (partition index isn't updated at all, only SQL indexes, built 
over changed fields need to be updated) - this dramatically reduces write 
operations, hence it reduces amount of pages to be "checkpointed" and reduces 
checkpoint mark phase.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-10714) MVCC TX: JTA transaction manager.

2018-12-17 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-10714:
-

 Summary: MVCC TX: JTA transaction manager.
 Key: IGNITE-10714
 URL: https://issues.apache.org/jira/browse/IGNITE-10714
 Project: Ignite
  Issue Type: Bug
Reporter: Igor Seliverstov


Add JTA transactions support for MVCC transactions



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-10693) MVCC TX: Random server restart tests became failed

2018-12-14 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-10693:
-

 Summary: MVCC TX: Random server restart tests became failed
 Key: IGNITE-10693
 URL: https://issues.apache.org/jira/browse/IGNITE-10693
 Project: Ignite
  Issue Type: Bug
  Components: mvcc, sql
Reporter: Igor Seliverstov
 Fix For: 2.8


[one|https://ci.ignite.apache.org/project.html?projectId=IgniteTests24Java8=254244004184327163=%3Cdefault%3E=testDetails],
 
[two|https://ci.ignite.apache.org/project.html?projectId=IgniteTests24Java8=8412476034648229784=%3Cdefault%3E=testDetails],
 
[three|https://ci.ignite.apache.org/project.html?projectId=IgniteTests24Java8=254244004184327163=%3Cdefault%3E=testDetails],
 all these tests became failed after IGNITE-9630 has been merged to master.

Seems there is an issue in partition calculating mechanism on unstable 
topology. I suppose the algorithm uses partitions on nodes just become primary 
while the partitions are in moving state.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-10597) MVCC TX: Organize used thread pools

2018-12-07 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-10597:
-

 Summary: MVCC TX: Organize used thread pools
 Key: IGNITE-10597
 URL: https://issues.apache.org/jira/browse/IGNITE-10597
 Project: Ignite
  Issue Type: Bug
  Components: mvcc
Reporter: Igor Seliverstov
 Fix For: 2.8


All mvcc operations use cache pool, this means striped pool is used under hood 
that may lead performance issues in case of long operations (like query update).

we need:
1) use query pool for query updates
2) use random stripe for batched updates
3) use appropriate stripe for single updates.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-10576) MVCC TX: Rework UpdateSourceIterator to mix operation types

2018-12-06 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-10576:
-

 Summary: MVCC TX: Rework UpdateSourceIterator to mix operation 
types
 Key: IGNITE-10576
 URL: https://issues.apache.org/jira/browse/IGNITE-10576
 Project: Ignite
  Issue Type: Bug
  Components: mvcc
Reporter: Igor Seliverstov
Assignee: Andrew Mashenkov


Current the UpdateSourceIterator implementation doesn't suit Cache API needs. 
It should be able to mix operation types per key. 

For example we may execute putAll operation with a half of keys are having 
values and a half aren't, this way we should mix DELETE operation for 
null-value keys and PUT operation for others.

Another use case is a transform operation which should turn into a number of 
PUT/UPDATE/DELETE operations on a backup node.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-10572) MVCC TX: Possible race on invokeAll operations

2018-12-06 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-10572:
-

 Summary: MVCC TX: Possible race on invokeAll operations
 Key: IGNITE-10572
 URL: https://issues.apache.org/jira/browse/IGNITE-10572
 Project: Ignite
  Issue Type: Bug
  Components: mvcc
Reporter: Igor Seliverstov
Assignee: Andrew Mashenkov


see {{GridNearTxEnlistFuture#checkResponse}} method.

1) race on result creation - two threads may see {{this.res == null}} and just 
set their values, result is partially lost

2) race on success flag set - just set false flag may be overwritten by 
concurrent successful response checking operation.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-10559) MVCC TX: Use extracted partitions to reduce target nodes for Query Update

2018-12-05 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-10559:
-

 Summary: MVCC TX: Use extracted partitions to reduce target nodes 
for Query Update
 Key: IGNITE-10559
 URL: https://issues.apache.org/jira/browse/IGNITE-10559
 Project: Ignite
  Issue Type: Task
  Components: mvcc
Reporter: Igor Seliverstov


We may avoid "query reduce" step on update queries without sorting/grouping by 
simply sending them to all data nodes and executing update operation locally. 
Using extracted from SQL partitions will reduce target nodes count and save 
resources.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-10468) MVCC TX: Failover

2018-11-29 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-10468:
-

 Summary: MVCC TX: Failover
 Key: IGNITE-10468
 URL: https://issues.apache.org/jira/browse/IGNITE-10468
 Project: Ignite
  Issue Type: Task
Reporter: Igor Seliverstov


There is several problems in mvcc failover scenarios.

The task is an umbrella ticket for currently known issues.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-10457) MVCC TX: GridIndexRebuildWithMvccEnabledSelfTest fails

2018-11-29 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-10457:
-

 Summary: MVCC TX: GridIndexRebuildWithMvccEnabledSelfTest fails
 Key: IGNITE-10457
 URL: https://issues.apache.org/jira/browse/IGNITE-10457
 Project: Ignite
  Issue Type: Bug
  Components: mvcc, sql
Reporter: Igor Seliverstov
 Fix For: 2.8


See the log below:
{noformat}
javax.cache.CacheException: class org.apache.ignite.IgniteCheckedException: 
Runtime failure on bounds: [lower=MvccMaxSearchRow [], upper=MvccMinSearchRow 
[]]

at 
org.apache.ignite.internal.processors.cache.GridCacheUtils.convertToCacheException(GridCacheUtils.java:1337)
at 
org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.cacheException(IgniteCacheProxyImpl.java:1756)
at 
org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.put(IgniteCacheProxyImpl.java:1108)
at 
org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.put(GatewayProtectedCacheProxy.java:820)
at 
org.apache.ignite.internal.processors.query.h2.GridIndexRebuildSelfTest.putData(GridIndexRebuildSelfTest.java:191)
at 
org.apache.ignite.internal.processors.query.h2.GridIndexRebuildWithMvccEnabledSelfTest.testIndexRebuild(GridIndexRebuildWithMvccEnabledSelfTest.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at junit.framework.TestCase.runTest(TestCase.java:176)
at 
org.apache.ignite.testframework.junits.GridAbstractTest.access$001(GridAbstractTest.java:150)
at 
org.apache.ignite.testframework.junits.GridAbstractTest$6.evaluate(GridAbstractTest.java:2104)
at 
org.apache.ignite.testframework.junits.GridAbstractTest$7.run(GridAbstractTest.java:2119)
at java.lang.Thread.run(Thread.java:748)
Caused by: class org.apache.ignite.IgniteCheckedException: Runtime failure on 
bounds: [lower=MvccMaxSearchRow [], upper=MvccMinSearchRow []]
at 
org.apache.ignite.internal.processors.cache.persistence.tree.BPlusTree.visit(BPlusTree.java:1061)
at 
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl$CacheDataStoreImpl.mvccUpdate(IgniteCacheOffheapManagerImpl.java:1968)
at 
org.apache.ignite.internal.processors.cache.persistence.GridCacheOffheapManager$GridCacheDataStore.mvccUpdate(GridCacheOffheapManager.java:2032)
at 
org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.mvccUpdate(IgniteCacheOffheapManagerImpl.java:543)
at 
org.apache.ignite.internal.processors.cache.GridCacheMapEntry.mvccSet(GridCacheMapEntry.java:1142)
at 
org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxAbstractEnlistFuture.continueLoop(GridDhtTxAbstractEnlistFuture.java:463)
at 
org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxAbstractEnlistFuture.init(GridDhtTxAbstractEnlistFuture.java:363)
at 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxEnlistFuture.enlistLocal(GridNearTxEnlistFuture.java:525)
at 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxEnlistFuture.sendBatch(GridNearTxEnlistFuture.java:420)
at 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxEnlistFuture.sendNextBatches(GridNearTxEnlistFuture.java:167)
at 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxEnlistFuture.map(GridNearTxEnlistFuture.java:143)
at 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxAbstractEnlistFuture.mapOnTopology(GridNearTxAbstractEnlistFuture.java:331)
at 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxAbstractEnlistFuture.init(GridNearTxAbstractEnlistFuture.java:246)
at 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.updateAsync(GridNearTxLocal.java:2076)
at 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.mvccPutAllAsync0(GridNearTxLocal.java:785)
at 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.putAsync0(GridNearTxLocal.java:580)
at 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal.putAsync(GridNearTxLocal.java:446)
at 
org.apache.ignite.internal.processors.cache.GridCacheAdapter$22.op(GridCacheAdapter.java:2522)
at 
org.apache.ignite.internal.processors.cache.GridCacheAdapter$22.op(GridCacheAdapter.java:2520)
at 
org.apache.ignite.internal.processors.cache.GridCacheAdapter.syncOp(GridCacheAdapter.java:4284)
at 
org.apache.ignite.internal.processors.cache.GridCacheAdapter.put0(GridCacheAdapter.java:2520)
at 
org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:2501)
at 
org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:2478)
at 

[jira] [Created] (IGNITE-10378) MVCC TX: Possible race on MVCC coordinator reassignment

2018-11-22 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-10378:
-

 Summary: MVCC TX: Possible race on MVCC coordinator reassignment
 Key: IGNITE-10378
 URL: https://issues.apache.org/jira/browse/IGNITE-10378
 Project: Ignite
  Issue Type: Bug
  Components: mvcc
 Environment: We need to add an additional check to finish MVCC 
coordinator init future on particular exchange done only.

 
Reporter: Igor Seliverstov
 Fix For: 2.8






--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-10322) MVCC TX: Clean out messages.

2018-11-19 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-10322:
-

 Summary: MVCC TX: Clean out messages.
 Key: IGNITE-10322
 URL: https://issues.apache.org/jira/browse/IGNITE-10322
 Project: Ignite
  Issue Type: Improvement
  Components: mvcc
Reporter: Igor Seliverstov
 Fix For: 2.8


Currently MvccSnapshot is a part of many message types and some of usages look 
unnecessary. Since MvccSnapshot potentially can be really long (in bytes) we 
need to review and possibly optimize all places where MvccSnapshot is a message 
part.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-10276) MVCC TX: Optimize logger creations

2018-11-15 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-10276:
-

 Summary: MVCC TX: Optimize logger creations
 Key: IGNITE-10276
 URL: https://issues.apache.org/jira/browse/IGNITE-10276
 Project: Ignite
  Issue Type: Improvement
  Components: mvcc
Reporter: Igor Seliverstov
 Fix For: 2.8


We need to initialize loggers in all new classes like it was done in 
*GridDhtAtomicAbstractUpdateFuture* for example.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-10248) MVCC TX: remove redundant partition checking from GridDhtTxAbstractEnlistFuture

2018-11-14 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-10248:
-

 Summary: MVCC TX: remove redundant partition checking from 
GridDhtTxAbstractEnlistFuture
 Key: IGNITE-10248
 URL: https://issues.apache.org/jira/browse/IGNITE-10248
 Project: Ignite
  Issue Type: Improvement
  Components: mvcc
Reporter: Igor Seliverstov
 Fix For: 2.8


We need to ensure that on unstable topology all queries (even those that 
doesn't require reducer) should execute with reducer (which support execution 
on unstable topology)

All verifications should be done inside 
{{*IgniteH2Indexing#prepareDistributedUpdate*}} method



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-10241) MVCC TX: orphaned remote transactions

2018-11-13 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-10241:
-

 Summary: MVCC TX: orphaned remote transactions
 Key: IGNITE-10241
 URL: https://issues.apache.org/jira/browse/IGNITE-10241
 Project: Ignite
  Issue Type: Bug
  Components: mvcc
Reporter: Igor Seliverstov
 Fix For: 2.8


test occasionally fails with following error:
{code:java}
[2018-11-13 
15:03:44,240][ERROR][sys-#19392%mvcc.CacheMvccPartitionedSqlCoordinatorFailoverTest0%][GridDhtPartitionsExchangeFuture]
 Failed to notify listener: 
o.a.i.i.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture$2@22ae2fbd
java.lang.ClassCastException: 
org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxRemote 
cannot be cast to 
org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxLocal
 at 
org.apache.ignite.internal.processors.cache.transactions.IgniteTxManager.rollbackMvccTxOnCoordinatorChange(IgniteTxManager.java:327)
 at 
org.apache.ignite.internal.processors.cache.mvcc.MvccProcessorImpl.onExchangeDone(MvccProcessorImpl.java:394)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.onDone(GridDhtPartitionsExchangeFuture.java:2095)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.finishExchangeOnCoordinator(GridDhtPartitionsExchangeFuture.java:3391)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.onAllReceived(GridDhtPartitionsExchangeFuture.java:3157)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.processSingleMessage(GridDhtPartitionsExchangeFuture.java:2773)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.access$100(GridDhtPartitionsExchangeFuture.java:139)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture$2.apply(GridDhtPartitionsExchangeFuture.java:2578)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture$2.apply(GridDhtPartitionsExchangeFuture.java:2566)
 at 
org.apache.ignite.internal.util.future.GridFutureAdapter.notifyListener(GridFutureAdapter.java:395)
 at 
org.apache.ignite.internal.util.future.GridFutureAdapter.listen(GridFutureAdapter.java:355)
 at 
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.onReceiveSingleMessage(GridDhtPartitionsExchangeFuture.java:2566)
 at 
org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager.processSinglePartitionUpdate(GridCachePartitionExchangeManager.java:1747)
 at 
org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager.access$1200(GridCachePartitionExchangeManager.java:144)
 at 
org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$2.onMessage(GridCachePartitionExchangeManager.java:377)
 at 
org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$2.onMessage(GridCachePartitionExchangeManager.java:335)
 at 
org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$MessageHandler.apply(GridCachePartitionExchangeManager.java:3194)
 at 
org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$MessageHandler.apply(GridCachePartitionExchangeManager.java:3173)
 at 
org.apache.ignite.internal.processors.cache.GridCacheIoManager.processMessage(GridCacheIoManager.java:1054)
 at 
org.apache.ignite.internal.processors.cache.GridCacheIoManager.onMessage0(GridCacheIoManager.java:579)
 at 
org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:378)
 at 
org.apache.ignite.internal.processors.cache.GridCacheIoManager.handleMessage(GridCacheIoManager.java:304)
 at 
org.apache.ignite.internal.processors.cache.GridCacheIoManager.access$100(GridCacheIoManager.java:100)
 at 
org.apache.ignite.internal.processors.cache.GridCacheIoManager$1.onMessage(GridCacheIoManager.java:294)
 at 
org.apache.ignite.internal.managers.communication.GridIoManager.invokeListener(GridIoManager.java:1568)
 at 
org.apache.ignite.internal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:1196)
 at 
org.apache.ignite.internal.managers.communication.GridIoManager.access$4200(GridIoManager.java:127)
 at 
org.apache.ignite.internal.managers.communication.GridIoManager$9.run(GridIoManager.java:1092)
 at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
 at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 at java.lang.Thread.run(Thread.java:748)
{code}
Seems there is an issue with committing/rolling back transactions on topology 
changes because we expect all transactions 

[jira] [Created] (IGNITE-10131) Wrong processing of loaded from store keys on backup nodes.

2018-11-02 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-10131:
-

 Summary: Wrong processing of loaded from store keys on backup 
nodes.
 Key: IGNITE-10131
 URL: https://issues.apache.org/jira/browse/IGNITE-10131
 Project: Ignite
  Issue Type: Bug
  Components: cache
Reporter: Igor Seliverstov


In scope of IGNITE-7086 was added a closure, which puts a key value pair in 
case the node is a local backup and readThrough is enabled and the key is 
absent on the node (in other words the key was read from store on a primary 
node).

Currently this closure post-processes each call even in case 3rd party 
persistence store is disabled for the cache because readThrough flag is 
obtained by inversion of skipStore flag of operation context (which is false by 
default).

see {{CU.createBackupPostProcessingClosure(..)}} for details



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-10129) MVCC TX: do not log Vacuum warnings if mvcc is not enabled

2018-11-02 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-10129:
-

 Summary: MVCC TX: do not log Vacuum warnings if mvcc is not enabled
 Key: IGNITE-10129
 URL: https://issues.apache.org/jira/browse/IGNITE-10129
 Project: Ignite
  Issue Type: Bug
  Components: mvcc
Reporter: Igor Seliverstov
 Fix For: 2.7


currently we can see warnings like : 
{{[10:18:48,741][INFO][exchange-worker-#64][MvccProcessorImpl] Attempting to 
stop inactive vacuum.}} on node stop.

Such warnings should not appear in case MVCC is disabled (there is no MVCC 
caches).



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-10109) MVCC TX: data become inconsistent after several updates

2018-11-01 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-10109:
-

 Summary: MVCC TX: data become inconsistent after several updates
 Key: IGNITE-10109
 URL: https://issues.apache.org/jira/browse/IGNITE-10109
 Project: Ignite
  Issue Type: Bug
  Components: mvcc
Reporter: Igor Seliverstov
Assignee: Igor Seliverstov
 Fix For: 2.7


see [TC test 
history|https://ci.ignite.apache.org/project.html?projectId=IgniteTests24Java8=4365543959682167276=testDetails]

Here we do concurrent updates on several accounts (update their balances 
incrementing one and decrementing another), we expect consistent sum of all 
accounts at any time.

The sum become inconsistent after while.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-10104) MVCC TX: client SFU doesn't work on replicated caches

2018-11-01 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-10104:
-

 Summary: MVCC TX: client SFU doesn't work on replicated caches
 Key: IGNITE-10104
 URL: https://issues.apache.org/jira/browse/IGNITE-10104
 Project: Ignite
  Issue Type: Bug
  Components: mvcc, sql
Reporter: Igor Seliverstov
 Fix For: 2.8


When select for update executes from client node the execution is sent to 
random owning node. On that node dht enlist operation is started what causes an 
assertion error because dht enlist operation implies that the node is primary 
for all processed keys.

see {{CacheMvccReplicatedBackupsTest.testBackupsCoherenceWithLargeOperations}} 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-10082) MVCC TX: Partition sizes become inconsistent after rebalance.

2018-10-31 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-10082:
-

 Summary: MVCC TX: Partition sizes become inconsistent after 
rebalance.
 Key: IGNITE-10082
 URL: https://issues.apache.org/jira/browse/IGNITE-10082
 Project: Ignite
  Issue Type: Bug
  Components: cache, mvcc
Reporter: Igor Seliverstov
 Fix For: 2.8


While rebalance partition size increments on each put operation; since several 
versions of one key may be rebalanced, partition sizes become inconsistent 
after rebalance finished.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-9985) MVCC TX: fix backup mappings

2018-10-24 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-9985:


 Summary: MVCC TX: fix backup mappings
 Key: IGNITE-9985
 URL: https://issues.apache.org/jira/browse/IGNITE-9985
 Project: Ignite
  Issue Type: Task
  Components: mvcc
Reporter: Igor Seliverstov
Assignee: Igor Seliverstov


Fix mappings to update going to be evicted partitions as well to maintain 
consistency during rebalance



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-9911) CacheMvccSelectForUpdateQueryAbstractTest#testSelectForUpdateAfterAbortedTx periodically hangs

2018-10-17 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-9911:


 Summary: 
CacheMvccSelectForUpdateQueryAbstractTest#testSelectForUpdateAfterAbortedTx 
periodically hangs
 Key: IGNITE-9911
 URL: https://issues.apache.org/jira/browse/IGNITE-9911
 Project: Ignite
  Issue Type: Task
  Components: mvcc
Reporter: Igor Seliverstov
Assignee: Igor Seliverstov
 Fix For: 2.7


See [TC 
history|https://ci.ignite.apache.org/project.html?projectId=IgniteTests24Java8=7394250566319069846=testDetails]
 for details



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-9538) MVCC TX: Send partition update counters to backup nodes on prepare state.

2018-09-11 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-9538:


 Summary: MVCC TX: Send partition update counters to backup nodes 
on prepare state.
 Key: IGNITE-9538
 URL: https://issues.apache.org/jira/browse/IGNITE-9538
 Project: Ignite
  Issue Type: Task
  Components: cache, mvcc
Reporter: Igor Seliverstov
Assignee: Igor Seliverstov
 Fix For: 2.7


There are several issues with partition update counters consistency in 
transactional caches. The next approach solves most of them:
 # Count per-partition updates
 # on prepare state on primary node update current partition counter 
incrementing it by per-partition updates count and send initial value with 
updates count to backup nodes
 # on backup nodes hold all pending updates and update partition update counter 
applying the lowest gapless update (on tx finish).
 # on historical rebalance use partition update counter as start point.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-9489) CorruptedTreeException on index create.

2018-09-06 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-9489:


 Summary: CorruptedTreeException on index create.
 Key: IGNITE-9489
 URL: https://issues.apache.org/jira/browse/IGNITE-9489
 Project: Ignite
  Issue Type: Bug
  Components: cache, sql
Affects Versions: 2.6, 2.5, 2.4
Reporter: Igor Seliverstov
 Attachments: Test.java

Currently on dynamic index drop with enabled persistence H2TreeIndex instances 
aren't destroyed. That means that their root pages aren't removed from meta 
tree (see 
{{org.apache.ignite.internal.processors.cache.persistence.IndexStorageImpl#getOrAllocateForTree}})
 and reused on subsequent dynamic index create that leads 
CorruptedTreeException on initial index rebuild because there are some items 
with broken links on the root page.

Reproducer attached.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-9483) JDBC/ODBC thin drivers protocol versions compatibility

2018-09-06 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-9483:


 Summary: JDBC/ODBC thin drivers protocol versions compatibility
 Key: IGNITE-9483
 URL: https://issues.apache.org/jira/browse/IGNITE-9483
 Project: Ignite
  Issue Type: Bug
  Components: mvcc
Affects Versions: 2.7
Reporter: Igor Seliverstov
 Fix For: 2.7


Initially MVCC feature was aimed to 2.5 version but cannot be released earlier 
than in scope of 2.7

There are several protocol versions checks that do their stuff for 2.5.0 
version instead of 2.7.0 (for example: 
{{JdbcConnectionContext#initializeFromHandshake}})

Need to identify such places and fix them.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-9314) MVCC TX: Datastreamer operations

2018-08-17 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-9314:


 Summary: MVCC TX: Datastreamer operations
 Key: IGNITE-9314
 URL: https://issues.apache.org/jira/browse/IGNITE-9314
 Project: Ignite
  Issue Type: Task
Reporter: Igor Seliverstov


Need to change DataStreamer semantics (make it transactional)

Currently clients can see DataStreamer partial writes and two subsequent 
selects, which are run in scope of one transaction at load time, may return 
different results.

Related thread:
http://apache-ignite-developers.2346864.n4.nabble.com/MVCC-and-IgniteDataStreamer-td32340.html



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-9265) MVCC TX: Two rows with the same key in one MERGE statement produce an exception

2018-08-14 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-9265:


 Summary: MVCC TX: Two rows with the same key in one MERGE 
statement produce an exception
 Key: IGNITE-9265
 URL: https://issues.apache.org/jira/browse/IGNITE-9265
 Project: Ignite
  Issue Type: Bug
Reporter: Igor Seliverstov


In case the operation like {{MERGE INTO INTEGER (_key, _val) KEY(_key) VALUES 
(1,1),(1,2)}} is called an exception is occurred.

Correct behavior: each next update on the same key overwrites pervious one 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-8865) SQL Transactions: Set sequential false if update query has no order

2018-06-24 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-8865:


 Summary: SQL Transactions: Set sequential false if update query 
has no order
 Key: IGNITE-8865
 URL: https://issues.apache.org/jira/browse/IGNITE-8865
 Project: Ignite
  Issue Type: Task
Reporter: Igor Seliverstov


See appropriate TODO in DmlStatementsProcessor



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-8692) MVCC TX: Always persistent TxLog

2018-06-04 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-8692:


 Summary: MVCC TX: Always persistent TxLog
 Key: IGNITE-8692
 URL: https://issues.apache.org/jira/browse/IGNITE-8692
 Project: Ignite
  Issue Type: Task
  Components: cache, sql
Reporter: Igor Seliverstov


Currently TxLog may be overflowed in case a long running Tx prevents 
"vacuuming".

It can be solved by enabling persistence for TxLog data region by default.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-8239) SQL TX: Do not use skipReducer flag for MVCC DML requests

2018-04-12 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-8239:


 Summary: SQL TX: Do not use skipReducer flag for MVCC DML requests
 Key: IGNITE-8239
 URL: https://issues.apache.org/jira/browse/IGNITE-8239
 Project: Ignite
  Issue Type: Task
Reporter: Igor Seliverstov


Currently we explicitly set skipReducer flag to true to get UpdatePlan with 
DmlDistributedPlanInfo. We should check if mvcc is enabled instead.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-8208) SQL TX: Do not check with TxLog rows having the same insert and update versions

2018-04-10 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-8208:


 Summary: SQL TX: Do not check with TxLog rows having the same 
insert and update versions
 Key: IGNITE-8208
 URL: https://issues.apache.org/jira/browse/IGNITE-8208
 Project: Ignite
  Issue Type: Task
Reporter: Igor Seliverstov


Such rows are invisible for all readers (double-changed in scope of one tx).



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-8207) SQL TX: Cleanup own previous changes on update

2018-04-10 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-8207:


 Summary: SQL TX: Cleanup own previous changes on update
 Key: IGNITE-8207
 URL: https://issues.apache.org/jira/browse/IGNITE-8207
 Project: Ignite
  Issue Type: Task
Reporter: Igor Seliverstov


During update process we're cleaning up rows, which became invisible for all 
readers.

Updating a row more than once we are free to cleanup previous own changes 
except last one. This means we shouldn't leave more than two rows per key with 
version equal to current tx for updates and one for delete operations.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-8206) SQL TX: Rewrite MvccCursor

2018-04-10 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-8206:


 Summary: SQL TX: Rewrite MvccCursor
 Key: IGNITE-8206
 URL: https://issues.apache.org/jira/browse/IGNITE-8206
 Project: Ignite
  Issue Type: Task
Reporter: Igor Seliverstov


Currently we materialize rows before passing Mvcc filter. It means we 
deserialize all rows, including invisible for snapshot.

We need to pass the filter to BPlusTree.find() method instead.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-8149) MVCC TX Size method should use tx snapshot

2018-04-05 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-8149:


 Summary: MVCC TX Size method should use tx snapshot
 Key: IGNITE-8149
 URL: https://issues.apache.org/jira/browse/IGNITE-8149
 Project: Ignite
  Issue Type: Task
  Components: cache
Reporter: Igor Seliverstov


Currently cache.size() returns number of entries in cache trees while there can 
be several versions of one key-value pairs.

We should use tx snapshot and count all passed mvcc filter entries instead.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-7991) MVCC TX Crash recovery

2018-03-19 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-7991:


 Summary: MVCC TX Crash recovery
 Key: IGNITE-7991
 URL: https://issues.apache.org/jira/browse/IGNITE-7991
 Project: Ignite
  Issue Type: Task
  Components: cache
Reporter: Igor Seliverstov


Implement crash recovery for MVCC enabled caches



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-7966) MVCC TX Review cache/Ignite configuration for MVCC needs

2018-03-15 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-7966:


 Summary: MVCC TX Review cache/Ignite configuration for MVCC needs
 Key: IGNITE-7966
 URL: https://issues.apache.org/jira/browse/IGNITE-7966
 Project: Ignite
  Issue Type: Task
  Components: cache, sql
Reporter: Igor Seliverstov


We need to rethink Ignite and Cache configuration to have a control on such 
parameters as VACUUM frequency, TxLog data-region parameters, whether MVCC 
enabled or not for particular cache etc. Most of such parameters are hardcoded 
now.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-7792) IgniteDatabaseSharedManager refactoring

2018-02-22 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-7792:


 Summary: IgniteDatabaseSharedManager refactoring
 Key: IGNITE-7792
 URL: https://issues.apache.org/jira/browse/IGNITE-7792
 Project: Ignite
  Issue Type: Task
  Components: cache
Reporter: Igor Seliverstov


Currently there is no mapping of cacheId to page memory which prevents adding 
custom persistent structures 
({{GridCacheDatabaseSharedManager.WriteCheckpointPages#run}}).



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-7748) MVCC TX Implement TxLog related stuctures

2018-02-19 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-7748:


 Summary: MVCC TX Implement TxLog related stuctures
 Key: IGNITE-7748
 URL: https://issues.apache.org/jira/browse/IGNITE-7748
 Project: Ignite
  Issue Type: Task
  Components: cache
Reporter: Igor Seliverstov
Assignee: Igor Seliverstov


Create TxLog on the basis of BPlusTree.

The key is a pair of two long (which correspond to crd version and mvcc cntr of 
MvccVersion)

The value is TxState - an enum.

TxState has next possible values : PREPARED, COMMITTED, ABORTED, NA.

NA is a special value, which is returned when there is no info about requested 
TX.

TxLog is managed by MvccProcessor and initiated along with MvccProcessor.

At the first step there is no special WAL records corresponding to TxLog 
operation (will be implemented in future.

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-7604) SQL TX: Allow DML operations with reducer

2018-02-01 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-7604:


 Summary: SQL TX: Allow DML operations with reducer
 Key: IGNITE-7604
 URL: https://issues.apache.org/jira/browse/IGNITE-7604
 Project: Ignite
  Issue Type: Task
  Components: sql
Reporter: Igor Seliverstov


Allow DML operations with reducer



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-7583) SQL TX: Change secondary indexes structure

2018-01-31 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-7583:


 Summary: SQL TX: Change secondary indexes structure
 Key: IGNITE-7583
 URL: https://issues.apache.org/jira/browse/IGNITE-7583
 Project: Ignite
  Issue Type: Task
  Components: sql
Reporter: Igor Seliverstov


We need to change:
 * rows with the same key and different versions should be placed in a tree 
ordered by version decending
 * move next version from BTree leafs to data rows
 * filters according to next logic: the row is visible if leaf version is less 
than assigned and not active and max_version of referenced row is NA or heigher 
than assigned or active 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-7388) MVCC TX Support async tx rollback (e.g. on timeout)

2018-01-11 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-7388:


 Summary: MVCC TX Support async tx rollback (e.g. on timeout)
 Key: IGNITE-7388
 URL: https://issues.apache.org/jira/browse/IGNITE-7388
 Project: Ignite
  Issue Type: Bug
Reporter: Igor Seliverstov


Currently TX timeout isn't taken into consideration while MVCC version is 
requesting.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (IGNITE-7384) MVCC Mvcc versions may be lost in case of rebalanse with persistence enabled

2018-01-11 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-7384:


 Summary: MVCC Mvcc versions may be lost in case of rebalanse with 
persistence enabled
 Key: IGNITE-7384
 URL: https://issues.apache.org/jira/browse/IGNITE-7384
 Project: Ignite
  Issue Type: Bug
Reporter: Igor Seliverstov


In case a node returns to topology it equests a delta instead of full 
partition, WAL-based iterator is used there 
({{o.a.i.i.processors.cache.persistence.GridCacheOffheapManager#rebalanceIterator}})

WAL-based iterator doesn't contain MVCC versions which causes issues.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (IGNITE-7371) MVCC TX Repeatable read semantic

2018-01-10 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-7371:


 Summary: MVCC TX Repeatable read semantic
 Key: IGNITE-7371
 URL: https://issues.apache.org/jira/browse/IGNITE-7371
 Project: Ignite
  Issue Type: New Feature
  Components: cache
Reporter: Igor Seliverstov
 Fix For: 2.5


Repeatable read isolation implies that each GET operation whithin tx gets a 
last commited version of entry *at the time the tx was started*. Curentrly we 
get a last commited version of entry *at the time the first read operation 
invokes on a particular key whithin tx.* We need to fix this unconsistence.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (IGNITE-7342) SQL TX: Fix checking whether currently updating row is updated after it pass query filter

2017-12-29 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-7342:


 Summary: SQL TX: Fix checking whether currently updating row is 
updated after it pass query filter
 Key: IGNITE-7342
 URL: https://issues.apache.org/jira/browse/IGNITE-7342
 Project: Ignite
  Issue Type: Bug
  Components: sql
Reporter: Igor Seliverstov
Assignee: Igor Seliverstov
 Fix For: 2.5






--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (IGNITE-7267) Fix transactional inserts.

2017-12-20 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-7267:


 Summary: Fix transactional inserts.
 Key: IGNITE-7267
 URL: https://issues.apache.org/jira/browse/IGNITE-7267
 Project: Ignite
  Issue Type: Bug
  Components: sql
Reporter: Igor Seliverstov
Assignee: Igor Seliverstov
 Fix For: 2.5


Inserts optimisation (IGNITE-4490) breaks transactional inserts. Need to rework 
the feature.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (IGNITE-7249) SQL TX: Commit/rollback active TX before processing DDL statement

2017-12-19 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-7249:


 Summary: SQL TX: Commit/rollback active TX before processing DDL 
statement
 Key: IGNITE-7249
 URL: https://issues.apache.org/jira/browse/IGNITE-7249
 Project: Ignite
  Issue Type: Test
  Components: sql
Reporter: Igor Seliverstov
Assignee: Igor Seliverstov






--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (IGNITE-7187) SQL TX: Near caches support

2017-12-13 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-7187:


 Summary: SQL TX: Near caches support
 Key: IGNITE-7187
 URL: https://issues.apache.org/jira/browse/IGNITE-7187
 Project: Ignite
  Issue Type: Task
  Components: sql
Reporter: Igor Seliverstov


Currently near readers don't participate in SQL transactions, we need to notify 
near readers on updates.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (IGNITE-7188) SQL TX: Retry strategy on lock conflicts

2017-12-13 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-7188:


 Summary: SQL TX: Retry strategy on lock conflicts
 Key: IGNITE-7188
 URL: https://issues.apache.org/jira/browse/IGNITE-7188
 Project: Ignite
  Issue Type: Task
  Components: sql
Reporter: Igor Seliverstov


We need to provide some strategy to avoid lock conflicts (deadlocks), detect 
and hanle them.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (IGNITE-7186) SQL TX: Updates on backup nodes/Replicated caches support

2017-12-13 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-7186:


 Summary: SQL TX: Updates on backup nodes/Replicated caches support
 Key: IGNITE-7186
 URL: https://issues.apache.org/jira/browse/IGNITE-7186
 Project: Ignite
  Issue Type: Task
  Components: sql
Reporter: Igor Seliverstov


Current TX implementation implies update backup partitions at the tx prepare 
state sending set of keys and update values from primary nodes. This approach 
works fine for Key-Value store but produces issues when we run SQL update 
without WHERE clause on a table of billions rows. We need to process somehow 
primary and backups partitions at the same time using mainly local query 
results.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (IGNITE-7184) SQL TX: Support optimistic transactions

2017-12-13 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-7184:


 Summary: SQL TX: Support optimistic transactions
 Key: IGNITE-7184
 URL: https://issues.apache.org/jira/browse/IGNITE-7184
 Project: Ignite
  Issue Type: Task
  Components: sql
Reporter: Igor Seliverstov


Support optimistic transactions



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (IGNITE-7185) SQL TX: Updates during rebalancing.

2017-12-13 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-7185:


 Summary: SQL TX: Updates during rebalancing.
 Key: IGNITE-7185
 URL: https://issues.apache.org/jira/browse/IGNITE-7185
 Project: Ignite
  Issue Type: Task
  Components: sql
Reporter: Igor Seliverstov


Crrently we map an update operation to data nodes and perform it on all the 
nodes simultaneously. It works fine on stable topology but produces many issues 
if the operation happens at the rebalance time because we cannot query data 
properly if some partitions are in moving state.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (IGNITE-7183) SQL TX: Implicit transactions

2017-12-13 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-7183:


 Summary: SQL TX: Implicit transactions
 Key: IGNITE-7183
 URL: https://issues.apache.org/jira/browse/IGNITE-7183
 Project: Ignite
  Issue Type: Task
Reporter: Igor Seliverstov


Implicit transaction has to be started on any SQL update in a transactional 
cache.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (IGNITE-7164) SQL TX: Locking protocol for complex cases

2017-12-11 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-7164:


 Summary: SQL TX: Locking protocol for complex cases
 Key: IGNITE-7164
 URL: https://issues.apache.org/jira/browse/IGNITE-7164
 Project: Ignite
  Issue Type: Task
  Components: sql
Reporter: Igor Seliverstov


Currently several features are still unimplemented:
# Implicit transactions
# Optimistic transactions
# Transactional SQL updates during rebalancing
# Updates on backup nodes/Replicated caches support
# Near caches support
# TX restore
# Remap on topology changes



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (IGNITE-6931) Avoid extra deserialization on index rebuild

2017-11-16 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-6931:


 Summary: Avoid extra deserialization on index rebuild
 Key: IGNITE-6931
 URL: https://issues.apache.org/jira/browse/IGNITE-6931
 Project: Ignite
  Issue Type: Improvement
  Security Level: Public (Viewable by anyone)
  Components: cache, sql
Affects Versions: 2.3
Reporter: Igor Seliverstov
Assignee: Igor Seliverstov
 Fix For: 2.4


Currently on index rebuild we open a cursor over cache keys and for each key 
get a full row instead of using already extracted one. 



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (IGNITE-6929) Preserve mvcc versions on index rebuild

2017-11-16 Thread Igor Seliverstov (JIRA)
Igor Seliverstov created IGNITE-6929:


 Summary: Preserve mvcc versions on index rebuild
 Key: IGNITE-6929
 URL: https://issues.apache.org/jira/browse/IGNITE-6929
 Project: Ignite
  Issue Type: Bug
  Security Level: Public (Viewable by anyone)
  Components: sql
Reporter: Igor Seliverstov
Assignee: Igor Seliverstov


Currently we may loose next available version for an index row on index rebuild 
({{org.apache.ignite.internal.processors.cache.IgniteCacheOffheapManagerImpl.CacheDataStoreImpl#updateIndexes}})



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


  1   2   >