[jira] [Created] (IGNITE-19495) SQL onheap cache stores row on per-cache basis, but access these rows on per-index basis

2023-05-17 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-19495:
--

 Summary: SQL onheap cache stores row on per-cache basis, but 
access these rows on per-index basis
 Key: IGNITE-19495
 URL: https://issues.apache.org/jira/browse/IGNITE-19495
 Project: Ignite
  Issue Type: Bug
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


If there are two indexes on the same cache and sqlOnHeapCache property is 
enabled there can be node failures such as:
{noformat}
org.apache.ignite.internal.processors.cache.persistence.tree.CorruptedTreeException:
 B+Tree is corrupted [groupId=-917681634, pageIds=[844420635164678], 
cacheId=-917681634, cacheName=..., indexName=_key_PK, msg=Runtime failure on 
row: Row@71aeb1b9[ ... ][  ]]
...
Caused by: org.apache.ignite.IgniteException: Failed to store new index row.
...
Caused by: java.lang.UnsupportedOperationException: 13 cannot be used for 
inline type 19
{noformat}
Root cause: {{IndexRowCache}} is created per cache group (see 
{{IndexRowCacheRegistry#onCacheRegistered}}), but stores {{IndexRowImpl}} 
binded to particular index (see {{InlineIndexTree#createIndexRow}}). In case, 
when another index requires the same data row, it gets row from the onheap 
cache with the wrong index row handler.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-18832) Option to assign specific name to thin client and capturing the name in sys.client_connections

2023-05-18 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-18832:
---
Flags:   (was: Important)

> Option to assign specific name to thin client and capturing the name in 
> sys.client_connections
> --
>
> Key: IGNITE-18832
> URL: https://issues.apache.org/jira/browse/IGNITE-18832
> Project: Ignite
>  Issue Type: Improvement
>  Components: thin client
>Affects Versions: 2.12, 2.13, 2.11.1, 2.14
>Reporter: Gangaiah 
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: IEP-35
> Fix For: 2.16
>
>
>  
> System view client_connections doesn't have name column to capture client 
> name, it should have the column to track the thin client connections.. It's 
> difficult to pin point the client where remote address same for multiple 
> clients in production scenarios.
> https://lists.apache.org/thread/joy6vjopq2zovkj768hnhfvmd44vhs4b



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-18832) Option to assign specific name to thin client and capturing the name in sys.client_connections

2023-05-18 Thread Aleksey Plekhanov (Jira)


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

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

> Option to assign specific name to thin client and capturing the name in 
> sys.client_connections
> --
>
> Key: IGNITE-18832
> URL: https://issues.apache.org/jira/browse/IGNITE-18832
> Project: Ignite
>  Issue Type: Improvement
>  Components: thin client
>Affects Versions: 2.12, 2.13, 2.11.1, 2.14
>Reporter: Gangaiah 
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: IEP-35
> Fix For: 2.16
>
>
>  
> System view client_connections doesn't have name column to capture client 
> name, it should have the column to track the thin client connections.. It's 
> difficult to pin point the client where remote address same for multiple 
> clients in production scenarios.
> https://lists.apache.org/thread/joy6vjopq2zovkj768hnhfvmd44vhs4b



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-19553) Metrics for operations on indexes

2023-05-23 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-19553:
--

 Summary: Metrics for operations on indexes
 Key: IGNITE-19553
 URL: https://issues.apache.org/jira/browse/IGNITE-19553
 Project: Ignite
  Issue Type: Improvement
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Currently, we don't have metrics about performance of operations on indexes. We 
have, {{io.statistics.sortedIndexes.*}} metrics about logical and physical page 
reads, but without operation types and without duration. It will be heplful to 
have metrics for different operations on indexes.  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-19562) Calcite engine. Make sure all diagnostic tools work

2023-05-25 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-19562:
--

 Summary: Calcite engine. Make sure all diagnostic tools work 
 Key: IGNITE-19562
 URL: https://issues.apache.org/jira/browse/IGNITE-19562
 Project: Ignite
  Issue Type: Improvement
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Calcite-based SQL engine and H2-based SQL engine use different paths to run 
queries. For H2-based engine we have a lot of diagnostic tools, perhaps some of 
them are not working for Calcite-based SQL engine. 
We need to check (write tests) and fix (in case it's not working) such 
instruments as:
* Metrics (i.e. "sql.parser.cache" and "sql.queries.user" registries)
* Events (i.e. {{EVT_SQL_QUERY_EXECUTION}})
* Long running queries warnings in log messages (see 
{{IgniteConfiguration#setLongQueryWarningTimeout(long)}})
* Performance statistics
* Tracing (tracing is a big task and should be done in a separate ticket)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-19584) Calcite engine. Implement SQL metrics

2023-05-29 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-19584:
--

 Summary: Calcite engine. Implement SQL metrics
 Key: IGNITE-19584
 URL: https://issues.apache.org/jira/browse/IGNITE-19584
 Project: Ignite
  Issue Type: Sub-task
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Currently, we have two group of metrics for SQL: 
* "sql.parser.cache" - shows count of hits/misses during SQL queries parsing
* "sql.queries.user" - shows count of succesfully executed and failed metrics
Parser metrics are not affected by Calcite-based engine and execution metrics 
count all metrics as succesfully executed. 
We need to implement parser metrics and fix execution metrics.  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-19562) Calcite engine. Make sure all diagnostic tools work

2023-05-29 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-19562:
---
Description: 
Calcite-based SQL engine and H2-based SQL engine use different paths to run 
queries. For H2-based engine we have a lot of diagnostic tools, perhaps some of 
them are not working for Calcite-based SQL engine. 
We need to check (write tests) and fix (in case it's not working) such 
instruments as:
* Metrics
* Events (i.e. {{EVT_SQL_QUERY_EXECUTION}})
* Long running queries warnings in log messages (see 
{{IgniteConfiguration#setLongQueryWarningTimeout(long)}})
* Performance statistics
* Tracing
* Hiding of sensitive information in diagnostic tools

  was:
Calcite-based SQL engine and H2-based SQL engine use different paths to run 
queries. For H2-based engine we have a lot of diagnostic tools, perhaps some of 
them are not working for Calcite-based SQL engine. 
We need to check (write tests) and fix (in case it's not working) such 
instruments as:
* Metrics (i.e. "sql.parser.cache" and "sql.queries.user" registries)
* Events (i.e. {{EVT_SQL_QUERY_EXECUTION}})
* Long running queries warnings in log messages (see 
{{IgniteConfiguration#setLongQueryWarningTimeout(long)}})
* Performance statistics
* Tracing (tracing is a big task and should be done in a separate ticket)


> Calcite engine. Make sure all diagnostic tools work 
> 
>
> Key: IGNITE-19562
> URL: https://issues.apache.org/jira/browse/IGNITE-19562
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: calcite
>
> Calcite-based SQL engine and H2-based SQL engine use different paths to run 
> queries. For H2-based engine we have a lot of diagnostic tools, perhaps some 
> of them are not working for Calcite-based SQL engine. 
> We need to check (write tests) and fix (in case it's not working) such 
> instruments as:
> * Metrics
> * Events (i.e. {{EVT_SQL_QUERY_EXECUTION}})
> * Long running queries warnings in log messages (see 
> {{IgniteConfiguration#setLongQueryWarningTimeout(long)}})
> * Performance statistics
> * Tracing
> * Hiding of sensitive information in diagnostic tools



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-19585) Calcite engine. Performance statistics

2023-05-29 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-19585:
--

 Summary: Calcite engine. Performance statistics
 Key: IGNITE-19585
 URL: https://issues.apache.org/jira/browse/IGNITE-19585
 Project: Ignite
  Issue Type: Sub-task
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Currently, only root query event are written to performance statistics for 
Calcite-based SQL engine.
We should fix it and implement physical/logical reads events for Calcite engine 
as well.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-19584) Calcite engine. SQL metrics

2023-05-29 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-19584:
---
Description: 
Currently, we have two groups (registries) of metrics for SQL: 
* "sql.parser.cache" - shows count of hits/misses during SQL queries parsing
* "sql.queries.user" - shows count of succesfully executed and failed metrics
Parser metrics are not affected by Calcite-based engine and execution metrics 
count all metrics as succesfully executed. 
We need to implement parser metrics and fix execution metrics.  

  was:
Currently, we have two group of metrics for SQL: 
* "sql.parser.cache" - shows count of hits/misses during SQL queries parsing
* "sql.queries.user" - shows count of succesfully executed and failed metrics
Parser metrics are not affected by Calcite-based engine and execution metrics 
count all metrics as succesfully executed. 
We need to implement parser metrics and fix execution metrics.  

Summary: Calcite engine. SQL metrics  (was: Calcite engine. Implement 
SQL metrics)

> Calcite engine. SQL metrics
> ---
>
> Key: IGNITE-19584
> URL: https://issues.apache.org/jira/browse/IGNITE-19584
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>
> Currently, we have two groups (registries) of metrics for SQL: 
> * "sql.parser.cache" - shows count of hits/misses during SQL queries parsing
> * "sql.queries.user" - shows count of succesfully executed and failed metrics
> Parser metrics are not affected by Calcite-based engine and execution metrics 
> count all metrics as succesfully executed. 
> We need to implement parser metrics and fix execution metrics.  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-19586) Calcite engine. Events

2023-05-29 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-19586:
--

 Summary: Calcite engine. Events
 Key: IGNITE-19586
 URL: https://issues.apache.org/jira/browse/IGNITE-19586
 Project: Ignite
  Issue Type: Sub-task
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Currently, for Calcite-based SQL enginge only EVT_CACHE_QUERY_EXECUTED event is 
fired, but H2-based SQL engine fires also EVT_CACHE_QUERY_OBJECT_READ and 
EVT_SQL_QUERY_EXECUTION. Calcite engine should fire these events as well.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-19562) Calcite engine. Make sure all diagnostic tools work

2023-05-29 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-19562:
---
Description: 
Calcite-based SQL engine and H2-based SQL engine use different paths to run 
queries. For H2-based engine we have a lot of diagnostic tools, perhaps some of 
them are not working for Calcite-based SQL engine. 
We need to check (write tests) and fix (in case it's not working) such 
instruments as:
* Metrics
* Events
* Long running queries warnings in log messages
* Performance statistics
* Tracing
* Hiding of sensitive information in diagnostic tools

  was:
Calcite-based SQL engine and H2-based SQL engine use different paths to run 
queries. For H2-based engine we have a lot of diagnostic tools, perhaps some of 
them are not working for Calcite-based SQL engine. 
We need to check (write tests) and fix (in case it's not working) such 
instruments as:
* Metrics
* Events
* Long running queries warnings in log messages (see 
{{IgniteConfiguration#setLongQueryWarningTimeout(long)}})
* Performance statistics
* Tracing
* Hiding of sensitive information in diagnostic tools


> Calcite engine. Make sure all diagnostic tools work 
> 
>
> Key: IGNITE-19562
> URL: https://issues.apache.org/jira/browse/IGNITE-19562
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: calcite
>
> Calcite-based SQL engine and H2-based SQL engine use different paths to run 
> queries. For H2-based engine we have a lot of diagnostic tools, perhaps some 
> of them are not working for Calcite-based SQL engine. 
> We need to check (write tests) and fix (in case it's not working) such 
> instruments as:
> * Metrics
> * Events
> * Long running queries warnings in log messages
> * Performance statistics
> * Tracing
> * Hiding of sensitive information in diagnostic tools



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-19562) Calcite engine. Make sure all diagnostic tools work

2023-05-29 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-19562:
---
Description: 
Calcite-based SQL engine and H2-based SQL engine use different paths to run 
queries. For H2-based engine we have a lot of diagnostic tools, perhaps some of 
them are not working for Calcite-based SQL engine. 
We need to check (write tests) and fix (in case it's not working) such 
instruments as:
* Metrics
* Events
* Long running queries warnings in log messages (see 
{{IgniteConfiguration#setLongQueryWarningTimeout(long)}})
* Performance statistics
* Tracing
* Hiding of sensitive information in diagnostic tools

  was:
Calcite-based SQL engine and H2-based SQL engine use different paths to run 
queries. For H2-based engine we have a lot of diagnostic tools, perhaps some of 
them are not working for Calcite-based SQL engine. 
We need to check (write tests) and fix (in case it's not working) such 
instruments as:
* Metrics
* Events (i.e. {{EVT_SQL_QUERY_EXECUTION}})
* Long running queries warnings in log messages (see 
{{IgniteConfiguration#setLongQueryWarningTimeout(long)}})
* Performance statistics
* Tracing
* Hiding of sensitive information in diagnostic tools


> Calcite engine. Make sure all diagnostic tools work 
> 
>
> Key: IGNITE-19562
> URL: https://issues.apache.org/jira/browse/IGNITE-19562
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: calcite
>
> Calcite-based SQL engine and H2-based SQL engine use different paths to run 
> queries. For H2-based engine we have a lot of diagnostic tools, perhaps some 
> of them are not working for Calcite-based SQL engine. 
> We need to check (write tests) and fix (in case it's not working) such 
> instruments as:
> * Metrics
> * Events
> * Long running queries warnings in log messages (see 
> {{IgniteConfiguration#setLongQueryWarningTimeout(long)}})
> * Performance statistics
> * Tracing
> * Hiding of sensitive information in diagnostic tools



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-19588) Calcite engine. Long running queries warning

2023-05-29 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-19588:
--

 Summary: Calcite engine. Long running queries warning
 Key: IGNITE-19588
 URL: https://issues.apache.org/jira/browse/IGNITE-19588
 Project: Ignite
  Issue Type: Sub-task
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


For H2-based SQL engine we have warnings in the log files, if query executed 
for too long time (see {{IgniteConfiguration#setLongQueryWarningTimeout(long)}})
We need the same functionality for the Calcite-based SQL engine.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-19589) Calcite engine. Tracing

2023-05-29 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-19589:
--

 Summary: Calcite engine. Tracing
 Key: IGNITE-19589
 URL: https://issues.apache.org/jira/browse/IGNITE-19589
 Project: Ignite
  Issue Type: Sub-task
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


We need to support tracing for the Calcite-based SQL engine.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-19590) Calcite engine. Hide sensitive information in diagnostic tools

2023-05-29 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-19590:
--

 Summary: Calcite engine. Hide sensitive information in diagnostic 
tools
 Key: IGNITE-19590
 URL: https://issues.apache.org/jira/browse/IGNITE-19590
 Project: Ignite
  Issue Type: Sub-task
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


We need to hide sensitive information in queries exposed to diagnostic tools 
for the Calcite-based SQL engine, if flag IGNITE_TO_STRING_INCLUDE_SENSITIVE is 
not set.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-19585) Calcite engine. Performance statistics

2023-05-30 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-19585:
---
Labels: calcite  (was: )

> Calcite engine. Performance statistics
> --
>
> Key: IGNITE-19585
> URL: https://issues.apache.org/jira/browse/IGNITE-19585
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: calcite
> Fix For: 2.16
>
>  Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> Currently, only root query event are written to performance statistics for 
> Calcite-based SQL engine.
> We should fix it and implement physical/logical reads events for Calcite 
> engine as well.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-19586) Calcite engine. Events

2023-06-01 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-19586:
---
Release Note: SQL Calcite: Added events on query execution 
(EVT_CACHE_QUERY_OBJECT_READ, EVT_SQL_QUERY_EXECUTION)  (was: SQL Calcite: 
Added SQL/Query events)

> Calcite engine. Events
> --
>
> Key: IGNITE-19586
> URL: https://issues.apache.org/jira/browse/IGNITE-19586
> Project: Ignite
>  Issue Type: Sub-task
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
> Fix For: 2.16
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> Currently, for Calcite-based SQL enginge only EVT_CACHE_QUERY_EXECUTED event 
> is fired, but H2-based SQL engine fires also EVT_CACHE_QUERY_OBJECT_READ and 
> EVT_SQL_QUERY_EXECUTION. Calcite engine should fire these events as well.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-19553) Metrics for operations on indexes

2023-06-07 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-19553:
---
Labels: ise  (was: )

> Metrics for operations on indexes
> -
>
> Key: IGNITE-19553
> URL: https://issues.apache.org/jira/browse/IGNITE-19553
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: ise
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> Currently, we don't have metrics about performance of operations on indexes. 
> We have, {{io.statistics.sortedIndexes.*}} metrics about logical and physical 
> page reads, but without operation types and without duration. It will be 
> heplful to have metrics for different operations on indexes.  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-19562) Calcite engine. Make sure all diagnostic tools work

2023-06-13 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-19562:
---
Labels: calcite ise  (was: calcite)

> Calcite engine. Make sure all diagnostic tools work 
> 
>
> Key: IGNITE-19562
> URL: https://issues.apache.org/jira/browse/IGNITE-19562
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: calcite, ise
>
> Calcite-based SQL engine and H2-based SQL engine use different paths to run 
> queries. For H2-based engine we have a lot of diagnostic tools, perhaps some 
> of them are not working for Calcite-based SQL engine. 
> We need to check (write tests) and fix (in case it's not working) such 
> instruments as:
> * Metrics
> * Events
> * Long running queries warnings in log messages
> * Performance statistics
> * Tracing
> * Hiding of sensitive information in diagnostic tools



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-18390) Calcite engine. Reduce count of created spools during planning

2023-06-13 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-18390:
---
Labels: calcite calcite2-required ise  (was: calcite calcite2-required)

> Calcite engine. Reduce count of created spools during planning
> --
>
> Key: IGNITE-18390
> URL: https://issues.apache.org/jira/browse/IGNITE-18390
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: calcite, calcite2-required, ise
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currently, when trying to convert traits table spool is created for each 
> exchange node, but not always required. Root node not required to be 
> rewindable, rewindability is required only on the right hand of correlated 
> nested loop node, but rewindability trait is propagated from the bottom nodes 
> (table and index scans) to the top nodes and all nodes are converted to 
> rewindable, this cause redundant spool creation.
> Investigate posibility to reduce count of table spools to reduce planning 
> time.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-19748) Calcite engine. Support queries timeout

2023-06-15 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-19748:
--

 Summary: Calcite engine. Support queries timeout
 Key: IGNITE-19748
 URL: https://issues.apache.org/jira/browse/IGNITE-19748
 Project: Ignite
  Issue Type: Improvement
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


We can set timeout for SQL queries:
* Using {{SqlFieldsQuery.timeout}} property (for certain query)
* Using "sql.defaultQueryTimeout" distributed property (default for all queries)
But Calcite-based SQL query engine ignore these timeouts. Only possible timeout 
supported by the new engine is planning timeout. We should support execution 
timeouts too.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-19748) Calcite engine. Support queries timeout

2023-06-15 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-19748:
---
Labels: calcite ise  (was: calcite)

> Calcite engine. Support queries timeout
> ---
>
> Key: IGNITE-19748
> URL: https://issues.apache.org/jira/browse/IGNITE-19748
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: calcite, ise
>
> We can set timeout for SQL queries:
> * Using {{SqlFieldsQuery.timeout}} property (for certain query)
> * Using "sql.defaultQueryTimeout" distributed property (default for all 
> queries)
> But Calcite-based SQL query engine ignore these timeouts. Only possible 
> timeout supported by the new engine is planning timeout. We should support 
> execution timeouts too.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-19748) Calcite engine. Support queries timeout

2023-06-15 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-19748:
---
Description: 
We can set timeout for SQL queries:
* Using {{SqlFieldsQuery.timeout}} property (for certain query)
* Using "sql.defaultQueryTimeout" distributed property (default for all queries)

But Calcite-based SQL query engine ignore these timeouts. Only possible timeout 
supported by the new engine is planning timeout. We should support execution 
timeouts too.

  was:
We can set timeout for SQL queries:
* Using {{SqlFieldsQuery.timeout}} property (for certain query)
* Using "sql.defaultQueryTimeout" distributed property (default for all queries)
But Calcite-based SQL query engine ignore these timeouts. Only possible timeout 
supported by the new engine is planning timeout. We should support execution 
timeouts too.


> Calcite engine. Support queries timeout
> ---
>
> Key: IGNITE-19748
> URL: https://issues.apache.org/jira/browse/IGNITE-19748
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: calcite
>
> We can set timeout for SQL queries:
> * Using {{SqlFieldsQuery.timeout}} property (for certain query)
> * Using "sql.defaultQueryTimeout" distributed property (default for all 
> queries)
> But Calcite-based SQL query engine ignore these timeouts. Only possible 
> timeout supported by the new engine is planning timeout. We should support 
> execution timeouts too.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-19759) Calcite engine. Review list of reserved keywords

2023-06-16 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-19759:
--

 Summary: Calcite engine. Review list of reserved keywords
 Key: IGNITE-19759
 URL: https://issues.apache.org/jira/browse/IGNITE-19759
 Project: Ignite
  Issue Type: Improvement
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


For the calcite engine we have too strict list of reserved keywords. For 
example, lexems such as "TYPE" and "OPTIONS" are reserved keywords and can't be 
used as columns or table names. But "TYPE" is frequently used by users as 
column name and we should exclude it from the list of reserved keywords (add it 
to non-reserved keywords, see {{config.fmpp}} file \{{nonReservedKeywords}} 
section). Other vendors allow to use "TYPE" as column name. 

We should also review the whole list of reserved keywords (see generated 
{{{}Parser.jj{}}}), perhaps some other keywords should be excluded from 
reserved list too. 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-19759) Calcite engine. Review list of reserved keywords

2023-06-16 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-19759:
---
Labels: ise  (was: )

> Calcite engine. Review list of reserved keywords
> 
>
> Key: IGNITE-19759
> URL: https://issues.apache.org/jira/browse/IGNITE-19759
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: ise
>
> For the calcite engine we have too strict list of reserved keywords. For 
> example, lexems such as "TYPE" and "OPTIONS" are reserved keywords and can't 
> be used as columns or table names. But "TYPE" is frequently used by users as 
> column name and we should exclude it from the list of reserved keywords (add 
> it to non-reserved keywords, see {{config.fmpp}} file 
> \{{nonReservedKeywords}} section). Other vendors allow to use "TYPE" as 
> column name. 
> We should also review the whole list of reserved keywords (see generated 
> {{{}Parser.jj{}}}), perhaps some other keywords should be excluded from 
> reserved list too. 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-19767) Update Ignite dependency: Jetty

2023-06-19 Thread Aleksey Plekhanov (Jira)


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

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

> Update Ignite dependency: Jetty
> ---
>
> Key: IGNITE-19767
> URL: https://issues.apache.org/jira/browse/IGNITE-19767
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksandr Nikolaev
>Assignee: Aleksandr Nikolaev
>Priority: Major
>  Labels: ise
> Fix For: 2.16
>
>  Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> Update Jetty dependency 9.4.43.v20210629 to 9.4.51.v20230217



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-19811) Continuous qieries backup acknowledge message sending fails for expired entries

2023-06-22 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-19811:
--

 Summary: Continuous qieries backup acknowledge message sending 
fails for expired entries
 Key: IGNITE-19811
 URL: https://issues.apache.org/jira/browse/IGNITE-19811
 Project: Ignite
  Issue Type: Bug
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Expire entry event has {{null}} in topology version field (see 
{{CacheContinuousQueryEntry}} constructor in the 
{{CacheContinuousQueryManager#onEntryExpired}} method). When Backup acknowledge 
is sending for such a message it silently (without warnings to log) fails with 
NPE on {{GridDiscoveryManager#cacheGroupAffinityNodes}} -> 
{{GridDiscoveryManager#resolveDiscoCache}} for {{null}} topology version (see 
{{CacheContinuousQueryHandler#sendBackupAcknowledge}}).
This can lead to leaks in query entries buffer 
({{CacheContinuousQueryEventBuffer#backupQ}}).



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-19818) Calcite engine. Query planning failed when cache size is too big

2023-06-23 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-19818:
--

 Summary: Calcite engine. Query planning failed when cache size is 
too big
 Key: IGNITE-19818
 URL: https://issues.apache.org/jira/browse/IGNITE-19818
 Project: Ignite
  Issue Type: Bug
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


We use cache size as estimation for row count while planning, but use 
{{cache.size()}} method, that returns int value. But if cache size is more than 
{{Integer.MAX_VALUE}} we get an wrong size or even negative sometimes, which 
cause assertion errors during planning.
We should fix it to {{cache.sizeLong()}}.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-19818) Calcite engine. Query planning failed when cache size is too big

2023-06-23 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-19818:
---
Labels: ise  (was: )

> Calcite engine. Query planning failed when cache size is too big
> 
>
> Key: IGNITE-19818
> URL: https://issues.apache.org/jira/browse/IGNITE-19818
> Project: Ignite
>  Issue Type: Bug
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: ise
>
> We use cache size as estimation for row count while planning, but use 
> {{cache.size()}} method, that returns int value. But if cache size is more 
> than {{Integer.MAX_VALUE}} we get an wrong size or even negative sometimes, 
> which cause assertion errors during planning.
> We should fix it to {{cache.sizeLong()}}.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-19814) Calcite engine uses 0 as an inlineSize for index created by INT column

2023-06-29 Thread Aleksey Plekhanov (Jira)


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

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

> Calcite engine uses 0 as an inlineSize for index created by INT column
> --
>
> Key: IGNITE-19814
> URL: https://issues.apache.org/jira/browse/IGNITE-19814
> Project: Ignite
>  Issue Type: Bug
>Reporter: Sergey Korotkov
>Assignee: Aleksey Plekhanov
>Priority: Minor
>  Labels: calcite
> Attachments: 
> 0001-IGNITE-19814-Add-calcite-test-for-integer-column-ind.patch
>
>
> Using the Calcite query engine the following SQL statement 
> {code:sql}
> CREATE TABLE TEST (id INT, name VARCHAR, PRIMARY KEY(id))
> {code}
> creates index for INT id column with the inlineSize = 0.
> If the _key_type_ is specified in the WITH clause index is created correctly 
> with the inlineSize = 5:
> {code:sql}
> CREATE TABLE TEST (id INT, name VARCHAR, PRIMARY KEY(id))
> WITH "key_type=Integer"
> {code}
> For H2 engine in both cases inlineSize is 5.
> Reproducer is attached as a unit test.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Assigned] (IGNITE-19814) Calcite engine uses 0 as an inlineSize for index created by INT column

2023-06-29 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov reassigned IGNITE-19814:
--

Assignee: Aleksey Plekhanov

> Calcite engine uses 0 as an inlineSize for index created by INT column
> --
>
> Key: IGNITE-19814
> URL: https://issues.apache.org/jira/browse/IGNITE-19814
> Project: Ignite
>  Issue Type: Bug
>Reporter: Sergey Korotkov
>Assignee: Aleksey Plekhanov
>Priority: Minor
>  Labels: calcite
> Attachments: 
> 0001-IGNITE-19814-Add-calcite-test-for-integer-column-ind.patch
>
>
> Using the Calcite query engine the following SQL statement 
> {code:sql}
> CREATE TABLE TEST (id INT, name VARCHAR, PRIMARY KEY(id))
> {code}
> creates index for INT id column with the inlineSize = 0.
> If the _key_type_ is specified in the WITH clause index is created correctly 
> with the inlineSize = 5:
> {code:sql}
> CREATE TABLE TEST (id INT, name VARCHAR, PRIMARY KEY(id))
> WITH "key_type=Integer"
> {code}
> For H2 engine in both cases inlineSize is 5.
> Reproducer is attached as a unit test.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-19759) Calcite engine. Review list of reserved keywords

2023-07-13 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-19759:
---
Description: 
For the calcite engine we have too strict list of reserved keywords. For 
example, lexems such as "TYPE" and "OPTIONS" are reserved keywords and can't be 
used as columns or table names. But "TYPE" is frequently used by users as 
column name and we should exclude it from the list of reserved keywords (add it 
to non-reserved keywords, see {{config.fmpp}} file {{nonReservedKeywords}} 
section). Other vendors allow to use "TYPE" as column name. 

On the other hand Calcite-based SQL engine in Ignite now allows to use some 
keywords which should not be allowed as table or column names, for example, 
such query executes without any problem:
 {noformat}
sql("create table true (like varchar, and int, as int)");
sql("insert into true values ('1', 1, 1)");
sql("select as as as from true where like like '%' and and between and 
and and");
{noformat}

Current list of reserved keywords copied from "Babel" dialect of Calcite. 
Calcite has "default" dialect with default list of reserved keywords (see [1]), 
this list is close to SQL stantard, but looks quite strict too.
Other vendors lists are less restrictive. For example, in SQL standard build-in 
functions and all built-in types are reserved keywords, in MySQL built-in 
functions are not reserved, but build-in types are reserved, in PostgreeSQL 
only minimal amount of keywords required for correct parsing are reserved 
(built-in functions are not reserved, built-in types are not reserved). See 
comparison table [2]. Our old SQL engine based on H2 database and H2 reserved 
keywords (see [3]). H2 approach is close to PostgreeSQL approach (minimal 
amount of keywords are reserved). I propose to use such an approach for Ignite 
too, to maximaze compatibility between our SQL engines.

[1] https://calcite.apache.org/docs/reference.html#keywords
[2] https://en.wikipedia.org/wiki/List_of_SQL_reserved_words
[3] https://www.h2database.com/html/advanced.html#keywords

  was:
For the calcite engine we have too strict list of reserved keywords. For 
example, lexems such as "TYPE" and "OPTIONS" are reserved keywords and can't be 
used as columns or table names. But "TYPE" is frequently used by users as 
column name and we should exclude it from the list of reserved keywords (add it 
to non-reserved keywords, see {{config.fmpp}} file \{{nonReservedKeywords}} 
section). Other vendors allow to use "TYPE" as column name. 

We should also review the whole list of reserved keywords (see generated 
{{{}Parser.jj{}}}), perhaps some other keywords should be excluded from 
reserved list too. 


> Calcite engine. Review list of reserved keywords
> 
>
> Key: IGNITE-19759
> URL: https://issues.apache.org/jira/browse/IGNITE-19759
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: ise
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> For the calcite engine we have too strict list of reserved keywords. For 
> example, lexems such as "TYPE" and "OPTIONS" are reserved keywords and can't 
> be used as columns or table names. But "TYPE" is frequently used by users as 
> column name and we should exclude it from the list of reserved keywords (add 
> it to non-reserved keywords, see {{config.fmpp}} file {{nonReservedKeywords}} 
> section). Other vendors allow to use "TYPE" as column name. 
> On the other hand Calcite-based SQL engine in Ignite now allows to use some 
> keywords which should not be allowed as table or column names, for example, 
> such query executes without any problem:
>  {noformat}
> sql("create table true (like varchar, and int, as int)");
> sql("insert into true values ('1', 1, 1)");
> sql("select as as as from true where like like '%' and and between 
> and and and");
> {noformat}
> Current list of reserved keywords copied from "Babel" dialect of Calcite. 
> Calcite has "default" dialect with default list of reserved keywords (see 
> [1]), this list is close to SQL stantard, but looks quite strict too.
> Other vendors lists are less restrictive. For example, in SQL standard 
> build-in functions and all built-in types are reserved keywords, in MySQL 
> built-in functions are not reserved, but build-in types are reserved, in 
> PostgreeSQL only minimal amount of keywords required for correct parsing are 
> reserved (built-in functions are not reserved, built-in types are not 
> reserved). See comparison table [2]. Our old SQL engine based on H2 database 
> and H2 reserved keywords (see [3]). H2 approach is close to PostgreeSQL 
> approach (minimal amount of keywords are reserved)

[jira] [Created] (IGNITE-19981) Calcite engine. Optimize mapping sending with query start request

2023-07-13 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-19981:
--

 Summary: Calcite engine. Optimize mapping sending with query start 
request
 Key: IGNITE-19981
 URL: https://issues.apache.org/jira/browse/IGNITE-19981
 Project: Ignite
  Issue Type: Improvement
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Currently we send the whole fragment mapping with query start request to each 
node, but on the node we need only local mapping (we need only set of partition 
to process by current node). If there are a lot of nodes and a lot of 
partitions - mapping can take a lot of space 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-19814) Calcite engine uses 0 as an inlineSize for index created by INT column

2023-07-18 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-19814:
---
Labels: calcite ise  (was: calcite)

> Calcite engine uses 0 as an inlineSize for index created by INT column
> --
>
> Key: IGNITE-19814
> URL: https://issues.apache.org/jira/browse/IGNITE-19814
> Project: Ignite
>  Issue Type: Bug
>Reporter: Sergey Korotkov
>Assignee: Aleksey Plekhanov
>Priority: Minor
>  Labels: calcite, ise
> Fix For: 2.16
>
> Attachments: 
> 0001-IGNITE-19814-Add-calcite-test-for-integer-column-ind.patch
>
>  Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> Using the Calcite query engine the following SQL statement 
> {code:sql}
> CREATE TABLE TEST (id INT, name VARCHAR, PRIMARY KEY(id))
> {code}
> creates index for INT id column with the inlineSize = 0.
> If the _key_type_ is specified in the WITH clause index is created correctly 
> with the inlineSize = 5:
> {code:sql}
> CREATE TABLE TEST (id INT, name VARCHAR, PRIMARY KEY(id))
> WITH "key_type=Integer"
> {code}
> For H2 engine in both cases inlineSize is 5.
> Reproducer is attached as a unit test.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-20006) Calcite engine. Make table/index scan iterators yieldable

2023-07-19 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-20006:
--

 Summary: Calcite engine. Make table/index scan iterators yieldable 
 Key: IGNITE-20006
 URL: https://issues.apache.org/jira/browse/IGNITE-20006
 Project: Ignite
  Issue Type: Improvement
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Currently, index/table iterators can scan unpredictable count of cache entries 
during one {{hasNext()}}/{{next()}} call. These iterators contain filter, which 
applyed to each entry and row produced only for entries that satisfy filter. If 
filter contains "always false" rule, one {{hasNext()}} call may scan entiry 
table uninterruptably, without timeouts and yields to make another queries do 
their job. We should fix this behaviour.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-20006) Calcite engine. Make table/index scan iterators yieldable

2023-07-19 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-20006:
---
Labels: calcite ise  (was: )

> Calcite engine. Make table/index scan iterators yieldable 
> --
>
> Key: IGNITE-20006
> URL: https://issues.apache.org/jira/browse/IGNITE-20006
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: calcite, ise
>
> Currently, index/table iterators can scan unpredictable count of cache 
> entries during one {{hasNext()}}/{{next()}} call. These iterators contain 
> filter, which applyed to each entry and row produced only for entries that 
> satisfy filter. If filter contains "always false" rule, one {{hasNext()}} 
> call may scan entiry table uninterruptably, without timeouts and yields to 
> make another queries do their job. We should fix this behaviour.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-20010) Calcite engine. Query leaks on remote fragment initialization phase failure

2023-07-20 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-20010:
--

 Summary: Calcite engine. Query leaks on remote fragment 
initialization phase failure
 Key: IGNITE-20010
 URL: https://issues.apache.org/jira/browse/IGNITE-20010
 Project: Ignite
  Issue Type: Bug
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


If any error occurs on remote fragment initialization phase (for example, 
LogicalRelImplementor throws an exception), query doesn't removed from running 
query manager 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-20038) [Thin Client] Cache operations with PA enabled can fail with BufferUnderflowException

2023-07-26 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-20038:
---
Affects Version/s: 2.15
   2.14

> [Thin Client] Cache operations with PA enabled can fail with  
> BufferUnderflowException 
> ---
>
> Key: IGNITE-20038
> URL: https://issues.apache.org/jira/browse/IGNITE-20038
> Project: Ignite
>  Issue Type: Task
>Affects Versions: 2.14, 2.15
> Environment: 
>Reporter: Mikhail Petrov
>Assignee: Mikhail Petrov
>Priority: Major
>  Time Spent: 40m
>  Remaining Estimate: 0h
>
> Cache operations with PA enabled can fail on thin clients with  
> BufferUnderflowException due to broken ClientCachePartitionAwarenessGroup 
> serialization.
> Exception: 
> {code:java}
>  java.nio.BufferUnderflowException
>   at java.nio.Buffer.nextGetIndex(Buffer.java:532)
>   at java.nio.HeapByteBuffer.getInt(HeapByteBuffer.java:366)
>   at 
> org.apache.ignite.internal.binary.streams.BinaryByteBufferInputStream.readInt(BinaryByteBufferInputStream.java:111)
>   at 
> org.apache.ignite.internal.binary.BinaryReaderExImpl.readInt(BinaryReaderExImpl.java:746)
>   at 
> org.apache.ignite.internal.client.thin.ClientCacheAffinityMapping.readCacheKeyConfiguration(ClientCacheAffinityMapping.java:240)
>   at 
> org.apache.ignite.internal.client.thin.ClientCacheAffinityMapping.readResponse(ClientCacheAffinityMapping.java:197)
>   at 
> org.apache.ignite.internal.client.thin.ClientCacheAffinityContext.readPartitionsUpdateResponse(ClientCacheAffinityContext.java:154)
>   at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.receive(TcpClientChannel.java:412)
>   at 
> org.apache.ignite.internal.client.thin.TcpClientChannel.service(TcpClientChannel.java:311)
>   at 
> org.apache.ignite.internal.client.thin.ThinClientAbstractPartitionAwarenessTest$TestTcpClientChannel.service(ThinClientAbstractPartitionAwarenessTest.java:345)
>   at 
> org.apache.ignite.internal.client.thin.ReliableChannel.lambda$affinityInfoIsUpToDate$6(ReliableChannel.java:423)
>   at 
> org.apache.ignite.internal.client.thin.ReliableChannel.applyOnNodeChannel(ReliableChannel.java:746)
>   at 
> org.apache.ignite.internal.client.thin.ReliableChannel.affinityInfoIsUpToDate(ReliableChannel.java:422)
>   at 
> org.apache.ignite.internal.client.thin.ReliableChannel.affinityService(ReliableChannel.java:316)
>   at 
> org.apache.ignite.internal.client.thin.TcpClientCache.txAwareService(TcpClientCache.java:1139)
>   at 
> org.apache.ignite.internal.client.thin.TcpClientCache.cacheSingleKeyOperation(TcpClientCache.java:1198)
>   at 
> org.apache.ignite.internal.client.thin.TcpClientCache.get(TcpClientCache.java:146)
>   at 
> org.apache.ignite.internal.client.thin.ThinClientPartitionAwarenessStableTopologyTest.lambda$testMultipleCacheGroupPartitionsRequest$8(ThinClientPartitionAwarenessStableTopologyTest.java:250)
>   at 
> org.apache.ignite.testframework.GridTestUtils.lambda$runAsync$4(GridTestUtils.java:1229)
>   at 
> org.apache.ignite.testframework.GridTestUtils$7.call(GridTestUtils.java:1570)
>   at 
> org.apache.ignite.testframework.GridTestThread.run(GridTestThread.java:88)
> {code}
> Reproducer:
> {code:java}
> /** */
> @Test
> public void test() throws Exception {
> Ignite ignite = startGrid(0);
> ignite.createCache(new 
> CacheConfiguration<>("test-cache-0").setCacheMode(REPLICATED));
> ignite.createCache(new 
> CacheConfiguration<>("test-cache-1").setCacheMode(PARTITIONED));
> try (IgniteClient cli = Ignition.startClient(new 
> ClientConfiguration().setAddresses("127.0.0.1:10800"))) {
> ClientCacheAffinityContext affCtx = 
> ((TcpIgniteClient)cli).reliableChannel().affinityContext();
> IgniteInternalFuture replCacheOpFut;
> IgniteInternalFuture partCacheOpFut;
> synchronized (affCtx.cacheKeyMapperFactoryMap) {
> partCacheOpFut = GridTestUtils.runAsync(() -> 
> cli.cache("test-cache-0").get(0));
> replCacheOpFut = GridTestUtils.runAsync(() -> 
> cli.cache("test-cache-1").get(0));
> GridTestUtils.waitForCondition(
> () -> 
> affCtx.pendingCacheIds.containsAll(F.transform(asList("test-cache-0", 
> "test-cache-1"), CU::cacheId)),
> getTestTimeout()
> );
> }
> partCacheOpFut.get();
> replCacheOpFut.get();
> }
> }
> {code}
> Explanation: 
> Take a look at the ClientCachePartitionAwarenessGroup#write method. During 
> its serialization we write to the buffer the variable "dfltAffinity". Then 
> take a 

[jira] [Created] (IGNITE-20079) Calcite engine. Write additional performance statistics info for queries

2023-07-28 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-20079:
--

 Summary: Calcite engine. Write additional performance statistics 
info for queries 
 Key: IGNITE-20079
 URL: https://issues.apache.org/jira/browse/IGNITE-20079
 Project: Ignite
  Issue Type: Improvement
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Currently, we write query SQL/query time/query page reads to performance 
statistics. But it will be useful to write also real plans and count of entries 
scanned from caches to detect problems (plan can be changed during the time, so 
explain plan later can show differrent value)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-20006) Calcite engine. Make table/index scan iterators yieldable

2023-08-01 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-20006:
---
Ignite Flags:   (was: Release Notes Required)

> Calcite engine. Make table/index scan iterators yieldable 
> --
>
> Key: IGNITE-20006
> URL: https://issues.apache.org/jira/browse/IGNITE-20006
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: calcite, ise
> Fix For: 2.16
>
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> Currently, index/table iterators can scan unpredictable count of cache 
> entries during one {{hasNext()}}/{{next()}} call. These iterators contain 
> filter, which applyed to each entry and row produced only for entries that 
> satisfy filter. If filter contains "always false" rule, one {{hasNext()}} 
> call may scan entiry table uninterruptably, without timeouts and yields to 
> make another queries do their job. We should fix this behaviour.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-20194) Calcite engine. Dependency common-codec required for some functions

2023-08-10 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-20194:
--

 Summary: Calcite engine. Dependency common-codec required for some 
functions
 Key: IGNITE-20194
 URL: https://issues.apache.org/jira/browse/IGNITE-20194
 Project: Ignite
  Issue Type: Bug
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Some functions (md5, soundex) require common-codec dependency, but this 
dependency is not included explicitly to dependencies list and doesn't added to 
calcite library folder on build. Tests run with transitive dependencies and 
don't trigger the problem. Queries fail only when run on Ignite started from 
binary release package.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-20353) Calcite engine. Clause 'WITH affinity_key=...' silently ignored when wrong column is specified

2023-09-05 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-20353:
--

 Summary: Calcite engine. Clause 'WITH affinity_key=...' silently 
ignored when wrong column is specified
 Key: IGNITE-20353
 URL: https://issues.apache.org/jira/browse/IGNITE-20353
 Project: Ignite
  Issue Type: Bug
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Calcite-based SQL engine silently ignore clause WITH affinity_key=... when 
wrong column is specified. H2-based engine in this case throw an error: 
{noformat}
org.apache.ignite.internal.processors.query.IgniteSQLException: Affinity key 
column with given name not found: test
{noformat}

Reproducer:
{code:sql}
CREATE TABLE order_items (id varchar, orderId int, sku varchar, PRIMARY KEY 
(id, orderId) WITH "affinity_key=test");
{code}

Also, there is some problem with case-sensitivity, for example:
{code:sql}
CREATE TABLE order_items (id varchar, orderId int, sku varchar, PRIMARY KEY 
(id, orderId) WITH "affinity_key=orderId");
{code}
Works well for H2-based engine ({{orderId}} in {{affinity_key}} converted to 
{{ORDERID}} and matches {{orderId}} columns alias), but silently ignired for 
Calcite-based engine ({{orderId}} in {{affinity_key}} remains without case 
change). But:
{code:sql}
CREATE TABLE order_items (id varchar, orderId int, sku varchar, PRIMARY KEY 
(id, orderId) WITH "affinity_key=ORDERID");
{code}
Works well for both engines.




--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-20382) Calcite engine. Add metrics for CalciteQueryExecutor thread pool

2023-09-07 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-20382:
--

 Summary: Calcite engine. Add metrics for CalciteQueryExecutor 
thread pool
 Key: IGNITE-20382
 URL: https://issues.apache.org/jira/browse/IGNITE-20382
 Project: Ignite
  Issue Type: Improvement
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Currently, all thread-pools except CalciteQueryExecutor can be monitored via 
metrics, we should add this ability for CalciteQueryExecutor too.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-20383) Calcite engine. Convert one input of a join to the broadcast distribution

2023-09-08 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-20383:
--

 Summary: Calcite engine. Convert one input of a join to the 
broadcast distribution
 Key: IGNITE-20383
 URL: https://issues.apache.org/jira/browse/IGNITE-20383
 Project: Ignite
  Issue Type: Improvement
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Sometimes, if join inputs are not collocated it's worth to broadcast one of the 
inputs, for example, query:
{code:sql}
SELECT * FROM emps WHERE emps.salary = (SELECT AVG(emps.salary) FROM emps){code}
Currently has plan:
{noformat}
IgniteProject(ID=[$0], NAME=[$1], SALARY=[$2])
  IgniteNestedLoopJoin(condition=[=($2, $3)], joinType=[inner])
IgniteExchange(distribution=[single])
  IgniteTableScan(table=[[PUBLIC, EMPS]])
IgniteReduceHashAggregate(group=[{}], AVG(EMPS.SALARY)=[AVG($0)])
  IgniteExchange(distribution=[single])
IgniteMapHashAggregate(group=[{}], AVG(EMPS.SALARY)=[AVG($0)])
  IgniteIndexScan(table=[[PUBLIC, EMPS]], index=[TST], 
requiredColumns=[{2}], collation=[[2 ASC-nulls-first]])
{noformat}
But this plan is not optimal, since we should send entire table EMP from all 
nodes to the single node. For such a query it's better to broadcast result of 
the aggregation, in this case plan will be something like:
{noformat}
IgniteExchange(distribution=[single])
  IgniteProject(ID=[$0], NAME=[$1], SALARY=[$2])
IgniteCorrelatedNestedLoopJoin(...)
  IgniteExchange(distribution=[broadcast])
IgniteReduceHashAggregate(group=[{}], AVG(EMPS.SALARY)=[AVG($0)])
  IgniteExchange(distribution=[single])
IgniteMapHashAggregate(group=[{}], AVG(EMPS.SALARY)=[AVG($0)])
  IgniteIndexScan(table=[[PUBLIC, EMPS]], index=[SALARY_IDX])
  IgniteIndexScan(table=[[PUBLIC, EMPS]], index=[SALARY_IDX])
{noformat}
But currently we don't try to convert any of the join inputs to the broadcast 
distribution. We should try to do this.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-20383) Calcite engine. Convert one input of a join to the broadcast distribution

2023-09-08 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-20383:
---
Description: 
Sometimes, if join inputs are not collocated it's worth to broadcast one of the 
inputs, for example, query:
{code:sql}
SELECT * FROM emps WHERE emps.salary = (SELECT AVG(emps.salary) FROM emps){code}
Currently has plan:
{noformat}
IgniteProject(ID=[$0], NAME=[$1], SALARY=[$2])
  IgniteNestedLoopJoin(condition=[=($2, $3)], joinType=[inner])
IgniteExchange(distribution=[single])
  IgniteTableScan(table=[[PUBLIC, EMPS]])
IgniteReduceHashAggregate(group=[{}], AVG(EMPS.SALARY)=[AVG($0)])
  IgniteExchange(distribution=[single])
IgniteMapHashAggregate(group=[{}], AVG(EMPS.SALARY)=[AVG($0)])
  IgniteIndexScan(table=[[PUBLIC, EMPS]], index=[TST], 
requiredColumns=[{2}], collation=[[2 ASC-nulls-first]])
{noformat}
But this plan is not optimal, since we should send entire table EMP from all 
nodes to the single node. For such a query it's better to broadcast result of 
the aggregation, in this case plan will be something like:
{noformat}
IgniteExchange(distribution=[single])
  IgniteProject(...)
IgniteCorrelatedNestedLoopJoin(...)
  IgniteExchange(distribution=[broadcast])
IgniteReduceHashAggregate(group=[{}], AVG(EMPS.SALARY)=[AVG($0)])
  IgniteExchange(distribution=[single])
IgniteMapHashAggregate(group=[{}], AVG(EMPS.SALARY)=[AVG($0)])
  IgniteIndexScan(table=[[PUBLIC, EMPS]], index=[SALARY_IDX])
  IgniteIndexScan(table=[[PUBLIC, EMPS]], index=[SALARY_IDX])
{noformat}
But currently we don't try to convert any of the join inputs to the broadcast 
distribution. We should try to do this.

  was:
Sometimes, if join inputs are not collocated it's worth to broadcast one of the 
inputs, for example, query:
{code:sql}
SELECT * FROM emps WHERE emps.salary = (SELECT AVG(emps.salary) FROM emps){code}
Currently has plan:
{noformat}
IgniteProject(ID=[$0], NAME=[$1], SALARY=[$2])
  IgniteNestedLoopJoin(condition=[=($2, $3)], joinType=[inner])
IgniteExchange(distribution=[single])
  IgniteTableScan(table=[[PUBLIC, EMPS]])
IgniteReduceHashAggregate(group=[{}], AVG(EMPS.SALARY)=[AVG($0)])
  IgniteExchange(distribution=[single])
IgniteMapHashAggregate(group=[{}], AVG(EMPS.SALARY)=[AVG($0)])
  IgniteIndexScan(table=[[PUBLIC, EMPS]], index=[TST], 
requiredColumns=[{2}], collation=[[2 ASC-nulls-first]])
{noformat}
But this plan is not optimal, since we should send entire table EMP from all 
nodes to the single node. For such a query it's better to broadcast result of 
the aggregation, in this case plan will be something like:
{noformat}
IgniteExchange(distribution=[single])
  IgniteProject(ID=[$0], NAME=[$1], SALARY=[$2])
IgniteCorrelatedNestedLoopJoin(...)
  IgniteExchange(distribution=[broadcast])
IgniteReduceHashAggregate(group=[{}], AVG(EMPS.SALARY)=[AVG($0)])
  IgniteExchange(distribution=[single])
IgniteMapHashAggregate(group=[{}], AVG(EMPS.SALARY)=[AVG($0)])
  IgniteIndexScan(table=[[PUBLIC, EMPS]], index=[SALARY_IDX])
  IgniteIndexScan(table=[[PUBLIC, EMPS]], index=[SALARY_IDX])
{noformat}
But currently we don't try to convert any of the join inputs to the broadcast 
distribution. We should try to do this.


> Calcite engine. Convert one input of a join to the broadcast distribution
> -
>
> Key: IGNITE-20383
> URL: https://issues.apache.org/jira/browse/IGNITE-20383
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: calcite, ise
>
> Sometimes, if join inputs are not collocated it's worth to broadcast one of 
> the inputs, for example, query:
> {code:sql}
> SELECT * FROM emps WHERE emps.salary = (SELECT AVG(emps.salary) FROM 
> emps){code}
> Currently has plan:
> {noformat}
> IgniteProject(ID=[$0], NAME=[$1], SALARY=[$2])
>   IgniteNestedLoopJoin(condition=[=($2, $3)], joinType=[inner])
> IgniteExchange(distribution=[single])
>   IgniteTableScan(table=[[PUBLIC, EMPS]])
> IgniteReduceHashAggregate(group=[{}], AVG(EMPS.SALARY)=[AVG($0)])
>   IgniteExchange(distribution=[single])
> IgniteMapHashAggregate(group=[{}], AVG(EMPS.SALARY)=[AVG($0)])
>   IgniteIndexScan(table=[[PUBLIC, EMPS]], index=[TST], 
> requiredColumns=[{2}], collation=[[2 ASC-nulls-first]])
> {noformat}
> But this plan is not optimal, since we should send entire table EMP from all 
> nodes to the single node. For such a query it's better to broadcast result of 
> the aggregation, in this case plan will be something like:
> {noformat}
> IgniteExchange(distribution=[single])
>   IgniteProject(...)

[jira] [Resolved] (IGNITE-18330) Fix javadoc in Transaction#resume(), Transaction#suspend

2023-09-08 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov resolved IGNITE-18330.

Fix Version/s: 2.16
   Resolution: Fixed

[~__zz250], looks good to me. Merged to master. Thanks for the contribution!

> Fix javadoc in Transaction#resume(), Transaction#suspend
> 
>
> Key: IGNITE-18330
> URL: https://issues.apache.org/jira/browse/IGNITE-18330
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Luchnikov Alexander
>Assignee: bin.yin
>Priority: Trivial
>  Labels: ise, newbie
> Fix For: 2.16
>
>  Time Spent: 2h 10m
>  Remaining Estimate: 0h
>
> After implementation IGNITE-5714, this api can be used with pessimistic 
> transactions.
> Now in javadoc - Supported only for optimistic transactions..



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-19981) Calcite engine. Optimize mapping sending with query start request

2023-09-14 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-19981:
---
Ignite Flags:   (was: Release Notes Required)

> Calcite engine. Optimize mapping sending with query start request
> -
>
> Key: IGNITE-19981
> URL: https://issues.apache.org/jira/browse/IGNITE-19981
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: ise
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> Currently we send the whole fragment mapping with query start request to each 
> node, but on the node we need only local mapping (we need only set of 
> partition to process by current node). If there are a lot of nodes and a lot 
> of partitions - mapping can take a lot of space 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Resolved] (IGNITE-19981) Calcite engine. Optimize mapping sending with query start request

2023-09-14 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov resolved IGNITE-19981.

Resolution: Won't Fix

Looks like there is no performance boost after implementation. Benchmarks show 
reduced network usage, but increased CPU usage and lower overall throughput. 
 

> Calcite engine. Optimize mapping sending with query start request
> -
>
> Key: IGNITE-19981
> URL: https://issues.apache.org/jira/browse/IGNITE-19981
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: ise
>  Time Spent: 50m
>  Remaining Estimate: 0h
>
> Currently we send the whole fragment mapping with query start request to each 
> node, but on the node we need only local mapping (we need only set of 
> partition to process by current node). If there are a lot of nodes and a lot 
> of partitions - mapping can take a lot of space 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-20462) Idle_verify prints partitions hash conflicts when entries are expiring concurrently

2023-09-20 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-20462:
--

 Summary: Idle_verify prints partitions hash conflicts when entries 
are expiring concurrently
 Key: IGNITE-20462
 URL: https://issues.apache.org/jira/browse/IGNITE-20462
 Project: Ignite
  Issue Type: Bug
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Background process of entries expire (ttl-cleaner-worker) always working on 
activated cluster, so, during idle_verify execution entries still can be 
expired even without workload on cluster. 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-20487) Add system views for IgniteStripedThreadPoolExecutor

2023-09-25 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-20487:
--

 Summary: Add system views for IgniteStripedThreadPoolExecutor
 Key: IGNITE-20487
 URL: https://issues.apache.org/jira/browse/IGNITE-20487
 Project: Ignite
  Issue Type: Improvement
Reporter: Aleksey Plekhanov


Currently, we have two views for {{StripedExecutor}}'s ({{stripedExecSvc}}, 
{{dataStreamerExecSvc}}), but we have another type of striped executor: 
{{IgniteStripedThreadPoolExecutor}} ({{rebalanceStripedExecSvc}}, 
{{callbackExecSvc}}, calcite query task executor), it will be helpful to have 
system views for these executors too.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-20488) Add metrics for count of page merges/splits in BPlusTree

2023-09-25 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-20488:
--

 Summary: Add metrics for count of page merges/splits in BPlusTree
 Key: IGNITE-20488
 URL: https://issues.apache.org/jira/browse/IGNITE-20488
 Project: Ignite
  Issue Type: Improvement
Reporter: Aleksey Plekhanov


It will be helpful to have such metrics as count of merges/splits in BPlusTree 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-20501) Calcite engine. Memory leak in MailboxRegistryImpl#remotes on JOINs

2023-09-26 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-20501:
--

 Summary: Calcite engine. Memory leak in 
MailboxRegistryImpl#remotes on JOINs
 Key: IGNITE-20501
 URL: https://issues.apache.org/jira/browse/IGNITE-20501
 Project: Ignite
  Issue Type: Bug
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


When JOIN relational operator is executed, downstream of JOIN can be closed if 
only one side of JOIN is already drained (see last lines of 
{{MergeJoinNode.InnerJoin#join}}, for example). In this case query can be 
prematurely closed, and after this, message for another side of join can arrive 
and register new {{Inbox}} (see {{ExchangeServiceImpl#onMessage(UUID, 
QueryBatchMessage)}}), that never will be unregistered. 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Assigned] (IGNITE-7346) Enable Ignite cache events per cache

2018-01-08 Thread Aleksey Plekhanov (JIRA)

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

Aleksey Plekhanov reassigned IGNITE-7346:
-

Assignee: Aleksey Plekhanov

> Enable Ignite cache events per cache
> 
>
> Key: IGNITE-7346
> URL: https://issues.apache.org/jira/browse/IGNITE-7346
> Project: Ignite
>  Issue Type: Improvement
>  Components: cache
>Reporter: Denis Magda
>Assignee: Aleksey Plekhanov
>  Labels: usability
> Fix For: 2.4
>
>
> Whenever a cache event from {{EventType.EVTS_CACHE}}, 
> {{EventType.EVTS_CACHE_REBALANCE}} or {{EventType.EVTS_CACHE_QUERY}} set is 
> enabled and a listener is registered, the cluster will accumulate and send 
> out events for all the deployed caches.
> Such behavior brings down performance especially if hundreds and thousands of 
> caches are used while the user is interested in the monitoring of specific 
> caches.
> Let's add a configuration property like 
> {{CacheConfiguration.setEventsEnabled}} to enable or disable the events per 
> cache. The events will be enabled by default to comply with existing 
> behavior.  



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


[jira] [Assigned] (IGNITE-6940) Thread Starvation monitoring

2018-01-17 Thread Aleksey Plekhanov (JIRA)

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

Aleksey Plekhanov reassigned IGNITE-6940:
-

Assignee: Aleksey Plekhanov  (was: Andrey Kuznetsov)

> Thread Starvation monitoring
> 
>
> Key: IGNITE-6940
> URL: https://issues.apache.org/jira/browse/IGNITE-6940
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Andrey Kuznetsov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: iep-7
> Fix For: 2.5
>
>
> Ignite Thread Pools Starvation
> Description
> This situation can occur if user submits tasks that recursively submit more 
> tasks and synchronously wait for results. Jobs arrive to worker nodes and are 
> queued forever since there are no free threads in public pool since all 
> threads are waiting for job results.
> Detection and Solution
> Task timeout can be set for tasks, so task gets canceled automatically.
> Web Console should provide ability to cancel any task and job from UI.
> Report
> Timed out tasks and jobs should be reported on Web Console and reported to 
> logs. We need to introduce new config property to set timeout for reported 
> jobs.
> Log record and Web Console should include:
> - Master node ID
> - Start time



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


[jira] [Assigned] (IGNITE-6980) Automatic cancelling of hanging Ignite operations

2018-01-17 Thread Aleksey Plekhanov (JIRA)

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

Aleksey Plekhanov reassigned IGNITE-6980:
-

Assignee: Aleksey Plekhanov

> Automatic cancelling of hanging Ignite operations
> -
>
> Key: IGNITE-6980
> URL: https://issues.apache.org/jira/browse/IGNITE-6980
> Project: Ignite
>  Issue Type: Bug
>Reporter: Denis Magda
>Assignee: Aleksey Plekhanov
>Priority: Critical
>  Labels: iep-7, important
> Fix For: 2.5
>
>
> If an Ignite operation hangs due to some reason due to an internal problem or 
> buggy application code it needs to eventual fail after a timeout fires.
> Take atomic operations case brought by Val to our attention recently:
>  
> [http://apache-ignite-developers.2346864.n4.nabble.com/Timeouts-in-atomic-cache-td19839.html]
> An application must not freeze waiting for a human being intervention if an 
> atomic update fails internally.
> Even more, I would let all possible operation to fail after a timeout fires:
>  - Ignite compute computations (covered by IGNITE-6940).
>  - Ignite services calls.
>  - Atomic/transactional cache updates.
>  - SQL queries.



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


[jira] [Created] (IGNITE-7527) SQL system view for current node transactions

2018-01-25 Thread Aleksey Plekhanov (JIRA)
Aleksey Plekhanov created IGNITE-7527:
-

 Summary: SQL system view for current node transactions
 Key: IGNITE-7527
 URL: https://issues.apache.org/jira/browse/IGNITE-7527
 Project: Ignite
  Issue Type: Improvement
  Components: sql
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Implement SQL system view to show active transactions on local node.



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


[jira] [Updated] (IGNITE-7527) SQL system view for current node transactions

2018-01-25 Thread Aleksey Plekhanov (JIRA)

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

Aleksey Plekhanov updated IGNITE-7527:
--
Issue Type: Task  (was: Improvement)

> SQL system view for current node transactions
> -
>
> Key: IGNITE-7527
> URL: https://issues.apache.org/jira/browse/IGNITE-7527
> Project: Ignite
>  Issue Type: Task
>  Components: sql
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: iep-13, sql
>
> Implement SQL system view to show active transactions on local node.



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


[jira] [Assigned] (IGNITE-5265) Eviction Rate memory metric to be implemented

2018-01-30 Thread Aleksey Plekhanov (JIRA)

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

Aleksey Plekhanov reassigned IGNITE-5265:
-

Assignee: Aleksey Plekhanov  (was: Ivan Rakov)

> Eviction Rate memory metric to be implemented
> -
>
> Key: IGNITE-5265
> URL: https://issues.apache.org/jira/browse/IGNITE-5265
> Project: Ignite
>  Issue Type: Task
>  Components: general
>Reporter: Sergey Chugunov
>Assignee: Aleksey Plekhanov
>Priority: Major
>
> Eviction rate metric is declared on *MemoryMetrics* interface but isn't 
> implemented in *MemoryMetricsImpl* (current implementation returns 0 right 
> away).
> This metric must be implemented identically to *allocationRate* metric from 
> the same interface (algorithm for *allocationRate* can be reused with minor 
> refactoring).



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


[jira] [Resolved] (IGNITE-6940) Thread Starvation monitoring

2018-02-06 Thread Aleksey Plekhanov (JIRA)

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

Aleksey Plekhanov resolved IGNITE-6940.
---
Resolution: Won't Fix

For now Ignite already dump threads to log when starvation is detected.

Timeout for tasks and jobs can be set using IgniteCompute.withTimeout method.

Task monitoring will be implemented as system view (new ticket will be created).

> Thread Starvation monitoring
> 
>
> Key: IGNITE-6940
> URL: https://issues.apache.org/jira/browse/IGNITE-6940
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Andrey Kuznetsov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: iep-7
> Fix For: 2.5
>
>
> Ignite Thread Pools Starvation
> Description
> This situation can occur if user submits tasks that recursively submit more 
> tasks and synchronously wait for results. Jobs arrive to worker nodes and are 
> queued forever since there are no free threads in public pool since all 
> threads are waiting for job results.
> Detection and Solution
> Task timeout can be set for tasks, so task gets canceled automatically.
> Web Console should provide ability to cancel any task and job from UI.
> Report
> Timed out tasks and jobs should be reported on Web Console and reported to 
> logs. We need to introduce new config property to set timeout for reported 
> jobs.
> Log record and Web Console should include:
> - Master node ID
> - Start time



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


[jira] [Created] (IGNITE-7700) SQL system view for list of nodes

2018-02-14 Thread Aleksey Plekhanov (JIRA)
Aleksey Plekhanov created IGNITE-7700:
-

 Summary: SQL system view for list of nodes
 Key: IGNITE-7700
 URL: https://issues.apache.org/jira/browse/IGNITE-7700
 Project: Ignite
  Issue Type: Task
  Components: sql
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov
 Fix For: 2.5


Implement SQL system view to show list of nodes in topology.



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


[jira] [Created] (IGNITE-7701) SQL system view for node attributes

2018-02-14 Thread Aleksey Plekhanov (JIRA)
Aleksey Plekhanov created IGNITE-7701:
-

 Summary: SQL system view for node attributes
 Key: IGNITE-7701
 URL: https://issues.apache.org/jira/browse/IGNITE-7701
 Project: Ignite
  Issue Type: Task
  Components: sql
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov
 Fix For: 2.5


Implement SQL system view to show attributes for each node in topology.



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


[jira] [Updated] (IGNITE-7781) JMX beans documentation

2018-02-21 Thread Aleksey Plekhanov (JIRA)

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

Aleksey Plekhanov updated IGNITE-7781:
--
Labels: documentation jmx  (was: docuentation jmx)

> JMX beans documentation
> ---
>
> Key: IGNITE-7781
> URL: https://issues.apache.org/jira/browse/IGNITE-7781
> Project: Ignite
>  Issue Type: Task
>  Components: documentation
>Reporter: Aleksey Plekhanov
>Priority: Major
>  Labels: documentation, jmx
> Attachments: MXBeansJavaDoc.zip
>
>
> There are about 30 JMX beans implemented in Ignite, but there is no 
> documentation for most of these beans, except memory metrics and brief 
> overview of cache metrics.
> Folowing MBeans/MXBeans can be documented:
> ||MBeans group||Interface||Path||Comment||
> |Eviction 
> metrics|org.apache.ignite.cache.eviction.fifo.FifoEvictionPolicyMBean, 
> org.apache.ignite.cache.eviction.igfs.IgfsPerBlockLruEvictionPolicyMXBean, 
> org.apache.ignite.cache.eviction.lru.LruEvictionPolicyMBean, 
> org.apache.ignite.cache.eviction.sorted.SortedEvictionPolicyMBean|org.apache|For
>  each cache, if eviction for cache is configured|
> |Cache group 
> metrics|org.apache.ignite.mxbean.CacheGroupMetricsMXBean|org.apache..."Cache
>  groups".|For each group|
> |Cache 
> metrics|org.apache.ignite.mxbean.CacheMetricsMXBean|org.apacheCacheClusterMetricsMXBeanImpl,
>  
> org.apacheCacheLocalMetricsMXBeanImpl|For
>  each cache|
> |Cluster 
> metrics|org.apache.ignite.mxbean.ClusterMetricsMXBean|org.apache...Kernal.ClusterLocalNodeMetricsMXBeanImpl,
>  org.apache...Kernal.ClusterMetricsMXBeanImpl|
> |Data region (memory) 
> metrics|org.apache.ignite.mxbean.DataRegionMetricsMXBean|org.apache...DataRegionMetrics.|For
>  each data region|
> |Data storage 
> metrics|org.apache.ignite.mxbean.DataStorageMetricsMXBean|org.apache..."Persistent
>  Store".DataStorageMetrics|
> |Instance 
> information|org.apache.ignite.mxbean.IgniteMXBean|org.apache...Kernal.IgniteKernal|
> |Ignition 
> state|org.apache.ignite.mxbean.IgnitionMXBean|org.apache..Kernel.Ignition|
> |Thread pools metrics|org.apache.ignite.mxbean.ThreadPoolMXBean, 
> org.apache.ignite.mxbean.StripedExecutorMXBean|org.apache..."Thread
>  Pools".|For each executor|
> |SPI|org.apache.ignite.spi.cache.CacheCheckpointSpiMBean, 
> org.apache.ignite.spi.collision.fifoqueue.FifoQueueCollisionSpiMBean, 
> org.apache.ignite.spi.collision.jobstealing.JobStealingCollisionSpiMBean, 
> org.apache.ignite.spi.collision.priorityqueue.PriorityQueueCollisionSpiMBean, 
> org.apache.ignite.spi.communication.tcp.TcpCommunicationSpiMBean, 
> org.apache.ignite.spi.deployment.local.LocalDeploymentSpiMBean, 
> org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpiMBean, 
> org.apache.ignite.spi.eventstorage.memory.MemoryEventStorageSpiMBean, 
> org.apache.ignite.spi.failover.always.AlwaysFailoverSpiMBean, 
> org.apache.ignite.spi.failover.jobstealing.JobStealingFailoverSpiMBean, 
> org.apache.ignite.spi.failover.never.NeverFailoverSpiMBean, 
> org.apache.ignite.spi.jdbc.JdbcCheckpointSpiMBean, 
> org.apache.ignite.spi.loadbalancing.adaptive.AdaptiveLoadBalancingSpiMBean, 
> org.apache.ignite.spi.loadbalancing.roundrobin.RoundRobinLoadBalancingSpiMBean,
>  
> org.apache.ignite.spi.loadbalancing.weightedrandom.WeightedRandomLoadBalancingSpiMBean,
>  
> org.apache.ignite.spi.sharedfs.SharedFsCheckpointSpiMBean|org.apache...SPIs.|
>  
> JavaDoc for this beans is attached.



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


[jira] [Created] (IGNITE-7781) JMX beans documentation

2018-02-21 Thread Aleksey Plekhanov (JIRA)
Aleksey Plekhanov created IGNITE-7781:
-

 Summary: JMX beans documentation
 Key: IGNITE-7781
 URL: https://issues.apache.org/jira/browse/IGNITE-7781
 Project: Ignite
  Issue Type: Task
  Components: documentation
Reporter: Aleksey Plekhanov
 Attachments: MXBeansJavaDoc.zip

There are about 30 JMX beans implemented in Ignite, but there is no 
documentation for most of these beans, except memory metrics and brief overview 
of cache metrics.

Folowing MBeans/MXBeans can be documented:
||MBeans group||Interface||Path||Comment||
|Eviction 
metrics|org.apache.ignite.cache.eviction.fifo.FifoEvictionPolicyMBean, 
org.apache.ignite.cache.eviction.igfs.IgfsPerBlockLruEvictionPolicyMXBean, 
org.apache.ignite.cache.eviction.lru.LruEvictionPolicyMBean, 
org.apache.ignite.cache.eviction.sorted.SortedEvictionPolicyMBean|org.apache|For
 each cache, if eviction for cache is configured|
|Cache group 
metrics|org.apache.ignite.mxbean.CacheGroupMetricsMXBean|org.apache..."Cache
 groups".|For each group|
|Cache 
metrics|org.apache.ignite.mxbean.CacheMetricsMXBean|org.apacheCacheClusterMetricsMXBeanImpl,
 
org.apacheCacheLocalMetricsMXBeanImpl|For
 each cache|
|Cluster 
metrics|org.apache.ignite.mxbean.ClusterMetricsMXBean|org.apache...Kernal.ClusterLocalNodeMetricsMXBeanImpl,
 org.apache...Kernal.ClusterMetricsMXBeanImpl|
|Data region (memory) 
metrics|org.apache.ignite.mxbean.DataRegionMetricsMXBean|org.apache...DataRegionMetrics.|For
 each data region|
|Data storage 
metrics|org.apache.ignite.mxbean.DataStorageMetricsMXBean|org.apache..."Persistent
 Store".DataStorageMetrics|
|Instance 
information|org.apache.ignite.mxbean.IgniteMXBean|org.apache...Kernal.IgniteKernal|
|Ignition 
state|org.apache.ignite.mxbean.IgnitionMXBean|org.apache..Kernel.Ignition|
|Thread pools metrics|org.apache.ignite.mxbean.ThreadPoolMXBean, 
org.apache.ignite.mxbean.StripedExecutorMXBean|org.apache..."Thread
 Pools".|For each executor|
|SPI|org.apache.ignite.spi.cache.CacheCheckpointSpiMBean, 
org.apache.ignite.spi.collision.fifoqueue.FifoQueueCollisionSpiMBean, 
org.apache.ignite.spi.collision.jobstealing.JobStealingCollisionSpiMBean, 
org.apache.ignite.spi.collision.priorityqueue.PriorityQueueCollisionSpiMBean, 
org.apache.ignite.spi.communication.tcp.TcpCommunicationSpiMBean, 
org.apache.ignite.spi.deployment.local.LocalDeploymentSpiMBean, 
org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpiMBean, 
org.apache.ignite.spi.eventstorage.memory.MemoryEventStorageSpiMBean, 
org.apache.ignite.spi.failover.always.AlwaysFailoverSpiMBean, 
org.apache.ignite.spi.failover.jobstealing.JobStealingFailoverSpiMBean, 
org.apache.ignite.spi.failover.never.NeverFailoverSpiMBean, 
org.apache.ignite.spi.jdbc.JdbcCheckpointSpiMBean, 
org.apache.ignite.spi.loadbalancing.adaptive.AdaptiveLoadBalancingSpiMBean, 
org.apache.ignite.spi.loadbalancing.roundrobin.RoundRobinLoadBalancingSpiMBean, 
org.apache.ignite.spi.loadbalancing.weightedrandom.WeightedRandomLoadBalancingSpiMBean,
 
org.apache.ignite.spi.sharedfs.SharedFsCheckpointSpiMBean|org.apache...SPIs.|

 

JavaDoc for this beans is attached.



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


[jira] [Created] (IGNITE-7818) Incorrect assertion in PDS page eviction method

2018-02-26 Thread Aleksey Plekhanov (JIRA)
Aleksey Plekhanov created IGNITE-7818:
-

 Summary: Incorrect assertion in PDS page eviction method
 Key: IGNITE-7818
 URL: https://issues.apache.org/jira/browse/IGNITE-7818
 Project: Ignite
  Issue Type: Bug
Reporter: Aleksey Plekhanov


There is assertion in the method 
org.apache.ignite.internal.processors.cache.persistence.pagemem.PageMemoryImpl.Segment#removePageForReplacement:

 
{code:java}
assert relRmvAddr != INVALID_REL_PTR;{code}
Which seems potentially dangerous. In some rare cases, when count of 
interations more then 40% of allocated pages and all processed pages are 
aquired, the {{relRmvAddr}} variable will be uninitialized and 
{{AssertionException}} will be thrown. But it's a correct case and page to 
evict can be found later in the method {{tryToFindSequentially.}}

 



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


[jira] [Updated] (IGNITE-7818) Incorrect assertion in PDS page eviction method

2018-02-26 Thread Aleksey Plekhanov (JIRA)

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

Aleksey Plekhanov updated IGNITE-7818:
--
Description: 
There is an assertion in the method 
org.apache.ignite.internal.processors.cache.persistence.pagemem.PageMemoryImpl.Segment#removePageForReplacement:

 
{code:java}
assert relRmvAddr != INVALID_REL_PTR;{code}
Which seems potentially dangerous. In some rare cases, when count of 
interations more then 40% of allocated pages and all processed pages are 
aquired, the {{relRmvAddr}} variable will be uninitialized and 
{{AssertionException}} will be thrown. But it's a correct case and page to 
evict can be found later in the method {{tryToFindSequentially.}}

 

  was:
There is assertion in the method 
org.apache.ignite.internal.processors.cache.persistence.pagemem.PageMemoryImpl.Segment#removePageForReplacement:

 
{code:java}
assert relRmvAddr != INVALID_REL_PTR;{code}
Which seems potentially dangerous. In some rare cases, when count of 
interations more then 40% of allocated pages and all processed pages are 
aquired, the {{relRmvAddr}} variable will be uninitialized and 
{{AssertionException}} will be thrown. But it's a correct case and page to 
evict can be found later in the method {{tryToFindSequentially.}}

 


> Incorrect assertion in PDS page eviction method
> ---
>
> Key: IGNITE-7818
> URL: https://issues.apache.org/jira/browse/IGNITE-7818
> Project: Ignite
>  Issue Type: Bug
>Reporter: Aleksey Plekhanov
>Priority: Major
>
> There is an assertion in the method 
> org.apache.ignite.internal.processors.cache.persistence.pagemem.PageMemoryImpl.Segment#removePageForReplacement:
>  
> {code:java}
> assert relRmvAddr != INVALID_REL_PTR;{code}
> Which seems potentially dangerous. In some rare cases, when count of 
> interations more then 40% of allocated pages and all processed pages are 
> aquired, the {{relRmvAddr}} variable will be uninitialized and 
> {{AssertionException}} will be thrown. But it's a correct case and page to 
> evict can be found later in the method {{tryToFindSequentially.}}
>  



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


[jira] [Assigned] (IGNITE-7831) Throw Exceptions instead of AssertionErrors when reading from corrupted persistence

2018-03-01 Thread Aleksey Plekhanov (JIRA)

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

Aleksey Plekhanov reassigned IGNITE-7831:
-

Assignee: Aleksey Plekhanov

> Throw Exceptions instead of AssertionErrors when reading from corrupted 
> persistence
> ---
>
> Key: IGNITE-7831
> URL: https://issues.apache.org/jira/browse/IGNITE-7831
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Ilya Lantukh
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: iep-14
>
> There are a few places in our code where we explicitly throw AssertionErrors 
> due to inability to correctly read data from persistence and many more places 
> where we make assertions based on read values.
> Assertions are used to indicate problems in internal logic, while persistence 
> might also get corrupted by various external reasons. It also makes uniform 
> handling of such issues considerably harder, because exception handling logic 
> in Ignite ignores Errors. If we want to improve stability and minimize 
> consequenses of pesistence corruption, we should replace all those 
> AssertionErrors and asserts with Exceptions, so that current exception 
> handling mechanisms could be reduce. In a number of situations it means that 
> instead of causing cluster-wide hang-up problematic node will be 
> automatically killed.



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


[jira] [Commented] (IGNITE-7831) Throw Exceptions instead of AssertionErrors when reading from corrupted persistence

2018-03-02 Thread Aleksey Plekhanov (JIRA)

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

Aleksey Plekhanov commented on IGNITE-7831:
---

[~ilantukh], I search for assertions in the persistance implementation, there 
are about 7 hundreds occurrencies, but almost all of this assertions are used 
to ensure internal logic and not depend on external reasons.

Also, most of explicitly thrown AssertionErrors in the persistance 
implementation are rethrown assertions with additional information. 

I found only couple of cases which can potentialy match your description:

{{PageMemoryImpl#tryToRestorePage:}}
{code:java}
throw new AssertionError(String.format(
"Page is broken. Can't restore it from WAL. (grpId = %d, pageId = %X).",
fullId.groupId(), fullId.pageId()
));
{code}
{{GridTreePrinter#getChildren}}: 
{code:java}
catch (IgniteCheckedException ignored) {
throw new AssertionError("Can not acquire page.");
}
{code}
But this method used only for dumping debug information in the test framework.
  
 {{FilePageStoreManager#beforeCacheGroupStart}}:
{code:java}
assert dir.exists();
{code}
{{FilePageStoreManager#storeCacheData}}:
{code:java}
assert cacheWorkDir.exists() : "Work directory does not exist: " + cacheWorkDir;
{code}
But this method creates dir (and checks result code) before assertion.

Did you mean these cases or something else? If something else, do you have 
stacktraces or any description of real cases?

> Throw Exceptions instead of AssertionErrors when reading from corrupted 
> persistence
> ---
>
> Key: IGNITE-7831
> URL: https://issues.apache.org/jira/browse/IGNITE-7831
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Ilya Lantukh
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: iep-14
> Fix For: 2.5
>
>
> There are a few places in our code where we explicitly throw AssertionErrors 
> due to inability to correctly read data from persistence and many more places 
> where we make assertions based on read values.
> Assertions are used to indicate problems in internal logic, while persistence 
> might also get corrupted by various external reasons. It also makes uniform 
> handling of such issues considerably harder, because exception handling logic 
> in Ignite ignores Errors. If we want to improve stability and minimize 
> consequenses of pesistence corruption, we should replace all those 
> AssertionErrors and asserts with Exceptions, so that current exception 
> handling mechanisms could be reduce. In a number of situations it means that 
> instead of causing cluster-wide hang-up problematic node will be 
> automatically killed.



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


[jira] [Created] (IGNITE-7969) Fluky failure of IgniteTopologyValidatorGridSplitCacheTest.testTopologyValidatorWithCacheGroup

2018-03-15 Thread Aleksey Plekhanov (JIRA)
Aleksey Plekhanov created IGNITE-7969:
-

 Summary: Fluky failure of 
IgniteTopologyValidatorGridSplitCacheTest.testTopologyValidatorWithCacheGroup
 Key: IGNITE-7969
 URL: https://issues.apache.org/jira/browse/IGNITE-7969
 Project: Ignite
  Issue Type: Bug
Affects Versions: 2.4
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Test fails on TeamCity with exception:
{noformat}
java.lang.AssertionError: Successful tryPut after failure [gridIdx=2, sucessful 
puts = 50]

at 
org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorGridSplitCacheTest.tryPut(IgniteTopologyValidatorGridSplitCacheTest.java:491)
at 
org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorGridSplitCacheTest.testTopologyValidator0(IgniteTopologyValidatorGridSplitCacheTest.java:281)
at 
org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorGridSplitCacheTest.testTopologyValidatorWithCacheGroup(IgniteTopologyValidatorGridSplitCacheTest.java:234)
...
Caused by: class org.apache.ignite.IgniteException: Failed to put entry
at 
org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorGridSplitCacheTest.tryPut(IgniteTopologyValidatorGridSplitCacheTest.java:498)
... 11 more
Suppressed: class org.apache.ignite.IgniteException: Failed to put 
entry [node=cache.IgniteTopologyValidatorGridSplitCacheTest0]
at 
org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorGridSplitCacheTest.tryPut(IgniteTopologyValidatorGridSplitCacheTest.java:463)
at 
org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorGridSplitCacheTest.tryPut(IgniteTopologyValidatorGridSplitCacheTest.java:488)
... 11 more
Suppressed: junit.framework.AssertionFailedError: expected:<1> 
but was:<2>
at junit.framework.Assert.fail(Assert.java:57)
at junit.framework.Assert.failNotEquals(Assert.java:329)
at junit.framework.Assert.assertEquals(Assert.java:78)
at junit.framework.Assert.assertEquals(Assert.java:234)
at junit.framework.Assert.assertEquals(Assert.java:241)
at 
junit.framework.TestCase.assertEquals(TestCase.java:409)
at 
org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorGridSplitCacheTest.tryPut(IgniteTopologyValidatorGridSplitCacheTest.java:448)
... 12 more
...
{noformat}
Sometimes reproduces locally.



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


[jira] [Updated] (IGNITE-7969) Flaky failure of IgniteTopologyValidatorGridSplitCacheTest.testTopologyValidatorWithCacheGroup

2018-03-15 Thread Aleksey Plekhanov (JIRA)

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

Aleksey Plekhanov updated IGNITE-7969:
--
Summary: Flaky failure of 
IgniteTopologyValidatorGridSplitCacheTest.testTopologyValidatorWithCacheGroup  
(was: Fluky failure of 
IgniteTopologyValidatorGridSplitCacheTest.testTopologyValidatorWithCacheGroup)

> Flaky failure of 
> IgniteTopologyValidatorGridSplitCacheTest.testTopologyValidatorWithCacheGroup
> --
>
> Key: IGNITE-7969
> URL: https://issues.apache.org/jira/browse/IGNITE-7969
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 2.4
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: MakeTeamcityGreenAgain
>
> Test fails on TeamCity with exception:
> {noformat}
> java.lang.AssertionError: Successful tryPut after failure [gridIdx=2, 
> sucessful puts = 50]
>   at 
> org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorGridSplitCacheTest.tryPut(IgniteTopologyValidatorGridSplitCacheTest.java:491)
>   at 
> org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorGridSplitCacheTest.testTopologyValidator0(IgniteTopologyValidatorGridSplitCacheTest.java:281)
>   at 
> org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorGridSplitCacheTest.testTopologyValidatorWithCacheGroup(IgniteTopologyValidatorGridSplitCacheTest.java:234)
> ...
> Caused by: class org.apache.ignite.IgniteException: Failed to put entry
>   at 
> org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorGridSplitCacheTest.tryPut(IgniteTopologyValidatorGridSplitCacheTest.java:498)
>   ... 11 more
>   Suppressed: class org.apache.ignite.IgniteException: Failed to put 
> entry [node=cache.IgniteTopologyValidatorGridSplitCacheTest0]
>   at 
> org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorGridSplitCacheTest.tryPut(IgniteTopologyValidatorGridSplitCacheTest.java:463)
>   at 
> org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorGridSplitCacheTest.tryPut(IgniteTopologyValidatorGridSplitCacheTest.java:488)
>   ... 11 more
>   Suppressed: junit.framework.AssertionFailedError: expected:<1> 
> but was:<2>
>   at junit.framework.Assert.fail(Assert.java:57)
>   at junit.framework.Assert.failNotEquals(Assert.java:329)
>   at junit.framework.Assert.assertEquals(Assert.java:78)
>   at junit.framework.Assert.assertEquals(Assert.java:234)
>   at junit.framework.Assert.assertEquals(Assert.java:241)
>   at 
> junit.framework.TestCase.assertEquals(TestCase.java:409)
>   at 
> org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorGridSplitCacheTest.tryPut(IgniteTopologyValidatorGridSplitCacheTest.java:448)
>   ... 12 more
> ...
> {noformat}
> Sometimes reproduces locally.



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


[jira] [Created] (IGNITE-7976) [Test failed] IgnitePersistentStoreCacheGroupsTest.testClusterRestartCachesWithH2Indexes fails on TC

2018-03-16 Thread Aleksey Plekhanov (JIRA)
Aleksey Plekhanov created IGNITE-7976:
-

 Summary: [Test failed] 
IgnitePersistentStoreCacheGroupsTest.testClusterRestartCachesWithH2Indexes 
fails on TC
 Key: IGNITE-7976
 URL: https://issues.apache.org/jira/browse/IGNITE-7976
 Project: Ignite
  Issue Type: Bug
Affects Versions: 2.4
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Test 
{{IgnitePersistentStoreCacheGroupsTest.testClusterRestartCachesWithH2Indexes}} 
always fail on TeamCity due to changes by IGNITE-7869. With following error:

{noformat}
javax.cache.CacheException: Failed to parse query. Table "PERSON" not found; 
SQL statement:
SELECT p._KEY, p._VAL FROM Person p WHERE p.lname=? ORDER BY p.fname [42102-195]
...
{noformat}




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


[jira] [Updated] (IGNITE-7976) [Test failed] IgnitePersistentStoreCacheGroupsTest.testClusterRestartCachesWithH2Indexes fails on TC

2018-03-16 Thread Aleksey Plekhanov (JIRA)

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

Aleksey Plekhanov updated IGNITE-7976:
--
Description: 
Test 
{{IgnitePersistentStoreCacheGroupsTest.testClusterRestartCachesWithH2Indexes}} 
always fail on TeamCity due to changes by IGNITE-7869. With the following error:

{noformat}
javax.cache.CacheException: Failed to parse query. Table "PERSON" not found; 
SQL statement:
SELECT p._KEY, p._VAL FROM Person p WHERE p.lname=? ORDER BY p.fname [42102-195]
...
{noformat}


  was:
Test 
{{IgnitePersistentStoreCacheGroupsTest.testClusterRestartCachesWithH2Indexes}} 
always fail on TeamCity due to changes by IGNITE-7869. With following error:

{noformat}
javax.cache.CacheException: Failed to parse query. Table "PERSON" not found; 
SQL statement:
SELECT p._KEY, p._VAL FROM Person p WHERE p.lname=? ORDER BY p.fname [42102-195]
...
{noformat}



> [Test failed] 
> IgnitePersistentStoreCacheGroupsTest.testClusterRestartCachesWithH2Indexes 
> fails on TC
> 
>
> Key: IGNITE-7976
> URL: https://issues.apache.org/jira/browse/IGNITE-7976
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 2.4
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: MakeTeamcityGreenAgain
>
> Test 
> {{IgnitePersistentStoreCacheGroupsTest.testClusterRestartCachesWithH2Indexes}}
>  always fail on TeamCity due to changes by IGNITE-7869. With the following 
> error:
> {noformat}
> javax.cache.CacheException: Failed to parse query. Table "PERSON" not found; 
> SQL statement:
> SELECT p._KEY, p._VAL FROM Person p WHERE p.lname=? ORDER BY p.fname 
> [42102-195]
> ...
> {noformat}



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


[jira] [Commented] (IGNITE-7976) [Test failed] IgnitePersistentStoreCacheGroupsTest.testClusterRestartCachesWithH2Indexes fails on TC

2018-03-19 Thread Aleksey Plekhanov (JIRA)

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

Aleksey Plekhanov commented on IGNITE-7976:
---

[~dpavlov] fix is ready. Some tests on TC are still not passed (due to another 
flaky tests). I hope today I will move ticket to PA.

> [Test failed] 
> IgnitePersistentStoreCacheGroupsTest.testClusterRestartCachesWithH2Indexes 
> fails on TC
> 
>
> Key: IGNITE-7976
> URL: https://issues.apache.org/jira/browse/IGNITE-7976
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 2.4
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: MakeTeamcityGreenAgain
>
> Test 
> {{IgnitePersistentStoreCacheGroupsTest.testClusterRestartCachesWithH2Indexes}}
>  always fail on TeamCity due to changes by IGNITE-7869. With the following 
> error:
> {noformat}
> javax.cache.CacheException: Failed to parse query. Table "PERSON" not found; 
> SQL statement:
> SELECT p._KEY, p._VAL FROM Person p WHERE p.lname=? ORDER BY p.fname 
> [42102-195]
> ...
> {noformat}



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


[jira] [Commented] (IGNITE-7969) Flaky failure of IgniteTopologyValidatorGridSplitCacheTest.testTopologyValidatorWithCacheGroup

2018-03-21 Thread Aleksey Plekhanov (JIRA)

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

Aleksey Plekhanov commented on IGNITE-7969:
---

[~dpavlov] IGNITE-5958 is not actual anymore. There was a race in the old 
implementation which was fixed by IGNITE-6491, IGNITE-6519. IGNITE-5870 don't 
contain any stack traces, but I think it's the same problem as IGNITE-5958 and 
ticket can be closed as duplicate.
Fix for this ticket also affect testTopologyValidator, so after merge 
testTopologyValidator can be unmuted.


> Flaky failure of 
> IgniteTopologyValidatorGridSplitCacheTest.testTopologyValidatorWithCacheGroup
> --
>
> Key: IGNITE-7969
> URL: https://issues.apache.org/jira/browse/IGNITE-7969
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 2.4
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: MakeTeamcityGreenAgain
>
> Test fails on TeamCity with exception:
> {noformat}
> java.lang.AssertionError: Successful tryPut after failure [gridIdx=2, 
> sucessful puts = 50]
>   at 
> org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorGridSplitCacheTest.tryPut(IgniteTopologyValidatorGridSplitCacheTest.java:491)
>   at 
> org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorGridSplitCacheTest.testTopologyValidator0(IgniteTopologyValidatorGridSplitCacheTest.java:281)
>   at 
> org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorGridSplitCacheTest.testTopologyValidatorWithCacheGroup(IgniteTopologyValidatorGridSplitCacheTest.java:234)
> ...
> Caused by: class org.apache.ignite.IgniteException: Failed to put entry
>   at 
> org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorGridSplitCacheTest.tryPut(IgniteTopologyValidatorGridSplitCacheTest.java:498)
>   ... 11 more
>   Suppressed: class org.apache.ignite.IgniteException: Failed to put 
> entry [node=cache.IgniteTopologyValidatorGridSplitCacheTest0]
>   at 
> org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorGridSplitCacheTest.tryPut(IgniteTopologyValidatorGridSplitCacheTest.java:463)
>   at 
> org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorGridSplitCacheTest.tryPut(IgniteTopologyValidatorGridSplitCacheTest.java:488)
>   ... 11 more
>   Suppressed: junit.framework.AssertionFailedError: expected:<1> 
> but was:<2>
>   at junit.framework.Assert.fail(Assert.java:57)
>   at junit.framework.Assert.failNotEquals(Assert.java:329)
>   at junit.framework.Assert.assertEquals(Assert.java:78)
>   at junit.framework.Assert.assertEquals(Assert.java:234)
>   at junit.framework.Assert.assertEquals(Assert.java:241)
>   at 
> junit.framework.TestCase.assertEquals(TestCase.java:409)
>   at 
> org.apache.ignite.internal.processors.cache.IgniteTopologyValidatorGridSplitCacheTest.tryPut(IgniteTopologyValidatorGridSplitCacheTest.java:448)
>   ... 12 more
> ...
> {noformat}
> Sometimes reproduces locally.



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


[jira] [Resolved] (IGNITE-5870) IgniteTopologyValidatorGridSplitCacheTest#testTopologyValidator fails

2018-03-21 Thread Aleksey Plekhanov (JIRA)

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

Aleksey Plekhanov resolved IGNITE-5870.
---
Resolution: Duplicate

Duplicates IGNITE-5958

> IgniteTopologyValidatorGridSplitCacheTest#testTopologyValidator fails
> -
>
> Key: IGNITE-5870
> URL: https://issues.apache.org/jira/browse/IGNITE-5870
> Project: Ignite
>  Issue Type: Bug
>Reporter: Eduard Shangareev
>Priority: Major
>  Labels: MakeTeamcityGreenAgain
>
> Success rate is 10%.
> History is too short to say when it starts failing.
> http://ci.ignite.apache.org/project.html?tab=testDetails&projectId=Ignite20Tests&testNameId=-318150309218360964&page=1



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


[jira] [Created] (IGNITE-8033) Flaky failure TxOptimisticDeadlockDetectionCrossCacheTest.testDeadlock on TC

2018-03-23 Thread Aleksey Plekhanov (JIRA)
Aleksey Plekhanov created IGNITE-8033:
-

 Summary: Flaky failure 
TxOptimisticDeadlockDetectionCrossCacheTest.testDeadlock on TC
 Key: IGNITE-8033
 URL: https://issues.apache.org/jira/browse/IGNITE-8033
 Project: Ignite
  Issue Type: Bug
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Test TxOptimisticDeadlockDetectionCrossCacheTest.testDeadlock flakily fail on 
TC. Sometimes with timeout, sometimes with the following error:

{noformat}
[2018-03-21 12:06:23,469][ERROR][main][root] Test failed.   

   
junit.framework.AssertionFailedError

   
at junit.framework.Assert.fail(Assert.java:55)
at junit.framework.Assert.assertTrue(Assert.java:22)
at junit.framework.Assert.assertTrue(Assert.java:31)
at junit.framework.TestCase.assertTrue(TestCase.java:201)
at 
org.apache.ignite.internal.processors.cache.transactions.TxOptimisticDeadlockDetectionCrossCacheTest.doTestDeadlock(TxOptimisticDeadlockDetectionCrossCacheTest.java:186)
at 
org.apache.ignite.internal.processors.cache.transactions.TxOptimisticDeadlockDetectionCrossCacheTest.testDeadlock(TxOptimisticDeadlockDetectionCrossCacheTest.java:118)
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.runTestInternal(GridAbstractTest.java:2001)
at 
org.apache.ignite.testframework.junits.GridAbstractTest.access$000(GridAbstractTest.java:133)
at 
org.apache.ignite.testframework.junits.GridAbstractTest$5.run(GridAbstractTest.java:1916)
at java.lang.Thread.run(Thread.java:745)
{noformat}




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


[jira] [Commented] (IGNITE-7481) Suspended transaction rollbacs incorrectly

2018-03-28 Thread Aleksey Plekhanov (JIRA)

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

Aleksey Plekhanov commented on IGNITE-7481:
---

[~Alexey Kuznetsov] looks good to me.

> Suspended transaction rollbacs incorrectly  
> 
>
> Key: IGNITE-7481
> URL: https://issues.apache.org/jira/browse/IGNITE-7481
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexey Kuznetsov
>Assignee: Alexey Kuznetsov
>Priority: Major
> Fix For: 2.5
>
>
> When we suspend transaction, and then timeout occures , transaction would be 
> rollbacked incorrectly.
> One of incorrect behaviors : rollback\end tx metrics are not incremented.
> Thre reason is that transactionMap is cleared when we suspend transaction.
> We need not clear transactionMap.



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


[jira] [Comment Edited] (IGNITE-8033) Flaky failure TxOptimisticDeadlockDetectionCrossCacheTest.testDeadlock on TC

2018-03-29 Thread Aleksey Plekhanov (JIRA)

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

Aleksey Plekhanov edited comment on IGNITE-8033 at 3/29/18 11:24 AM:
-

Sometimes test on TC is still failing. Ticket moved to IP for further 
investigation.


was (Author: alex_pl):
Sometimes test on TC are still failed. Ticket moved to IP for further 
investigation.

> Flaky failure TxOptimisticDeadlockDetectionCrossCacheTest.testDeadlock on TC
> 
>
> Key: IGNITE-8033
> URL: https://issues.apache.org/jira/browse/IGNITE-8033
> Project: Ignite
>  Issue Type: Bug
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: MakeTeamcityGreenAgain
> Fix For: 2.5
>
>
> Test TxOptimisticDeadlockDetectionCrossCacheTest.testDeadlock flakily fail on 
> TC. Sometimes with timeout, sometimes with the following error:
> {noformat}
> [2018-03-21 12:06:23,469][ERROR][main][root] Test failed. 
>   
>
> junit.framework.AssertionFailedError  
>   
>
>   at junit.framework.Assert.fail(Assert.java:55)
>   at junit.framework.Assert.assertTrue(Assert.java:22)
>   at junit.framework.Assert.assertTrue(Assert.java:31)
>   at junit.framework.TestCase.assertTrue(TestCase.java:201)
>   at 
> org.apache.ignite.internal.processors.cache.transactions.TxOptimisticDeadlockDetectionCrossCacheTest.doTestDeadlock(TxOptimisticDeadlockDetectionCrossCacheTest.java:186)
>   at 
> org.apache.ignite.internal.processors.cache.transactions.TxOptimisticDeadlockDetectionCrossCacheTest.testDeadlock(TxOptimisticDeadlockDetectionCrossCacheTest.java:118)
>   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.runTestInternal(GridAbstractTest.java:2001)
>   at 
> org.apache.ignite.testframework.junits.GridAbstractTest.access$000(GridAbstractTest.java:133)
>   at 
> org.apache.ignite.testframework.junits.GridAbstractTest$5.run(GridAbstractTest.java:1916)
>   at java.lang.Thread.run(Thread.java:745)
> {noformat}



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


[jira] [Assigned] (IGNITE-8069) IgniteOutOfMemoryException should be handled accordingly to provided failure handler

2018-03-30 Thread Aleksey Plekhanov (JIRA)

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

Aleksey Plekhanov reassigned IGNITE-8069:
-

Assignee: Aleksey Plekhanov

> IgniteOutOfMemoryException should be handled accordingly to provided failure 
> handler
> 
>
> Key: IGNITE-8069
> URL: https://issues.apache.org/jira/browse/IGNITE-8069
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Andrey Gura
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: iep-14
> Fix For: 2.5
>
>
> {{IgniteOutOfMemoryException}} should be handled accordingly to provided 
> failure handler.
> There are a couple of places where this exception can be thrown. Need to find 
> a common place(s) where this exception could be handled.



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


[jira] [Commented] (IGNITE-6630) Incorrect time units of average transaction commit/rollback duration cache metrics.

2018-04-02 Thread Aleksey Plekhanov (JIRA)

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

Aleksey Plekhanov commented on IGNITE-6630:
---

[~xtern], looks good to me.

> Incorrect time units of average transaction commit/rollback duration cache 
> metrics.
> ---
>
> Key: IGNITE-6630
> URL: https://issues.apache.org/jira/browse/IGNITE-6630
> Project: Ignite
>  Issue Type: Bug
>Affects Versions: 2.2
>Reporter: Pavel Pereslegin
>Assignee: Pavel Pereslegin
>Priority: Minor
>  Labels: metrics, newbie
> Fix For: 2.5
>
>
> AverageTxCommitTime and AverageTxRollbackTime metrics in CacheMetrics counts 
> in milliseconds instead of microseconds as pointed in javadoc.
> Simple junit reproducer:
> {code:java}
> public class CacheMetricsTxAvgTimeTest extends GridCommonAbstractTest {
> /** */
> private  CacheConfiguration cacheConfiguration(String name) {
> CacheConfiguration cacheConfiguration = new 
> CacheConfiguration<>(name);
> cacheConfiguration.setCacheMode(CacheMode.PARTITIONED);
> cacheConfiguration.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
> cacheConfiguration.setStatisticsEnabled(true);
> return cacheConfiguration;
> }
> /** */
> public void testTxCommitDuration() throws Exception {
> try ( Ignite node = startGrid(0)) {
> IgniteCache cache = 
> node.createCache(cacheConfiguration(DEFAULT_CACHE_NAME));
> try (Transaction tx = node.transactions().txStart()) {
> cache.put(1, 1);
> // Await 1 second.
> U.sleep(1_000);
> tx.commit();
> }
> // Documentation says that this metric is in microseconds.
> float commitTime = cache.metrics().getAverageTxCommitTime();
> // But this assertion will fail because it in milliseconds and 
> returns only ~1000.
> assert commitTime >= 1_000_000;
> }
> }
> }
> {code}



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


[jira] [Updated] (IGNITE-20587) SQL hints documentation. INDEX, NO_INDEX

2023-10-13 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-20587:
---
Component/s: documentation

> SQL hints documentation. INDEX, NO_INDEX
> 
>
> Key: IGNITE-20587
> URL: https://issues.apache.org/jira/browse/IGNITE-20587
> Project: Ignite
>  Issue Type: Task
>  Components: documentation
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: ise
> Fix For: 2.16
>
>  Time Spent: 5h 50m
>  Remaining Estimate: 0h
>




--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-20587) SQL hints documentation. INDEX, NO_INDEX

2023-10-13 Thread Aleksey Plekhanov (Jira)


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

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

> SQL hints documentation. INDEX, NO_INDEX
> 
>
> Key: IGNITE-20587
> URL: https://issues.apache.org/jira/browse/IGNITE-20587
> Project: Ignite
>  Issue Type: Task
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: ise
> Fix For: 2.16
>
>  Time Spent: 5h 50m
>  Remaining Estimate: 0h
>




--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-20587) SQL hints documentation. INDEX, NO_INDEX

2023-10-13 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-20587:
---
Description: Add documentation for SQL hints

> SQL hints documentation. INDEX, NO_INDEX
> 
>
> Key: IGNITE-20587
> URL: https://issues.apache.org/jira/browse/IGNITE-20587
> Project: Ignite
>  Issue Type: Task
>  Components: documentation
>Reporter: Vladimir Steshin
>Assignee: Vladimir Steshin
>Priority: Major
>  Labels: ise
> Fix For: 2.16
>
>  Time Spent: 5h 50m
>  Remaining Estimate: 0h
>
> Add documentation for SQL hints



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-20674) Move ignite-yardstick module to ignite-extensions

2023-10-17 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-20674:
--

 Summary: Move ignite-yardstick module to ignite-extensions
 Key: IGNITE-20674
 URL: https://issues.apache.org/jira/browse/IGNITE-20674
 Project: Ignite
  Issue Type: Improvement
  Components: yardstick
Reporter: Aleksey Plekhanov


Currently, we include ignite-yardstick module into binary release, but:
- It has dependencies that never used in other Ignite modules. Sometimes it 
requires dependencies versions update to avoid CVEs of dependencies.
- It increases size of binary release by 100Mb.
- It used only by release engeneers.
- It has a lot of bugs in org.yardstickframework.yardstick artifact, which 
can't be fixed in our repository (for example, out of the box it can be run 
only on java8).

We should exclude it from binary release and move it to the ignite-extensions 
repository.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-20697) Move physical records from WAL to another storage

2023-10-19 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-20697:
--

 Summary: Move physical records from WAL to another storage 
 Key: IGNITE-20697
 URL: https://issues.apache.org/jira/browse/IGNITE-20697
 Project: Ignite
  Issue Type: Improvement
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Currentrly, physycal records take most of the WAL size. But physical records in 
WAL files required only for crush recovery and these records are useful only 
for a short period of time (since last checkpoint). 
Size of physical records during checkpoint is more than size of all modified 
pages between checkpoints, since we need to store page snapshot record for each 
modified page and page delta records, if page is modified more than once 
between checkpoints.
We process WAL file several times in normal workflow (without crashes):
1) We write records to WAL files
2) We copy WAL files to archive
3) We compact WAL files (remove phisical records + compress)
So, totally we write all physical records twice and read physical records 
twice. 
To reduce disc workload we can move physical records to another storage and 
don't write them to WAL files. 
To provide the same crush recovery guarantees we can write modified pages twice 
during checkpoint. First time to some delta file and second time to the page 
storage. In this case we can recover any page if we crash during write to page 
storage from delta file (instead of WAL, as we do now).
This proposal has pros and cons.
Pros:
- Less size of stored data (we don't store page delta files, only final state 
of the page)
- Reduced disc workload (we store additionally write once all modified pages 
instead of 2 writes and 2 reads of larger amount of data)
- Potentially reduced latancy (instead of writing physical records 
synchronously during data modification we write to WAL only logical records and 
physical pages will be written by checkpointer threads)
Cons:
- Increased checkpoint duration (we should write doubled amount of data during 
checkpoint)
Let's try it and benchmark.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-20697) Move physical records from WAL to another storage

2023-10-19 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-20697:
---
Description: 
Currentrly, physycal records take most of the WAL size. But physical records in 
WAL files required only for crush recovery and these records are useful only 
for a short period of time (since last checkpoint). 
Size of physical records during checkpoint is more than size of all modified 
pages between checkpoints, since we need to store page snapshot record for each 
modified page and page delta records, if page is modified more than once 
between checkpoints.
We process WAL file several times in stable workflow (without crashes and 
rebalances):
 # We write records to WAL files
 # We copy WAL files to archive
 # We compact WAL files (remove phisical records + compress)

So, totally we write all physical records twice and read physical records at 
least twice.

To reduce disc workload we can move physical records to another storage and 
don't write them to WAL files. To provide the same crush recovery guarantees we 
can write modified pages twice during checkpoint. First time to some delta file 
and second time to the page storage. In this case we can recover any page if we 
crash during write to page storage from delta file (instead of WAL, as we do 
now).

This proposal has pros and cons.
Pros:
 - Less size of stored data (we don't store page delta files, only final state 
of the page)
 - Reduced disc workload (we store additionally write once all modified pages 
instead of 2 writes and 2 reads of larger amount of data)
 - Potentially reduced latancy (instead of writing physical records 
synchronously during data modification we write to WAL only logical records and 
physical pages will be written by checkpointer threads)

Cons:
 - Increased checkpoint duration (we should write doubled amount of data during 
checkpoint)

Let's try to implement it and benchmark.

  was:
Currentrly, physycal records take most of the WAL size. But physical records in 
WAL files required only for crush recovery and these records are useful only 
for a short period of time (since last checkpoint). 
Size of physical records during checkpoint is more than size of all modified 
pages between checkpoints, since we need to store page snapshot record for each 
modified page and page delta records, if page is modified more than once 
between checkpoints.
We process WAL file several times in normal workflow (without crashes):
1) We write records to WAL files
2) We copy WAL files to archive
3) We compact WAL files (remove phisical records + compress)
So, totally we write all physical records twice and read physical records 
twice. 
To reduce disc workload we can move physical records to another storage and 
don't write them to WAL files. 
To provide the same crush recovery guarantees we can write modified pages twice 
during checkpoint. First time to some delta file and second time to the page 
storage. In this case we can recover any page if we crash during write to page 
storage from delta file (instead of WAL, as we do now).
This proposal has pros and cons.
Pros:
- Less size of stored data (we don't store page delta files, only final state 
of the page)
- Reduced disc workload (we store additionally write once all modified pages 
instead of 2 writes and 2 reads of larger amount of data)
- Potentially reduced latancy (instead of writing physical records 
synchronously during data modification we write to WAL only logical records and 
physical pages will be written by checkpointer threads)
Cons:
- Increased checkpoint duration (we should write doubled amount of data during 
checkpoint)
Let's try it and benchmark.


> Move physical records from WAL to another storage 
> --
>
> Key: IGNITE-20697
> URL: https://issues.apache.org/jira/browse/IGNITE-20697
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>
> Currentrly, physycal records take most of the WAL size. But physical records 
> in WAL files required only for crush recovery and these records are useful 
> only for a short period of time (since last checkpoint). 
> Size of physical records during checkpoint is more than size of all modified 
> pages between checkpoints, since we need to store page snapshot record for 
> each modified page and page delta records, if page is modified more than once 
> between checkpoints.
> We process WAL file several times in stable workflow (without crashes and 
> rebalances):
>  # We write records to WAL files
>  # We copy WAL files to archive
>  # We compact WAL files (remove phisical records + compress)
> So, totally we write all physical records twice and read physical records at 
> least twice.
> To reduce disc work

[jira] [Commented] (IGNITE-20697) Move physical records from WAL to another storage

2023-10-20 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov commented on IGNITE-20697:


[~ktkale...@gridgain.com], sure, I have plans to create IEP and write to the 
dev list, but first I want to create POC.
{quote}It also turns out that if users do not gracefully shut down the cluster 
before switching to a new version of the ignite, they may experience problems 
starting nodes since there will be a new data recovery mechanism.
{quote}
I suppose we will provide both mechanisms and allow user to configure it. In 
the next release we can use physical records by defaul, in the following 
release we can swith default to checkpoint delta file. On recovery Ignite can 
decide what to do by analyzing files for corrent checkpoint. 

> Move physical records from WAL to another storage 
> --
>
> Key: IGNITE-20697
> URL: https://issues.apache.org/jira/browse/IGNITE-20697
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>
> Currentrly, physycal records take most of the WAL size. But physical records 
> in WAL files required only for crush recovery and these records are useful 
> only for a short period of time (since last checkpoint). 
> Size of physical records during checkpoint is more than size of all modified 
> pages between checkpoints, since we need to store page snapshot record for 
> each modified page and page delta records, if page is modified more than once 
> between checkpoints.
> We process WAL file several times in stable workflow (without crashes and 
> rebalances):
>  # We write records to WAL files
>  # We copy WAL files to archive
>  # We compact WAL files (remove phisical records + compress)
> So, totally we write all physical records twice and read physical records at 
> least twice.
> To reduce disc workload we can move physical records to another storage and 
> don't write them to WAL files. To provide the same crush recovery guarantees 
> we can write modified pages twice during checkpoint. First time to some delta 
> file and second time to the page storage. In this case we can recover any 
> page if we crash during write to page storage from delta file (instead of 
> WAL, as we do now).
> This proposal has pros and cons.
> Pros:
>  - Less size of stored data (we don't store page delta files, only final 
> state of the page)
>  - Reduced disc workload (we store additionally write once all modified pages 
> instead of 2 writes and 2 reads of larger amount of data)
>  - Potentially reduced latancy (instead of writing physical records 
> synchronously during data modification we write to WAL only logical records 
> and physical pages will be written by checkpointer threads)
> Cons:
>  - Increased checkpoint duration (we should write doubled amount of data 
> during checkpoint)
> Let's try to implement it and benchmark.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Comment Edited] (IGNITE-20697) Move physical records from WAL to another storage

2023-10-20 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov edited comment on IGNITE-20697 at 10/20/23 9:48 AM:
--

[~ktkale...@gridgain.com], sure, I have plans to create IEP and write to the 
dev list, but first I want to create POC.
{quote}It also turns out that if users do not gracefully shut down the cluster 
before switching to a new version of the ignite, they may experience problems 
starting nodes since there will be a new data recovery mechanism.
{quote}
I suppose we will provide both mechanisms and allow user to configure it. In 
the next release we can use physical records by defaul, in the following 
release we can swith default to checkpoint delta file. On recovery Ignite can 
decide what to do by analyzing files for current checkpoint. 


was (Author: alex_pl):
[~ktkale...@gridgain.com], sure, I have plans to create IEP and write to the 
dev list, but first I want to create POC.
{quote}It also turns out that if users do not gracefully shut down the cluster 
before switching to a new version of the ignite, they may experience problems 
starting nodes since there will be a new data recovery mechanism.
{quote}
I suppose we will provide both mechanisms and allow user to configure it. In 
the next release we can use physical records by defaul, in the following 
release we can swith default to checkpoint delta file. On recovery Ignite can 
decide what to do by analyzing files for corrent checkpoint. 

> Move physical records from WAL to another storage 
> --
>
> Key: IGNITE-20697
> URL: https://issues.apache.org/jira/browse/IGNITE-20697
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>
> Currentrly, physycal records take most of the WAL size. But physical records 
> in WAL files required only for crush recovery and these records are useful 
> only for a short period of time (since last checkpoint). 
> Size of physical records during checkpoint is more than size of all modified 
> pages between checkpoints, since we need to store page snapshot record for 
> each modified page and page delta records, if page is modified more than once 
> between checkpoints.
> We process WAL file several times in stable workflow (without crashes and 
> rebalances):
>  # We write records to WAL files
>  # We copy WAL files to archive
>  # We compact WAL files (remove phisical records + compress)
> So, totally we write all physical records twice and read physical records at 
> least twice.
> To reduce disc workload we can move physical records to another storage and 
> don't write them to WAL files. To provide the same crush recovery guarantees 
> we can write modified pages twice during checkpoint. First time to some delta 
> file and second time to the page storage. In this case we can recover any 
> page if we crash during write to page storage from delta file (instead of 
> WAL, as we do now).
> This proposal has pros and cons.
> Pros:
>  - Less size of stored data (we don't store page delta files, only final 
> state of the page)
>  - Reduced disc workload (we store additionally write once all modified pages 
> instead of 2 writes and 2 reads of larger amount of data)
>  - Potentially reduced latancy (instead of writing physical records 
> synchronously during data modification we write to WAL only logical records 
> and physical pages will be written by checkpointer threads)
> Cons:
>  - Increased checkpoint duration (we should write doubled amount of data 
> during checkpoint)
> Let's try to implement it and benchmark.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Resolved] (IGNITE-20501) Calcite engine. Memory leak in MailboxRegistryImpl#remotes on JOINs

2023-10-20 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov resolved IGNITE-20501.

Fix Version/s: 2.16
 Release Note: SQL Calcite: Fixed memory leak in MailboxRegistryImpl#remotes
   Resolution: Fixed

[~ivandasch], thanks for the review! Merged to master.

> Calcite engine. Memory leak in MailboxRegistryImpl#remotes on JOINs
> ---
>
> Key: IGNITE-20501
> URL: https://issues.apache.org/jira/browse/IGNITE-20501
> Project: Ignite
>  Issue Type: Bug
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: calcite, ise
> Fix For: 2.16
>
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> When JOIN relational operator is executed, downstream of JOIN can be closed 
> if only one side of JOIN is already drained (see last lines of 
> {{MergeJoinNode.InnerJoin#join}}, for example). In this case query can be 
> prematurely closed, and after this, message for another side of join can 
> arrive and register new {{Inbox}} (see {{ExchangeServiceImpl#onMessage(UUID, 
> QueryBatchMessage)}}), that never will be unregistered. 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-20697) Move physical records from WAL to another storage

2023-10-24 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-20697:
---
Labels: ise  (was: )

> Move physical records from WAL to another storage 
> --
>
> Key: IGNITE-20697
> URL: https://issues.apache.org/jira/browse/IGNITE-20697
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: ise
>
> Currentrly, physycal records take most of the WAL size. But physical records 
> in WAL files required only for crash recovery and these records are useful 
> only for a short period of time (since last checkpoint). 
> Size of physical records during checkpoint is more than size of all modified 
> pages between checkpoints, since we need to store page snapshot record for 
> each modified page and page delta records, if page is modified more than once 
> between checkpoints.
> We process WAL file several times in stable workflow (without crashes and 
> rebalances):
>  # We write records to WAL files
>  # We copy WAL files to archive
>  # We compact WAL files (remove phisical records + compress)
> So, totally we write all physical records twice and read physical records at 
> least twice.
> To reduce disc workload we can move physical records to another storage and 
> don't write them to WAL files. To provide the same crash recovery guarantees 
> we can write modified pages twice during checkpoint. First time to some delta 
> file and second time to the page storage. In this case we can recover any 
> page if we crash during write to page storage from delta file (instead of 
> WAL, as we do now).
> This proposal has pros and cons.
> Pros:
>  - Less size of stored data (we don't store page delta files, only final 
> state of the page)
>  - Reduced disc workload (we store additionally write once all modified pages 
> instead of 2 writes and 2 reads of larger amount of data)
>  - Potentially reduced latency (instead of writing physical records 
> synchronously during data modification we write to WAL only logical records 
> and physical pages will be written by checkpointer threads)
> Cons:
>  - Increased checkpoint duration (we should write doubled amount of data 
> during checkpoint)
> Let's try to implement it and benchmark.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-20697) Move physical records from WAL to another storage

2023-11-01 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-20697:
---
Labels: iep-113 ise  (was: ise)

> Move physical records from WAL to another storage 
> --
>
> Key: IGNITE-20697
> URL: https://issues.apache.org/jira/browse/IGNITE-20697
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: iep-113, ise
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currentrly, physycal records take most of the WAL size. But physical records 
> in WAL files required only for crash recovery and these records are useful 
> only for a short period of time (since last checkpoint). 
> Size of physical records during checkpoint is more than size of all modified 
> pages between checkpoints, since we need to store page snapshot record for 
> each modified page and page delta records, if page is modified more than once 
> between checkpoints.
> We process WAL file several times in stable workflow (without crashes and 
> rebalances):
>  # We write records to WAL files
>  # We copy WAL files to archive
>  # We compact WAL files (remove phisical records + compress)
> So, totally we write all physical records twice and read physical records at 
> least twice.
> To reduce disc workload we can move physical records to another storage and 
> don't write them to WAL files. To provide the same crash recovery guarantees 
> we can write modified pages twice during checkpoint. First time to some delta 
> file and second time to the page storage. In this case we can recover any 
> page if we crash during write to page storage from delta file (instead of 
> WAL, as we do now).
> This proposal has pros and cons.
> Pros:
>  - Less size of stored data (we don't store page delta files, only final 
> state of the page)
>  - Reduced disc workload (we store additionally write once all modified pages 
> instead of 2 writes and 2 reads of larger amount of data)
>  - Potentially reduced latency (instead of writing physical records 
> synchronously during data modification we write to WAL only logical records 
> and physical pages will be written by checkpointer threads)
> Cons:
>  - Increased checkpoint duration (we should write doubled amount of data 
> during checkpoint)
> Let's try to implement it and benchmark.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-20697) Move physical records from WAL to another storage

2023-11-01 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-20697:
---
Description: 
Currently, physycal records take most of the WAL size. But physical records in 
WAL files required only for crash recovery and these records are useful only 
for a short period of time (since last checkpoint). 
Size of physical records during checkpoint is more than size of all modified 
pages between checkpoints, since we need to store page snapshot record for each 
modified page and page delta records, if page is modified more than once 
between checkpoints.
We process WAL file several times in stable workflow (without crashes and 
rebalances):
 # We write records to WAL files
 # We copy WAL files to archive
 # We compact WAL files (remove phisical records + compress)

So, totally we write all physical records twice and read physical records at 
least twice.

To reduce disc workload we can move physical records to another storage and 
don't write them to WAL files. To provide the same crash recovery guarantees we 
can write modified pages twice during checkpoint. First time to some delta file 
and second time to the page storage. In this case we can recover any page if we 
crash during write to page storage from delta file (instead of WAL, as we do 
now).

This proposal has pros and cons.
Pros:
 - Less size of stored data (we don't store page delta files, only final state 
of the page)
 - Reduced disc workload (we write all modified pages once instead of 2 writes 
and 2 reads of larger amount of data)
 - Potentially reduced latency (instead of writing physical records 
synchronously during data modification we write to WAL only logical records and 
physical pages will be written by checkpointer threads)

Cons:
 - Increased checkpoint duration (we should write doubled amount of data during 
checkpoint)

Let's try to implement it and benchmark.

  was:
Currentrly, physycal records take most of the WAL size. But physical records in 
WAL files required only for crash recovery and these records are useful only 
for a short period of time (since last checkpoint). 
Size of physical records during checkpoint is more than size of all modified 
pages between checkpoints, since we need to store page snapshot record for each 
modified page and page delta records, if page is modified more than once 
between checkpoints.
We process WAL file several times in stable workflow (without crashes and 
rebalances):
 # We write records to WAL files
 # We copy WAL files to archive
 # We compact WAL files (remove phisical records + compress)

So, totally we write all physical records twice and read physical records at 
least twice.

To reduce disc workload we can move physical records to another storage and 
don't write them to WAL files. To provide the same crash recovery guarantees we 
can write modified pages twice during checkpoint. First time to some delta file 
and second time to the page storage. In this case we can recover any page if we 
crash during write to page storage from delta file (instead of WAL, as we do 
now).

This proposal has pros and cons.
Pros:
 - Less size of stored data (we don't store page delta files, only final state 
of the page)
 - Reduced disc workload (we store additionally write once all modified pages 
instead of 2 writes and 2 reads of larger amount of data)
 - Potentially reduced latency (instead of writing physical records 
synchronously during data modification we write to WAL only logical records and 
physical pages will be written by checkpointer threads)

Cons:
 - Increased checkpoint duration (we should write doubled amount of data during 
checkpoint)

Let's try to implement it and benchmark.


> Move physical records from WAL to another storage 
> --
>
> Key: IGNITE-20697
> URL: https://issues.apache.org/jira/browse/IGNITE-20697
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: iep-113, ise
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currently, physycal records take most of the WAL size. But physical records 
> in WAL files required only for crash recovery and these records are useful 
> only for a short period of time (since last checkpoint). 
> Size of physical records during checkpoint is more than size of all modified 
> pages between checkpoints, since we need to store page snapshot record for 
> each modified page and page delta records, if page is modified more than once 
> between checkpoints.
> We process WAL file several times in stable workflow (without crashes and 
> rebalances):
>  # We write records to WAL files
>  # We copy WAL files to archive
>  # We compact WAL files (remove phisical records + compress)
> 

[jira] [Created] (IGNITE-20950) Calcite engine. NPE when performance statistics is enabled after query already cached

2023-11-23 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-20950:
--

 Summary: Calcite engine. NPE when performance statistics is 
enabled after query already cached
 Key: IGNITE-20950
 URL: https://issues.apache.org/jira/browse/IGNITE-20950
 Project: Ignite
  Issue Type: Bug
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Reproducer:
{code:java}
public void testPerformanceStatisticsEnableAfterQuery() throws Exception {
cleanPerformanceStatisticsDir();

String qry = "SELECT * FROM table(system_range(1, 1000))";

sql(grid(0), qry);

startCollectStatistics();


sql(grid(0), qry);
} {code}
Throws an exception:
{noformat}
java.lang.NullPointerException
    at 
org.apache.ignite.internal.processors.performancestatistics.FilePerformanceStatisticsWriter.cacheIfPossible(FilePerformanceStatisticsWriter.java:540)
    at 
org.apache.ignite.internal.processors.performancestatistics.FilePerformanceStatisticsWriter.queryProperty(FilePerformanceStatisticsWriter.java:320)
    at 
org.apache.ignite.internal.processors.performancestatistics.PerformanceStatisticsProcessor.lambda$queryProperty$11(PerformanceStatisticsProcessor.java:207)
    at 
org.apache.ignite.internal.processors.performancestatistics.PerformanceStatisticsProcessor.write(PerformanceStatisticsProcessor.java:428)
    at 
org.apache.ignite.internal.processors.performancestatistics.PerformanceStatisticsProcessor.queryProperty(PerformanceStatisticsProcessor.java:207)
    at 
org.apache.ignite.internal.processors.query.calcite.exec.ExecutionServiceImpl.mapAndExecutePlan(ExecutionServiceImpl.java:668)
    at 
org.apache.ignite.internal.processors.query.calcite.exec.ExecutionServiceImpl.executePlan(ExecutionServiceImpl.java:505)
    at 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor.lambda$parseAndProcessQuery$4(CalciteQueryProcessor.java:495)
    at 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor.processQuery(CalciteQueryProcessor.java:616)
    at 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor.parseAndProcessQuery(CalciteQueryProcessor.java:495)
    at 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor.query(CalciteQueryProcessor.java:389){noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-20950) Calcite engine. NPE when performance statistics is enabled after query already cached

2023-11-23 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-20950:
---
Description: 
Reproducer:
{code:java}
public void testPerformanceStatisticsEnableAfterQuery() throws Exception {
cleanPerformanceStatisticsDir();

String qry = "SELECT * FROM table(system_range(1, 1000))";

sql(grid(0), qry);

startCollectStatistics();

sql(grid(0), qry);
} {code}
Throws an exception:
{noformat}
java.lang.NullPointerException
    at 
org.apache.ignite.internal.processors.performancestatistics.FilePerformanceStatisticsWriter.cacheIfPossible(FilePerformanceStatisticsWriter.java:540)
    at 
org.apache.ignite.internal.processors.performancestatistics.FilePerformanceStatisticsWriter.queryProperty(FilePerformanceStatisticsWriter.java:320)
    at 
org.apache.ignite.internal.processors.performancestatistics.PerformanceStatisticsProcessor.lambda$queryProperty$11(PerformanceStatisticsProcessor.java:207)
    at 
org.apache.ignite.internal.processors.performancestatistics.PerformanceStatisticsProcessor.write(PerformanceStatisticsProcessor.java:428)
    at 
org.apache.ignite.internal.processors.performancestatistics.PerformanceStatisticsProcessor.queryProperty(PerformanceStatisticsProcessor.java:207)
    at 
org.apache.ignite.internal.processors.query.calcite.exec.ExecutionServiceImpl.mapAndExecutePlan(ExecutionServiceImpl.java:668)
    at 
org.apache.ignite.internal.processors.query.calcite.exec.ExecutionServiceImpl.executePlan(ExecutionServiceImpl.java:505)
    at 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor.lambda$parseAndProcessQuery$4(CalciteQueryProcessor.java:495)
    at 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor.processQuery(CalciteQueryProcessor.java:616)
    at 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor.parseAndProcessQuery(CalciteQueryProcessor.java:495)
    at 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor.query(CalciteQueryProcessor.java:389){noformat}

  was:
Reproducer:
{code:java}
public void testPerformanceStatisticsEnableAfterQuery() throws Exception {
cleanPerformanceStatisticsDir();

String qry = "SELECT * FROM table(system_range(1, 1000))";

sql(grid(0), qry);

startCollectStatistics();


sql(grid(0), qry);
} {code}
Throws an exception:
{noformat}
java.lang.NullPointerException
    at 
org.apache.ignite.internal.processors.performancestatistics.FilePerformanceStatisticsWriter.cacheIfPossible(FilePerformanceStatisticsWriter.java:540)
    at 
org.apache.ignite.internal.processors.performancestatistics.FilePerformanceStatisticsWriter.queryProperty(FilePerformanceStatisticsWriter.java:320)
    at 
org.apache.ignite.internal.processors.performancestatistics.PerformanceStatisticsProcessor.lambda$queryProperty$11(PerformanceStatisticsProcessor.java:207)
    at 
org.apache.ignite.internal.processors.performancestatistics.PerformanceStatisticsProcessor.write(PerformanceStatisticsProcessor.java:428)
    at 
org.apache.ignite.internal.processors.performancestatistics.PerformanceStatisticsProcessor.queryProperty(PerformanceStatisticsProcessor.java:207)
    at 
org.apache.ignite.internal.processors.query.calcite.exec.ExecutionServiceImpl.mapAndExecutePlan(ExecutionServiceImpl.java:668)
    at 
org.apache.ignite.internal.processors.query.calcite.exec.ExecutionServiceImpl.executePlan(ExecutionServiceImpl.java:505)
    at 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor.lambda$parseAndProcessQuery$4(CalciteQueryProcessor.java:495)
    at 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor.processQuery(CalciteQueryProcessor.java:616)
    at 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor.parseAndProcessQuery(CalciteQueryProcessor.java:495)
    at 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor.query(CalciteQueryProcessor.java:389){noformat}


> Calcite engine. NPE when performance statistics is enabled after query 
> already cached
> -
>
> Key: IGNITE-20950
> URL: https://issues.apache.org/jira/browse/IGNITE-20950
> Project: Ignite
>  Issue Type: Bug
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: calcite, ise
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Reproducer:
> {code:java}
> public void testPerformanceStatisticsEnableAfterQuery() throws Exception {
> cleanPerformanceStatisticsDir();
> String qry = "SELECT * FROM table(system_range(1, 1000))";
> sql(grid(0), qry);
> startCollectStatistics();
> sql(grid(0), qry);
> } {code}
> Throws an exception:
> {noformat}
> java.lang.N

[jira] [Created] (IGNITE-21031) Calcite engine. Query fails on performance statistics in case of nested scans

2023-12-06 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-21031:
--

 Summary: Calcite engine. Query fails on performance statistics in 
case of nested scans
 Key: IGNITE-21031
 URL: https://issues.apache.org/jira/browse/IGNITE-21031
 Project: Ignite
  Issue Type: Bug
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Nested scan can be performed by Calcite engine, for example, in case of UNION 
ALL, when the first table scan is completed (and {{{}downstream().end(){}}}) 
method is invoked and UNION ALL operator proceed to the next table scan.

Reproducer:
{code:java}
public void testPerformanceStatisticsNestedScan() throws Exception {
sql(grid(0), "CREATE TABLE test_perf_stat_nested (a INT) WITH 
template=REPLICATED");
sql(grid(0), "INSERT INTO test_perf_stat_nested VALUES (0), (1), (2), (3), 
(4)");

startCollectStatistics();

sql(grid(0), "SELECT * FROM test_perf_stat_nested UNION ALL SELECT * FROM 
test_perf_stat_nested");
}{code}
 Fails on:
{noformat}
    at 
org.apache.ignite.internal.metric.IoStatisticsQueryHelper.startGatheringQueryStatistics(IoStatisticsQueryHelper.java:35)
    at 
org.apache.ignite.internal.processors.query.calcite.exec.tracker.PerformanceStatisticsIoTracker.startTracking(PerformanceStatisticsIoTracker.java:65)
    at 
org.apache.ignite.internal.processors.query.calcite.exec.rel.ScanStorageNode.processNextBatch(ScanStorageNode.java:68)
    at 
org.apache.ignite.internal.processors.query.calcite.exec.rel.ScanNode.push(ScanNode.java:145)
    at 
org.apache.ignite.internal.processors.query.calcite.exec.rel.ScanNode.request(ScanNode.java:95)
    at 
org.apache.ignite.internal.processors.query.calcite.exec.rel.UnionAllNode.end(UnionAllNode.java:79)
    at 
org.apache.ignite.internal.processors.query.calcite.exec.rel.ScanNode.processNextBatch(ScanNode.java:185)
    at 
org.apache.ignite.internal.processors.query.calcite.exec.rel.ScanStorageNode.processNextBatch(ScanStorageNode.java:70)
    at 
org.apache.ignite.internal.processors.query.calcite.exec.rel.ScanNode.push(ScanNode.java:145)
    at 
org.apache.ignite.internal.processors.query.calcite.exec.rel.ScanNode.request(ScanNode.java:95)
    at 
org.apache.ignite.internal.processors.query.calcite.exec.rel.UnionAllNode.request(UnionAllNode.java:56)
{noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-21078) .NET: Platform cache is not updated on topology change when cache id is negative

2023-12-13 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-21078:
--

 Summary: .NET: Platform cache is not updated on topology change 
when cache id is negative
 Key: IGNITE-21078
 URL: https://issues.apache.org/jira/browse/IGNITE-21078
 Project: Ignite
  Issue Type: Bug
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Reproducer:
{code:java}
public void TestPlatformCacheWithNegativeId()
{
InitNodes(1);

var cacheName = "negative_cache_id";

var cacheConfiguration = new CacheConfiguration(cacheName)
{
PlatformCacheConfiguration = new PlatformCacheConfiguration()
};

var cache = _ignite[0].GetOrCreateCache(cacheConfiguration);

var key = 0;
var val = new Foo(-1);
cache[key] = val;

InitNode(1);

Assert.AreEqual(val, cache[key]);
} {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-21078) .NET: Platform cache is not updated on topology change when cache id is negative

2023-12-13 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-21078:
---
Labels: ise  (was: )

> .NET: Platform cache is not updated on topology change when cache id is 
> negative
> 
>
> Key: IGNITE-21078
> URL: https://issues.apache.org/jira/browse/IGNITE-21078
> Project: Ignite
>  Issue Type: Bug
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: ise
>
> Reproducer:
> {code:java}
> public void TestPlatformCacheWithNegativeId()
> {
> InitNodes(1);
> var cacheName = "negative_cache_id";
> var cacheConfiguration = new CacheConfiguration(cacheName)
> {
> PlatformCacheConfiguration = new PlatformCacheConfiguration()
> };
> 
> var cache = _ignite[0].GetOrCreateCache(cacheConfiguration);
> var key = 0;
> var val = new Foo(-1);
> cache[key] = val;
> InitNode(1);
> Assert.AreEqual(val, cache[key]);
> } {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-21078) .NET: Platform cache is not updated on topology change when cache id is negative

2023-12-13 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-21078:
---
Description: 
Reproducer:
{code:java}
public void TestPlatformCacheWithNegativeId()
{
InitNodes(1);

var cacheName = "negative_cache_id";

var cacheConfiguration = new CacheConfiguration(cacheName)
{
PlatformCacheConfiguration = new PlatformCacheConfiguration()
};

var cache = _ignite[0].GetOrCreateCache(cacheConfiguration);

var key = 0;
var val = new Foo(-1);
cache[key] = val;

InitNode(1);

Assert.AreEqual(val, cache[key]);
} {code}
Fails with:
{noformat}
Apache.Ignite.Core.Common.IgniteException : Java exception occurred 
[class=java.lang.AssertionError, message=Affinity partition is out of range 
[part=-1, partitions=1024]]
  > Apache.Ignite.Core.Common.JavaException : java.lang.AssertionError: 
Affinity partition is out of range [part=-1, partitions=1024]
    at 
org.apache.ignite.internal.processors.affinity.HistoryAffinityAssignmentImpl.get(HistoryAffinityAssignmentImpl.java:244)
    at 
org.apache.ignite.internal.processors.affinity.GridAffinityAssignmentCache.primaryChanged(GridAffinityAssignmentCache.java:865)
    at 
org.apache.ignite.internal.processors.cache.GridCacheAffinityManager.primaryChanged(GridCacheAffinityManager.java:403)
    at 
org.apache.ignite.internal.processors.platform.cache.affinity.PlatformAffinityManager.processInStreamOutLong(PlatformAffinityManager.java:62)
    at 
org.apache.ignite.internal.processors.platform.PlatformAbstractTarget.processInStreamOutLong(PlatformAbstractTarget.java:87)
    at 
org.apache.ignite.internal.processors.platform.PlatformTargetProxyImpl.inStreamOutLong(PlatformTargetProxyImpl.java:67){noformat}

  was:
Reproducer:
{code:java}
public void TestPlatformCacheWithNegativeId()
{
InitNodes(1);

var cacheName = "negative_cache_id";

var cacheConfiguration = new CacheConfiguration(cacheName)
{
PlatformCacheConfiguration = new PlatformCacheConfiguration()
};

var cache = _ignite[0].GetOrCreateCache(cacheConfiguration);

var key = 0;
var val = new Foo(-1);
cache[key] = val;

InitNode(1);

Assert.AreEqual(val, cache[key]);
} {code}


> .NET: Platform cache is not updated on topology change when cache id is 
> negative
> 
>
> Key: IGNITE-21078
> URL: https://issues.apache.org/jira/browse/IGNITE-21078
> Project: Ignite
>  Issue Type: Bug
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: ise
>
> Reproducer:
> {code:java}
> public void TestPlatformCacheWithNegativeId()
> {
> InitNodes(1);
> var cacheName = "negative_cache_id";
> var cacheConfiguration = new CacheConfiguration(cacheName)
> {
> PlatformCacheConfiguration = new PlatformCacheConfiguration()
> };
> 
> var cache = _ignite[0].GetOrCreateCache(cacheConfiguration);
> var key = 0;
> var val = new Foo(-1);
> cache[key] = val;
> InitNode(1);
> Assert.AreEqual(val, cache[key]);
> } {code}
> Fails with:
> {noformat}
> Apache.Ignite.Core.Common.IgniteException : Java exception occurred 
> [class=java.lang.AssertionError, message=Affinity partition is out of range 
> [part=-1, partitions=1024]]
>   > Apache.Ignite.Core.Common.JavaException : java.lang.AssertionError: 
> Affinity partition is out of range [part=-1, partitions=1024]
>     at 
> org.apache.ignite.internal.processors.affinity.HistoryAffinityAssignmentImpl.get(HistoryAffinityAssignmentImpl.java:244)
>     at 
> org.apache.ignite.internal.processors.affinity.GridAffinityAssignmentCache.primaryChanged(GridAffinityAssignmentCache.java:865)
>     at 
> org.apache.ignite.internal.processors.cache.GridCacheAffinityManager.primaryChanged(GridCacheAffinityManager.java:403)
>     at 
> org.apache.ignite.internal.processors.platform.cache.affinity.PlatformAffinityManager.processInStreamOutLong(PlatformAffinityManager.java:62)
>     at 
> org.apache.ignite.internal.processors.platform.PlatformAbstractTarget.processInStreamOutLong(PlatformAbstractTarget.java:87)
>     at 
> org.apache.ignite.internal.processors.platform.PlatformTargetProxyImpl.inStreamOutLong(PlatformTargetProxyImpl.java:67){noformat}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-21082) Ignite Extensions: Exessive memory usage by performance statistics QueryHandler

2023-12-13 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-21082:
--

 Summary: Ignite Extensions: Exessive memory usage by performance 
statistics QueryHandler
 Key: IGNITE-21082
 URL: https://issues.apache.org/jira/browse/IGNITE-21082
 Project: Ignite
  Issue Type: Bug
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


When processing queryProperty or queryRows events new strings are generated and 
written to the maps (as keys or values). Most of strings are not unique and 
already contained in other maps as keys or values, but as different instance. 
GC can't collect doublicated strings and this leads to OOM in some cases. 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Updated] (IGNITE-21082) Ignite Extensions: Excessive memory usage by performance statistics QueryHandler

2023-12-13 Thread Aleksey Plekhanov (Jira)


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

Aleksey Plekhanov updated IGNITE-21082:
---
Summary: Ignite Extensions: Excessive memory usage by performance 
statistics QueryHandler  (was: Ignite Extensions: Exessive memory usage by 
performance statistics QueryHandler)

> Ignite Extensions: Excessive memory usage by performance statistics 
> QueryHandler
> 
>
> Key: IGNITE-21082
> URL: https://issues.apache.org/jira/browse/IGNITE-21082
> Project: Ignite
>  Issue Type: Bug
>Reporter: Aleksey Plekhanov
>Assignee: Aleksey Plekhanov
>Priority: Major
>  Labels: ise
>
> When processing queryProperty or queryRows events new strings are generated 
> and written to the maps (as keys or values). Most of strings are not unique 
> and already contained in other maps as keys or values, but as different 
> instance. GC can't collect doublicated strings and this leads to OOM in some 
> cases. 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (IGNITE-21131) Calcite engine. OR operator with dynamic parameters can't be used for index scans

2023-12-20 Thread Aleksey Plekhanov (Jira)
Aleksey Plekhanov created IGNITE-21131:
--

 Summary: Calcite engine. OR operator with dynamic parameters can't 
be used for index scans
 Key: IGNITE-21131
 URL: https://issues.apache.org/jira/browse/IGNITE-21131
 Project: Ignite
  Issue Type: Improvement
Reporter: Aleksey Plekhanov
Assignee: Aleksey Plekhanov


Calcite can compose OR operator with literals to SEARCH/SARG, and SEARCH/SARG 
can be used for index scans. But we can't do this for OR operator with dynamic 
parameters. 

For example expression {{a IN (1, 2, 3)}} can be converted to {{a = 1 OR a = 2 
OR a = 3}} and after that can be converted to {{SEARCH(a, SARG(1, 2, 3))}}, but 
expression {{a IN (?, ?, ?)}} can be converted only to {{a = ? OR a = ? OR a = 
?}} and can't be used for index scan.

To fix this issue we can create ranges from dynamic parameters during planning, 
sort and remove intersections from these ranges in runtime.

 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


  1   2   3   4   5   6   7   8   9   10   >