[jira] [Updated] (IGNITE-21213) Coordination of mechanisms of determination for primary on replicaside

2024-01-08 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-21213:
---
Description: 
h3. Motivation
In the replica listener, we have unconsidered mechanisms between each other to 
determine primary rteplica. The first one is based on the placement driver API 
(it is used in _PartitionReplicaListener#ensureReplicaIsPrimary_) and the other 
one is based on the placement driver events (the events are hadeled by two 
methods: _ReplicaManager#onPrimaryReplicaElected_, 
_ReplicaManager#onPrimaryReplicaExpired_).

Because the replica messages and events are handled in different threads, any 
variety of processing is possible. For example, the replica can release all 
transaction locks (by

PRIMARY_REPLICA_EXPIRED event) and then handle a message for this transaction 
(because ensureReplicaIsPrimary was done before), assuming that all the locks 
are holding.

h3. Definition of done
The two mechanisms work in coordination.

  was:
h3. Motivation
In the replica listener, we have unconsidered mechanisms between each other to 
determine primary rteplica. The first one is based on the placement driver API 
(it is used in PartitionReplicaListener#ensureReplicaIsPrimary) and the other 
one is based on the placement driver events (the events are hadeled by two 
methods: ReplicaManager#onPrimaryReplicaElected, 
ReplicaManager#onPrimaryReplicaExpired).

Because the replica messages and events are handled in different threads, any 
variety of processing is possible. For example, the replica can release all 
transaction locks (by

PRIMARY_REPLICA_EXPIRED event) and then handle a message for this transaction 
(because ensureReplicaIsPrimary was done before), assuming that all the locks 
are holding.

h3. Definition of done
The two mechanisms work in coordination.


> Coordination of mechanisms of determination for primary on replicaside
> --
>
> Key: IGNITE-21213
> URL: https://issues.apache.org/jira/browse/IGNITE-21213
> Project: Ignite
>  Issue Type: Bug
>Reporter: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3
>
> h3. Motivation
> In the replica listener, we have unconsidered mechanisms between each other 
> to determine primary rteplica. The first one is based on the placement driver 
> API (it is used in _PartitionReplicaListener#ensureReplicaIsPrimary_) and the 
> other one is based on the placement driver events (the events are hadeled by 
> two methods: _ReplicaManager#onPrimaryReplicaElected_, 
> _ReplicaManager#onPrimaryReplicaExpired_).
> Because the replica messages and events are handled in different threads, any 
> variety of processing is possible. For example, the replica can release all 
> transaction locks (by
> PRIMARY_REPLICA_EXPIRED event) and then handle a message for this transaction 
> (because ensureReplicaIsPrimary was done before), assuming that all the locks 
> are holding.
> h3. Definition of done
> The two mechanisms work in coordination.



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


[jira] [Updated] (IGNITE-21213) Coordination of mechanisms of determination for primary on replicaside

2024-01-08 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-21213:
---
Description: 
h3. Motivation
In the replica listener, we have unconsidered mechanisms between each other to 
determine primary rteplica. The first one is based on the placement driver API 
(it is used in PartitionReplicaListener#ensureReplicaIsPrimary) and the other 
one is based on the placement driver events (the events are hadeled by two 
methods: ReplicaManager#onPrimaryReplicaElected, 
ReplicaManager#onPrimaryReplicaExpired).

Because the replica messages and events are handled in different threads, any 
variety of processing is possible. For example, the replica can release all 
transaction locks (by

PRIMARY_REPLICA_EXPIRED event) and then handle a message for this transaction 
(because ensureReplicaIsPrimary was done before), assuming that all the locks 
are holding.

h3. Definition of done
The two mechanisms work in coordination.

  was:
h3. Motivation
In the replica listener, we have unconsidered mechanisms between each other to 
determine primary rteplica. The first one is based on the placement driver API 
(it is used in PartitionReplicaListener#ensureReplicaIsPrimary) and the other 
one is based on the placement driver events (the events are hadeled by two 
methods: ReplicaManager#onPrimaryReplicaElected, 
ReplicaManager#onPrimaryReplicaExpired).

Because the replica messages and events are handled in different threads, any 
variety of processing is possible. For example, the replica can release all 
transaction locks (by

PRIMARY_REPLICA_EXPIRED event) and then handle a message for this transaction 
(because ensureReplicaIsPrimary was done before), assuming that all the locks 
are holding.


> Coordination of mechanisms of determination for primary on replicaside
> --
>
> Key: IGNITE-21213
> URL: https://issues.apache.org/jira/browse/IGNITE-21213
> Project: Ignite
>  Issue Type: Bug
>Reporter: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3
>
> h3. Motivation
> In the replica listener, we have unconsidered mechanisms between each other 
> to determine primary rteplica. The first one is based on the placement driver 
> API (it is used in PartitionReplicaListener#ensureReplicaIsPrimary) and the 
> other one is based on the placement driver events (the events are hadeled by 
> two methods: ReplicaManager#onPrimaryReplicaElected, 
> ReplicaManager#onPrimaryReplicaExpired).
> Because the replica messages and events are handled in different threads, any 
> variety of processing is possible. For example, the replica can release all 
> transaction locks (by
> PRIMARY_REPLICA_EXPIRED event) and then handle a message for this transaction 
> (because ensureReplicaIsPrimary was done before), assuming that all the locks 
> are holding.
> h3. Definition of done
> The two mechanisms work in coordination.



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


[jira] [Updated] (IGNITE-16947) Resolve message send future when message is acknowledged

2024-01-08 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-16947:
---
Reviewer: Aleksandr Polovtcev  (was: Ivan Bessonov)

> Resolve message send future when message is acknowledged
> 
>
> Key: IGNITE-16947
> URL: https://issues.apache.org/jira/browse/IGNITE-16947
> Project: Ignite
>  Issue Type: Improvement
>  Components: networking
>Reporter: Semyon Danilov
>Assignee: Roman Puchkovskiy
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> At this moment, NettySender#send returns a future that is resolved when 
> message is written into the network buffer. We should resolve this future 
> when we receive an acknowledgment from the remote node.



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


[jira] [Updated] (IGNITE-21213) Coordination of mechanisms of determination for primary on replicaside

2024-01-08 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-21213:
---
Labels: ignite-3  (was: )

> Coordination of mechanisms of determination for primary on replicaside
> --
>
> Key: IGNITE-21213
> URL: https://issues.apache.org/jira/browse/IGNITE-21213
> Project: Ignite
>  Issue Type: Bug
>Reporter: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3
>
> h3. Motivation
> In the replica listener, we have unconsidered mechanisms between each other 
> to determine primary rteplica. The first one is based on the placement driver 
> API (it is used in PartitionReplicaListener#ensureReplicaIsPrimary) and the 
> other one is based on the placement driver events (the events are hadeled by 
> two methods: ReplicaManager#onPrimaryReplicaElected, 
> ReplicaManager#onPrimaryReplicaExpired).
> Because the replica messages and events are handled in different threads, any 
> variety of processing is possible. For example, the replica can release all 
> transaction locks (by
> PRIMARY_REPLICA_EXPIRED event) and then handle a message for this transaction 
> (because ensureReplicaIsPrimary was done before), assuming that all the locks 
> are holding.



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


[jira] [Updated] (IGNITE-21213) Coordination of mechanisms of determination for primary on replicaside

2024-01-08 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-21213:
---
Description: 
h3. Motivation
In the replica listener, we have unconsidered mechanisms between each other to 
determine primary rteplica. The first one is based on the placement driver API 
(it is used in PartitionReplicaListener#ensureReplicaIsPrimary) and the other 
one is based on the placement driver events (the events are hadeled by two 
methods: ReplicaManager#onPrimaryReplicaElected, 
ReplicaManager#onPrimaryReplicaExpired).

Because the replica messages and events are handled in different threads, any 
variety of processing is possible. For example, the replica can release all 
transaction locks (by

PRIMARY_REPLICA_EXPIRED event) and then handle a message for this transaction 
(because ensureReplicaIsPrimary was done before), assuming that all the locks 
are holding.

  was:
h3. Motivation
In the replica listener, we have unconsidered mechanisms between each other to 
determine primary rteplica. The first one is based on the placement driver API 
(it is used in PartitionReplicaListener#ensureReplicaIsPrimary) and the other 
one is based on the placement driver events (the events are hadeled by two 
methods: ReplicaManager#onPrimaryReplicaElected, 
ReplicaManager#onPrimaryReplicaExpired).

Because the replica messages and events are handled in different threads, any 
variety of processing is possible. The replica can release all transaction 
locks (by

PRIMARY_REPLICA_EXPIRED event) and then handle a message for this transaction 
(because ensureReplicaIsPrimary was done before), assuming that all the locks 
are holding.


> Coordination of mechanisms of determination for primary on replicaside
> --
>
> Key: IGNITE-21213
> URL: https://issues.apache.org/jira/browse/IGNITE-21213
> Project: Ignite
>  Issue Type: Bug
>Reporter: Vladislav Pyatkov
>Priority: Major
>
> h3. Motivation
> In the replica listener, we have unconsidered mechanisms between each other 
> to determine primary rteplica. The first one is based on the placement driver 
> API (it is used in PartitionReplicaListener#ensureReplicaIsPrimary) and the 
> other one is based on the placement driver events (the events are hadeled by 
> two methods: ReplicaManager#onPrimaryReplicaElected, 
> ReplicaManager#onPrimaryReplicaExpired).
> Because the replica messages and events are handled in different threads, any 
> variety of processing is possible. For example, the replica can release all 
> transaction locks (by
> PRIMARY_REPLICA_EXPIRED event) and then handle a message for this transaction 
> (because ensureReplicaIsPrimary was done before), assuming that all the locks 
> are holding.



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


[jira] [Created] (IGNITE-21213) Coordination of mechanisms of determination for primary on replicaside

2024-01-08 Thread Vladislav Pyatkov (Jira)
Vladislav Pyatkov created IGNITE-21213:
--

 Summary: Coordination of mechanisms of determination for primary 
on replicaside
 Key: IGNITE-21213
 URL: https://issues.apache.org/jira/browse/IGNITE-21213
 Project: Ignite
  Issue Type: Bug
Reporter: Vladislav Pyatkov


h3. Motivation
In the replica listener, we have unconsidered mechanisms between each other to 
determine primary rteplica. The first one is based on the placement driver API 
(it is used in PartitionReplicaListener#ensureReplicaIsPrimary) and the other 
one is based on the placement driver events (the events are hadeled by two 
methods: ReplicaManager#onPrimaryReplicaElected, 
ReplicaManager#onPrimaryReplicaExpired).

Because the replica messages and events are handled in different threads, any 
variety of processing is possible. The replica can release all transaction 
locks (by

PRIMARY_REPLICA_EXPIRED event) and then handle a message for this transaction 
(because ensureReplicaIsPrimary was done before), assuming that all the locks 
are holding.



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


[jira] [Updated] (IGNITE-20477) Async component start

2024-01-08 Thread Mirza Aliev (Jira)


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

Mirza Aliev updated IGNITE-20477:
-
Reviewer: Aleksandr Polovtcev

> Async component start
> -
>
> Key: IGNITE-20477
> URL: https://issues.apache.org/jira/browse/IGNITE-20477
> Project: Ignite
>  Issue Type: Task
>Reporter: Aleksandr Polovtcev
>Assignee: Mirza Aliev
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currently all Ignite components start synchronously (see 
> {{IgniteComponent#start}}). This is inconvenient, because some components can 
> complete their startup only when Meta Storage has initialized all Version 
> Values (see {{IgniteImpl#recoverComponentsStateOnStart}}). Because of this, 
> some components employ a hack which consists of having a "special" Versioned 
> Value, which is injected with a future that gets resolved only after the 
> enclosing component completes its startup (see {{startVv}} in 
> {{TableManager}} or {{IndexManager}}). This blocks the Watch Processor inside 
> Meta Storage, preventing it from processing further updates.
> This problem with this approach that it is quite cryptic and hard to 
> understand. Instead I propose to do the following:
> # Change the signature of {{IgniteComponent#start}} to 
> {{CompletableFuture start()}}.
> # All actions in the components startup will be divided into two categories: 
> sync actions, that can be executed synchronously in order for the component 
> to be usable by other components during their startup, and async actions, 
> which need to wait for any of the Versioned Values to be initialized by the 
> Meta Storage. Such async actions should be wrapped in a {{CompletableFuture}} 
> and returned from the {{start}} method.
> # {{IgniteImpl}} startup procedure should be updated to collect the futures 
> from all components and wait for their completion inside 
> {{recoverComponentsStateOnStart}}, after 
> {{metaStorageMgr.notifyRevisionUpdateListenerOnStart()}} has been called, but 
> before Watches are deployed ({{metaStorageMgr.deployWatches()}}) 



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


[jira] [Updated] (IGNITE-21209) Do not try handle PrimaryReplicaMissException on transaction operation

2024-01-08 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-21209:
---
Reviewer: Denis Chudov

> Do not try handle PrimaryReplicaMissException on transaction operation
> --
>
> Key: IGNITE-21209
> URL: https://issues.apache.org/jira/browse/IGNITE-21209
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladislav Pyatkov
>Assignee: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> h3.  Motivation
> A transaction enlists a primary replica before making an operation request. 
> But the PrimaryReplicaMissException can be thrown after the request tries to 
> be sent. This means that any ties to remap the request cannot enlist a new 
> primary replica, and all this is meaningless. The code, which handles the 
> PrimaryReplicaMissException, just wastes time.
> h3. Definition of done
> Do not handle the PrimaryReplicaMissException on any transaction operation 
> after the primary replica is already enlisted.



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


[jira] [Assigned] (IGNITE-21208) Sql. DEFAULT expression with NULL value processed unexpectedly

2024-01-08 Thread Evgeny Stanilovsky (Jira)


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

Evgeny Stanilovsky reassigned IGNITE-21208:
---

Assignee: Evgeny Stanilovsky

> Sql. DEFAULT expression with NULL value processed unexpectedly
> --
>
> Key: IGNITE-21208
> URL: https://issues.apache.org/jira/browse/IGNITE-21208
> Project: Ignite
>  Issue Type: Bug
>  Components: sql
>Affects Versions: 3.0.0-beta1
>Reporter: Evgeny Stanilovsky
>Assignee: Evgeny Stanilovsky
>Priority: Major
>  Labels: ignite-3
>
> Correct processing for NULL consistent expressions require additional 
> overriding of IgniteSqlToRelConvertor#convertValues, seems we can avoid it.
> Expressions need to be passed without such overriding method:
> {noformat}
> create table t (id int, c int DEFAULT null);
> insert into t(id, c) values(1, DEFAULT);
> insert into t(id) values(2);
> {noformat}



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


[jira] [Created] (IGNITE-21212) Increment and Decrement REST API documentation lists incorrect parameter

2024-01-08 Thread Igor Belyakov (Jira)
Igor Belyakov created IGNITE-21212:
--

 Summary: Increment and Decrement REST API documentation lists 
incorrect parameter
 Key: IGNITE-21212
 URL: https://issues.apache.org/jira/browse/IGNITE-21212
 Project: Ignite
  Issue Type: Bug
  Components: documentation
Affects Versions: 2.16
Reporter: Igor Belyakov


The documentation for the Increment/Decrement REST API endpoints 
(https://ignite.apache.org/docs/latest/restapi#increment) contains information 
regarding the "cacheName" parameter, which in fact this endpoint doesn't have.

(see: 
[https://github.com/apache/ignite/blob/ignite-2.16/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/request/DataStructuresRequest.java])

This redundant parameter could be confusing since with it the endpoint looks 
like an API to increment/decrement the value stored in the cache, while in fact 
it is related to the IgniteAtomicLong data structure. (see 
[https://ignite.apache.org/docs/latest/data-structures/atomic-types]).



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


[jira] [Resolved] (IGNITE-21022) Replicate PK along with RowId for row removal

2024-01-08 Thread Andrey N. Gura (Jira)


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

Andrey N. Gura resolved IGNITE-21022.
-
Resolution: Won't Fix

There is no need to replicate PK in order to remove a row from a storage.

> Replicate PK along with RowId for row removal
> -
>
> Key: IGNITE-21022
> URL: https://issues.apache.org/jira/browse/IGNITE-21022
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Ivan Bessonov
>Priority: Major
>  Labels: ignite-3
>
> Right now, we replicate only RowId in UpdateCommand/UpdateAllCommand during 
> the remove. This may not be a desired solution for the future.



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


[jira] [Commented] (IGNITE-21206) Lease grant messages should be retried after the failure of the placement driver active actor

2024-01-08 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov commented on IGNITE-21206:


Merged 8d3b926e0b8a3ad39591f46a4903d13f4efdb966

> Lease grant messages should be retried after the failure of the placement 
> driver active actor
> -
>
> Key: IGNITE-21206
> URL: https://issues.apache.org/jira/browse/IGNITE-21206
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Denis Chudov
>Assignee: Denis Chudov
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> If the lease grant message response is sent to the node which is no longer 
> active, the corresponding lease (which expires after the long time interval 
> intended for lease acceptance) will not be negotiated again by a new active 
> actor until it expires. So we will not have the primary replica for the lease 
> acceptance interval, which is currently 2 minutes.



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


[jira] [Updated] (IGNITE-20380) Try to deal with TableManager#assignmentsChangeListeners

2024-01-08 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-20380:
---
Description: 
*org.apache.ignite.internal.table.distributed.TableManager#assignmentsChangeListeners*
 that are used in 
*org.apache.ignite.client.handler.ClientInboundMessageHandler* have been 
discovered and I would like to see if it would be possible to change these 
listeners to catalog listeners for example or something like that.

And also, most likely, the call of listeners should be made after writing to 
the metastore. 

  was:
*org.apache.ignite.internal.table.distributed.TableManager#assignmentsChangeListeners*
 that are used in 
*org.apache.ignite.client.handler.ClientInboundMessageHandler* have been 
discovered and I would like to see if it would be possible to change these 
listeners to catalog listeners for example or something like that.

And also, most likely, the call of listeners should be made after writing to 
the metastore.


> Try to deal with TableManager#assignmentsChangeListeners
> 
>
> Key: IGNITE-20380
> URL: https://issues.apache.org/jira/browse/IGNITE-20380
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Kirill Tkalenko
>Priority: Major
>  Labels: ignite-3
>
> *org.apache.ignite.internal.table.distributed.TableManager#assignmentsChangeListeners*
>  that are used in 
> *org.apache.ignite.client.handler.ClientInboundMessageHandler* have been 
> discovered and I would like to see if it would be possible to change these 
> listeners to catalog listeners for example or something like that.
> And also, most likely, the call of listeners should be made after writing to 
> the metastore. 



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


[jira] [Updated] (IGNITE-20046) Improve the Catalog interfaces

2024-01-08 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-20046:
---
Environment: (was: Catalog service Part 3)

> Improve the Catalog interfaces
> --
>
> Key: IGNITE-20046
> URL: https://issues.apache.org/jira/browse/IGNITE-20046
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Kirill Tkalenko
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> Catalog related interfaces and classes are missing javadocs, need to fix this.
> CatalogService getters, which accepts ID and timestamp, looks useless and, 
> probably, could be removed.
> Let's also change timestamp type `long->HybridTimestamp`



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


[jira] [Updated] (IGNITE-20263) Get rid of DataStorageConfigurationSchema

2024-01-08 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-20263:
---
Description: We need to get rid of 
{*}org.apache.ignite.internal.schema.configuration.storage.DataStorageConfigurationSchema{*},
 its descendants and the code associated with it.   (was: We need to get rid of 
*org.apache.ignite.internal.schema.configuration.storage.DataStorageConfigurationSchema*,
 its descendants and the code associated with it.)

> Get rid of DataStorageConfigurationSchema
> -
>
> Key: IGNITE-20263
> URL: https://issues.apache.org/jira/browse/IGNITE-20263
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Kirill Tkalenko
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> We need to get rid of 
> {*}org.apache.ignite.internal.schema.configuration.storage.DataStorageConfigurationSchema{*},
>  its descendants and the code associated with it. 



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


[jira] [Updated] (IGNITE-19790) Read range from metastore at start UpdateLogImpl

2024-01-08 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-19790:
---
Description: Now, in 
{*}org.apache.ignite.internal.catalog.storage.UpdateLogImpl#restoreStateFromVault{*},
 versions are read from the volt, starting from 1, which is not correct because 
the log can be cut off. We need to read from the metastore by range.   (was: 
Now, in 
*org.apache.ignite.internal.catalog.storage.UpdateLogImpl#restoreStateFromVault*,
 versions are read from the volt, starting from 1, which is not correct because 
the log can be cut off. We need to read from the metastore by range.)

> Read range from metastore at start UpdateLogImpl
> 
>
> Key: IGNITE-19790
> URL: https://issues.apache.org/jira/browse/IGNITE-19790
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Kirill Tkalenko
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> Now, in 
> {*}org.apache.ignite.internal.catalog.storage.UpdateLogImpl#restoreStateFromVault{*},
>  versions are read from the volt, starting from 1, which is not correct 
> because the log can be cut off. We need to read from the metastore by range. 



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


[jira] [Updated] (IGNITE-19670) Improve CatalogService test coverage.

2024-01-08 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-19670:
---
Ignite Flags:   (was: Docs Required,Release Notes Required)

> Improve CatalogService test coverage.
> -
>
> Key: IGNITE-19670
> URL: https://issues.apache.org/jira/browse/IGNITE-19670
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Andrey Mashenkov
>Priority: Major
>  Labels: ignite-3, tech-debt-test
>
> 1. CatalogServiceSelftTest.testCreateTable (+testDropTable) looks a bit 
> complicated. It checks creation of more than one table. Let's simplify the 
> test by reverting last changes
> 2. We use shared counter to generate unique identifier for schema objects. 
> Some tests checks schema object id, and some doesn't.  Let's move 
> schema-object's id check into separate test, to verify which command 
> increments the counter, and which doesn't.
> 3. Let's add a test that will check ABA problem. E.g. create-drop-create 
> table (or index) with same name and check the object can be resolved 
> correctly by name and by id (regarding object versioning in Catalog, of 
> course).
> 4. Move Catalog operations tests to separate class.



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


[jira] [Updated] (IGNITE-19643) Catalog validation code refactoring.

2024-01-08 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-19643:
---
Description: Let's implement some validation rules that each Catalog 
command should check before the execution. Then replace current boilerplate 
validation code with applying these rules using Visitor pattern.   (was: Let's 
implement some validation rules that each Catalog command should check before 
the execution. Then replace current boilerplate validation code with applying 
these rules using Visitor pattern.)

> Catalog validation code refactoring.
> 
>
> Key: IGNITE-19643
> URL: https://issues.apache.org/jira/browse/IGNITE-19643
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Andrey Mashenkov
>Priority: Minor
>  Labels: ignite-3, tech-debt
>
> Let's implement some validation rules that each Catalog command should check 
> before the execution. Then replace current boilerplate validation code with 
> applying these rules using Visitor pattern. 



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


[jira] [Updated] (IGNITE-19719) Make CatalogDataStorageDescriptor support for each storage engine

2024-01-08 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-19719:
---
Description: At the moment, we do not have the ability to implement 
*org.apache.ignite.internal.catalog.descriptors.CatalogDataStorageDescriptor* 
for each storage engine, we need to come up with a mechanism for how to do 
this.   (was: At the moment, we do not have the ability to implement 
*org.apache.ignite.internal.catalog.descriptors.CatalogDataStorageDescriptor* 
for each storage engine, we need to come up with a mechanism for how to do 
this.)

> Make CatalogDataStorageDescriptor support for each storage engine
> -
>
> Key: IGNITE-19719
> URL: https://issues.apache.org/jira/browse/IGNITE-19719
> Project: Ignite
>  Issue Type: Improvement
> Environment: Catalog service Part 3
>Reporter: Kirill Tkalenko
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> At the moment, we do not have the ability to implement 
> *org.apache.ignite.internal.catalog.descriptors.CatalogDataStorageDescriptor* 
> for each storage engine, we need to come up with a mechanism for how to do 
> this. 



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


[jira] [Updated] (IGNITE-19550) Reuse IDs of dropped Catalog objects for new objects

2024-01-08 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-19550:
---
Description: 
In IGNITE-19524, we are switching from UUIDs to ints as IDs of the Catalog 
objects (tables, indices, views, zones). Some users have use-cases where they 
constantly create, drop and recreate same tables. In such cases, it might make 
sense to reuse object IDs to slow down the growth of the global counter. 

A design is required.

  was:
In IGNITE-19524, we are switching from UUIDs to ints as IDs of the Catalog 
objects (tables, indices, views, zones). Some users have use-cases where they 
constantly create, drop and recreate same tables. In such cases, it might make 
sense to reuse object IDs to slow down the growth of the global counter.

A design is required.


> Reuse IDs of dropped Catalog objects for new objects
> 
>
> Key: IGNITE-19550
> URL: https://issues.apache.org/jira/browse/IGNITE-19550
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Roman Puchkovskiy
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> In IGNITE-19524, we are switching from UUIDs to ints as IDs of the Catalog 
> objects (tables, indices, views, zones). Some users have use-cases where they 
> constantly create, drop and recreate same tables. In such cases, it might 
> make sense to reuse object IDs to slow down the growth of the global counter. 
> A design is required.



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


[jira] [Updated] (IGNITE-19082) Describe Catalog operation flow in README and cleanup dead code.

2024-01-08 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-19082:
---
Description: 
Let's
 * ensure Catalog is used by default as a single schema management point by 
TableManager, IndexManager, SqlSchemaManager, SchemaRegistry.
 * Describe CatalogService operations in README.md
 * drop schema related code from configuration.
 * drop outdated code from TableManager, IndexManager, SqlSchemaManager, 
SchemaRegistry.
 * make a PR for merging feature branch to main (if applicable).
 * ensure there are end-to-end tests for the cases (if applicable) described in 
CatalogServiceSelfTest. Also drop InternalSchemaTest.

  was:
Let's
 * ensure Catalog is used by default as a single schema management point by 
TableManager, IndexManager, SqlSchemaManager, SchemaRegistry.
 * Describe CatalogService operations in README.md
 * drop schema related code from configuration.
 * drop outdated code from TableManager, IndexManager, SqlSchemaManager, 
SchemaRegistry.
 * make a PR for merging feature branch to main (if applicable).
 * ensure there are end-to-end tests for the cases (if applicable) described in 
CatalogServiceSelfTest. Also drop InternalSchemaTest. 


> Describe Catalog operation flow in README and cleanup dead code.
> 
>
> Key: IGNITE-19082
> URL: https://issues.apache.org/jira/browse/IGNITE-19082
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Andrey Mashenkov
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> Let's
>  * ensure Catalog is used by default as a single schema management point by 
> TableManager, IndexManager, SqlSchemaManager, SchemaRegistry.
>  * Describe CatalogService operations in README.md
>  * drop schema related code from configuration.
>  * drop outdated code from TableManager, IndexManager, SqlSchemaManager, 
> SchemaRegistry.
>  * make a PR for merging feature branch to main (if applicable).
>  * ensure there are end-to-end tests for the cases (if applicable) described 
> in CatalogServiceSelfTest. Also drop InternalSchemaTest.



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


[jira] [Updated] (IGNITE-19082) Describe Catalog operation flow in README and cleanup dead code.

2024-01-08 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-19082:
---
Description: 
Let's
 * ensure Catalog is used by default as a single schema management point by 
TableManager, IndexManager, SqlSchemaManager, SchemaRegistry.
 * Describe CatalogService operations in README.md
 * drop schema related code from configuration.
 * drop outdated code from TableManager, IndexManager, SqlSchemaManager, 
SchemaRegistry.
 * make a PR for merging feature branch to main (if applicable).
 * ensure there are end-to-end tests for the cases (if applicable) described in 
CatalogServiceSelfTest. Also drop InternalSchemaTest. 

  was:
Let's 

* ensure Catalog is used by default as a single schema management point by 
TableManager, IndexManager, SqlSchemaManager, SchemaRegistry. 
* Describe CatalogService operations in README.md
* drop schema related code from configuration.
* drop outdated code from TableManager, IndexManager, SqlSchemaManager, 
SchemaRegistry.
* make a PR for merging feature branch to main (if applicable).
* ensure there are end-to-end tests for the cases (if applicable) described in 
CatalogServiceSelfTest. Also drop InternalSchemaTest.


> Describe Catalog operation flow in README and cleanup dead code.
> 
>
> Key: IGNITE-19082
> URL: https://issues.apache.org/jira/browse/IGNITE-19082
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Andrey Mashenkov
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> Let's
>  * ensure Catalog is used by default as a single schema management point by 
> TableManager, IndexManager, SqlSchemaManager, SchemaRegistry.
>  * Describe CatalogService operations in README.md
>  * drop schema related code from configuration.
>  * drop outdated code from TableManager, IndexManager, SqlSchemaManager, 
> SchemaRegistry.
>  * make a PR for merging feature branch to main (if applicable).
>  * ensure there are end-to-end tests for the cases (if applicable) described 
> in CatalogServiceSelfTest. Also drop InternalSchemaTest. 



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


[jira] [Commented] (IGNITE-21149) Structure for waiting for the completion of RW operations before starting to build an index for partitions

2024-01-08 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy commented on IGNITE-21149:


The patch looks good to me

> Structure for waiting for the completion of RW operations before starting to 
> build an index for partitions
> --
>
> Key: IGNITE-21149
> URL: https://issues.apache.org/jira/browse/IGNITE-21149
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Kirill Tkalenko
>Assignee: Kirill Tkalenko
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 4h 50m
>  Remaining Estimate: 0h
>
> To implement IGNITE-2, we need a structure that will allow us to wait for 
> the completion all in-flight operations of RW transactions before the index 
> appears in order to begin building indexes for partition.
> The basic idea of this structure is described in IGNITE-2.



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


[jira] [Updated] (IGNITE-19790) Read range from metastore at start UpdateLogImpl

2024-01-08 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-19790:
---
Epic Link: IGNITE-21211  (was: IGNITE-20473)

> Read range from metastore at start UpdateLogImpl
> 
>
> Key: IGNITE-19790
> URL: https://issues.apache.org/jira/browse/IGNITE-19790
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Kirill Tkalenko
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> Now, in 
> *org.apache.ignite.internal.catalog.storage.UpdateLogImpl#restoreStateFromVault*,
>  versions are read from the volt, starting from 1, which is not correct 
> because the log can be cut off. We need to read from the metastore by range.



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


[jira] [Updated] (IGNITE-19082) Describe Catalog operation flow in README and cleanup dead code.

2024-01-08 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-19082:
---
Epic Link: IGNITE-21211  (was: IGNITE-20473)

> Describe Catalog operation flow in README and cleanup dead code.
> 
>
> Key: IGNITE-19082
> URL: https://issues.apache.org/jira/browse/IGNITE-19082
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Andrey Mashenkov
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> Let's 
> * ensure Catalog is used by default as a single schema management point by 
> TableManager, IndexManager, SqlSchemaManager, SchemaRegistry. 
> * Describe CatalogService operations in README.md
> * drop schema related code from configuration.
> * drop outdated code from TableManager, IndexManager, SqlSchemaManager, 
> SchemaRegistry.
> * make a PR for merging feature branch to main (if applicable).
> * ensure there are end-to-end tests for the cases (if applicable) described 
> in CatalogServiceSelfTest. Also drop InternalSchemaTest.



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


[jira] [Updated] (IGNITE-20380) Try to deal with TableManager#assignmentsChangeListeners

2024-01-08 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-20380:
---
Epic Link: IGNITE-21211  (was: IGNITE-20473)

> Try to deal with TableManager#assignmentsChangeListeners
> 
>
> Key: IGNITE-20380
> URL: https://issues.apache.org/jira/browse/IGNITE-20380
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Kirill Tkalenko
>Priority: Major
>  Labels: ignite-3
>
> *org.apache.ignite.internal.table.distributed.TableManager#assignmentsChangeListeners*
>  that are used in 
> *org.apache.ignite.client.handler.ClientInboundMessageHandler* have been 
> discovered and I would like to see if it would be possible to change these 
> listeners to catalog listeners for example or something like that.
> And also, most likely, the call of listeners should be made after writing to 
> the metastore.



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


[jira] [Updated] (IGNITE-20046) Improve the Catalog interfaces

2024-01-08 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-20046:
---
  Epic Link: IGNITE-21211  (was: IGNITE-20473)
Environment: Catalog service Part 3

> Improve the Catalog interfaces
> --
>
> Key: IGNITE-20046
> URL: https://issues.apache.org/jira/browse/IGNITE-20046
> Project: Ignite
>  Issue Type: Improvement
> Environment: Catalog service Part 3
>Reporter: Kirill Tkalenko
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> Catalog related interfaces and classes are missing javadocs, need to fix this.
> CatalogService getters, which accepts ID and timestamp, looks useless and, 
> probably, could be removed.
> Let's also change timestamp type `long->HybridTimestamp`



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


[jira] [Updated] (IGNITE-20263) Get rid of DataStorageConfigurationSchema

2024-01-08 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-20263:
---
Epic Link: IGNITE-21211  (was: IGNITE-20473)

> Get rid of DataStorageConfigurationSchema
> -
>
> Key: IGNITE-20263
> URL: https://issues.apache.org/jira/browse/IGNITE-20263
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Kirill Tkalenko
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> We need to get rid of 
> *org.apache.ignite.internal.schema.configuration.storage.DataStorageConfigurationSchema*,
>  its descendants and the code associated with it.



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


[jira] [Updated] (IGNITE-19719) Make CatalogDataStorageDescriptor support for each storage engine

2024-01-08 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-19719:
---
  Epic Link: IGNITE-21211  (was: IGNITE-20473)
Environment: Catalog service Part 3

> Make CatalogDataStorageDescriptor support for each storage engine
> -
>
> Key: IGNITE-19719
> URL: https://issues.apache.org/jira/browse/IGNITE-19719
> Project: Ignite
>  Issue Type: Improvement
> Environment: Catalog service Part 3
>Reporter: Kirill Tkalenko
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> At the moment, we do not have the ability to implement 
> *org.apache.ignite.internal.catalog.descriptors.CatalogDataStorageDescriptor* 
> for each storage engine, we need to come up with a mechanism for how to do 
> this.



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


[jira] [Updated] (IGNITE-19670) Improve CatalogService test coverage.

2024-01-08 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-19670:
---
Epic Link: IGNITE-21211  (was: IGNITE-20473)

> Improve CatalogService test coverage.
> -
>
> Key: IGNITE-19670
> URL: https://issues.apache.org/jira/browse/IGNITE-19670
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Andrey Mashenkov
>Priority: Major
>  Labels: ignite-3, tech-debt-test
>
> 1. CatalogServiceSelftTest.testCreateTable (+testDropTable) looks a bit 
> complicated. It checks creation of more than one table. Let's simplify the 
> test by reverting last changes
> 2. We use shared counter to generate unique identifier for schema objects. 
> Some tests checks schema object id, and some doesn't.  Let's move 
> schema-object's id check into separate test, to verify which command 
> increments the counter, and which doesn't.
> 3. Let's add a test that will check ABA problem. E.g. create-drop-create 
> table (or index) with same name and check the object can be resolved 
> correctly by name and by id (regarding object versioning in Catalog, of 
> course).
> 4. Move Catalog operations tests to separate class.



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


[jira] [Updated] (IGNITE-19550) Reuse IDs of dropped Catalog objects for new objects

2024-01-08 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-19550:
---
Epic Link: IGNITE-21211  (was: IGNITE-20473)

> Reuse IDs of dropped Catalog objects for new objects
> 
>
> Key: IGNITE-19550
> URL: https://issues.apache.org/jira/browse/IGNITE-19550
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Roman Puchkovskiy
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>
> In IGNITE-19524, we are switching from UUIDs to ints as IDs of the Catalog 
> objects (tables, indices, views, zones). Some users have use-cases where they 
> constantly create, drop and recreate same tables. In such cases, it might 
> make sense to reuse object IDs to slow down the growth of the global counter.
> A design is required.



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


[jira] [Updated] (IGNITE-19643) Catalog validation code refactoring.

2024-01-08 Thread Roman Puchkovskiy (Jira)


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

Roman Puchkovskiy updated IGNITE-19643:
---
Epic Link: IGNITE-21211  (was: IGNITE-20473)

> Catalog validation code refactoring.
> 
>
> Key: IGNITE-19643
> URL: https://issues.apache.org/jira/browse/IGNITE-19643
> Project: Ignite
>  Issue Type: Improvement
>  Components: sql
>Reporter: Andrey Mashenkov
>Priority: Minor
>  Labels: ignite-3, tech-debt
>
> Let's implement some validation rules that each Catalog command should check 
> before the execution. Then replace current boilerplate validation code with 
> applying these rules using Visitor pattern.



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


[jira] [Created] (IGNITE-21211) Catalog service advanced improvements

2024-01-08 Thread Roman Puchkovskiy (Jira)
Roman Puchkovskiy created IGNITE-21211:
--

 Summary: Catalog service advanced improvements
 Key: IGNITE-21211
 URL: https://issues.apache.org/jira/browse/IGNITE-21211
 Project: Ignite
  Issue Type: Epic
Reporter: Roman Puchkovskiy






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


[jira] [Commented] (IGNITE-21206) Lease grant messages should be retried after the failure of the placement driver active actor

2024-01-08 Thread Denis Chudov (Jira)


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

Denis Chudov commented on IGNITE-21206:
---

This should fix the flakiness of 
ItTableRaftSnapshotsTest.leaderFeedsFollowerWithSnapshot

https://ci.ignite.apache.org/test/3905104914336486846?currentProjectId=ApacheIgnite3xGradle_Test_IntegrationTests&expandTestHistoryChartSection=true

> Lease grant messages should be retried after the failure of the placement 
> driver active actor
> -
>
> Key: IGNITE-21206
> URL: https://issues.apache.org/jira/browse/IGNITE-21206
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Denis Chudov
>Assignee: Denis Chudov
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> If the lease grant message response is sent to the node which is no longer 
> active, the corresponding lease (which expires after the long time interval 
> intended for lease acceptance) will not be negotiated again by a new active 
> actor until it expires. So we will not have the primary replica for the lease 
> acceptance interval, which is currently 2 minutes.



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


[jira] [Assigned] (IGNITE-21206) Lease grant messages should be retried after the failure of the placement driver active actor

2024-01-08 Thread Denis Chudov (Jira)


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

Denis Chudov reassigned IGNITE-21206:
-

Assignee: Denis Chudov

> Lease grant messages should be retried after the failure of the placement 
> driver active actor
> -
>
> Key: IGNITE-21206
> URL: https://issues.apache.org/jira/browse/IGNITE-21206
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Denis Chudov
>Assignee: Denis Chudov
>Priority: Major
>  Labels: ignite-3
>
> If the lease grant message response is sent to the node which is no longer 
> active, the corresponding lease (which expires after the long time interval 
> intended for lease acceptance) will not be negotiated again by a new active 
> actor until it expires. So we will not have the primary replica for the lease 
> acceptance interval, which is currently 2 minutes.



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


[jira] [Created] (IGNITE-21210) Sql. Incorrect precision derivation for negative numeric types

2024-01-08 Thread Evgeny Stanilovsky (Jira)
Evgeny Stanilovsky created IGNITE-21210:
---

 Summary: Sql. Incorrect precision derivation for negative numeric 
types
 Key: IGNITE-21210
 URL: https://issues.apache.org/jira/browse/IGNITE-21210
 Project: Ignite
  Issue Type: Bug
  Components: sql
Affects Versions: 3.0.0-beta1
Reporter: Evgeny Stanilovsky


Seems precision for negative numeric types derived erroneously.


{noformat}
@Test
public void testLiteralTypeMatch() throws Exception {
String query = "SELECT -1.1, DECIMAL '-1.1'";

IgniteRel rel = physicalPlan(query, new IgniteSchema(DEFAULT_SCHEMA, 1, 
List.of()));

RelDataType numericLitType = 
rel.getRowType().getFieldList().get(0).getType();
RelDataType decimalLitType = 
rel.getRowType().getFieldList().get(1).getType();

assertEquals(numericLitType, decimalLitType);
}
{noformat}

throws on comparison:

{noformat}
Expected :DECIMAL(2, 1)
Actual   :DECIMAL(3, 1)
{noformat}




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


[jira] [Assigned] (IGNITE-21209) Do not try handle PrimaryReplicaMissException on transaction operation

2024-01-08 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov reassigned IGNITE-21209:
--

Assignee: Vladislav Pyatkov

> Do not try handle PrimaryReplicaMissException on transaction operation
> --
>
> Key: IGNITE-21209
> URL: https://issues.apache.org/jira/browse/IGNITE-21209
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladislav Pyatkov
>Assignee: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3
>
> h3.  Motivation
> A transaction enlists a primary replica before making an operation request. 
> But the PrimaryReplicaMissException can be thrown after the request tries to 
> be sent. This means that any ties to remap the request cannot enlist a new 
> primary replica, and all this is meaningless. The code, which handles the 
> PrimaryReplicaMissException, just wastes time.
> h3. Definition of done
> Do not handle the PrimaryReplicaMissException on any transaction operation 
> after the primary replica is already enlisted.



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


[jira] [Updated] (IGNITE-21209) Do not try handle PrimaryReplicaMissException on transaction operation

2024-01-08 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov updated IGNITE-21209:
---
Labels: ignite-3  (was: )

> Do not try handle PrimaryReplicaMissException on transaction operation
> --
>
> Key: IGNITE-21209
> URL: https://issues.apache.org/jira/browse/IGNITE-21209
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3
>
> h3.  Motivation
> A transaction enlists a primary replica before making an operation request. 
> But the PrimaryReplicaMissException can be thrown after the request tries to 
> be sent. This means that any ties to remap the request cannot enlist a new 
> primary replica, and all this is meaningless. The code, which handles the 
> PrimaryReplicaMissException, just wastes time.
> h3. Definition of done
> Do not handle the PrimaryReplicaMissException on any transaction operation 
> after the primary replica is already enlisted.



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


[jira] [Created] (IGNITE-21209) Do not try handle PrimaryReplicaMissException on transaction operation

2024-01-08 Thread Vladislav Pyatkov (Jira)
Vladislav Pyatkov created IGNITE-21209:
--

 Summary: Do not try handle PrimaryReplicaMissException on 
transaction operation
 Key: IGNITE-21209
 URL: https://issues.apache.org/jira/browse/IGNITE-21209
 Project: Ignite
  Issue Type: Improvement
Reporter: Vladislav Pyatkov


h3.  Motivation
A transaction enlists a primary replica before making an operation request. But 
the PrimaryReplicaMissException can be thrown after the request tries to be 
sent. This means that any ties to remap the request cannot enlist a new primary 
replica, and all this is meaningless. The code, which handles the 
PrimaryReplicaMissException, just wastes time.

h3. Definition of done
Do not handle the PrimaryReplicaMissException on any transaction operation 
after the primary replica is already enlisted.



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


[jira] [Commented] (IGNITE-20883) ItDataSchemaSyncTest.checkSchemasCorrectlyRestore() is flaky with The query was cancelled while executing

2024-01-08 Thread Vladislav Pyatkov (Jira)


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

Vladislav Pyatkov commented on IGNITE-20883:


Merged e06d6142d32da1684c777a1e9b38b4d92db9ac91

> ItDataSchemaSyncTest.checkSchemasCorrectlyRestore() is flaky with The query 
> was cancelled while executing
> -
>
> Key: IGNITE-20883
> URL: https://issues.apache.org/jira/browse/IGNITE-20883
> Project: Ignite
>  Issue Type: Bug
>Reporter: Alexander Lapin
>Assignee: Vladislav Pyatkov
>Priority: Major
>  Labels: ignite-3
> Fix For: 3.0.0-beta2
>
>  Time Spent: 0.5h
>  Remaining Estimate: 0h
>
>  
> {code:java}
> org.apache.ignite.sql.SqlException: IGN-SQL-8 
> TraceId:bdc067e0-18f5-4c17-a3c7-9777e02a9abd The query was cancelled while 
> executing.  at 
> java.base@11.0.17/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:710)
>   at 
> app//org.apache.ignite.internal.util.ExceptionUtils$1.copy(ExceptionUtils.java:765)
>   at 
> app//org.apache.ignite.internal.util.ExceptionUtils$ExceptionFactory.createCopy(ExceptionUtils.java:699)
>   at 
> app//org.apache.ignite.internal.util.ExceptionUtils.copyExceptionWithCause(ExceptionUtils.java:536)
>   at 
> app//org.apache.ignite.internal.util.ExceptionUtils.copyExceptionWithCauseInternal(ExceptionUtils.java:634)
>   at 
> app//org.apache.ignite.internal.util.ExceptionUtils.copyExceptionWithCause(ExceptionUtils.java:487)
>   at 
> app//org.apache.ignite.internal.sql.AbstractSession.execute(AbstractSession.java:63)
>   at 
> app//org.apache.ignite.internal.runner.app.ItDataSchemaSyncTest.checkSchemasCorrectlyRestore(ItDataSchemaSyncTest.java:268)
>   at 
> java.base@11.0.17/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
>  Method)  at 
> java.base@11.0.17/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>   at 
> java.base@11.0.17/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>   at java.base@11.0.17/java.lang.reflect.Method.invoke(Method.java:566)  at 
> app//org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
>   at 
> app//org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
>   at 
> app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
>   at 
> app//org.junit.jupiter.engine.extension.SameThreadTimeoutInvocation.proceed(SameThreadTimeoutInvocation.java:45)
>   at 
> app//org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:156)
>   at 
> app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:147)
>   at 
> app//org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:86)
>   at 
> app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(InterceptingExecutableInvoker.java:103)
>   at 
> app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.lambda$invoke$0(InterceptingExecutableInvoker.java:93)
>   at 
> app//org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106)
>   at 
> app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64)
>   at 
> app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45)
>   at 
> app//org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37)
>   at 
> app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:92)
>   at 
> app//org.junit.jupiter.engine.execution.InterceptingExecutableInvoker.invoke(InterceptingExecutableInvoker.java:86)
>   at 
> app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java:217)
>   at 
> app//org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
>   at 
> app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:213)
>   at 
> app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:138)
>   at 
> app//org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:68)
>   at 
> app//org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java:151)
>   

[jira] [Updated] (IGNITE-21199) Introduce a mechanism to manage and schedule Ignite services tasks

2024-01-08 Thread Alexey Scherbakov (Jira)


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

Alexey Scherbakov updated IGNITE-21199:
---
Description: 
We have service tasks such as GC, and we anticipate more, which consume 
resources shared with user tasks, such as queries. These tasks should not 
monopolize resources when a node is engaged in user queries but should utilize 
all resources during idle times.

We need to develop a common mechanism to manage resource allocation between 
service tasks and user tasks, ensuring this component is reusable across 
different service task-creating components.

The idea is to assign a weight to each user/system operation. The weight can be 
the approx number of dirty pages, produced by an operation. Before attempting 
an operation, a corresponding weight must be "reserved" in the total weight 
pool (configurable by a user)

  was:
We have service tasks such as GC, and we anticipate more, which consume 
resources shared with user tasks, such as queries. These tasks should not 
monopolize resources when a node is engaged in user queries but should utilize 
all resources during idle times.

We need to develop a common mechanism to manage resource allocation between 
service tasks and user tasks, ensuring this component is reusable across 
different service task-creating components.


> Introduce a mechanism to manage and schedule Ignite services tasks
> --
>
> Key: IGNITE-21199
> URL: https://issues.apache.org/jira/browse/IGNITE-21199
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Ivan Gagarkin
>Priority: Major
>  Labels: ignite-3
>
> We have service tasks such as GC, and we anticipate more, which consume 
> resources shared with user tasks, such as queries. These tasks should not 
> monopolize resources when a node is engaged in user queries but should 
> utilize all resources during idle times.
> We need to develop a common mechanism to manage resource allocation between 
> service tasks and user tasks, ensuring this component is reusable across 
> different service task-creating components.
> The idea is to assign a weight to each user/system operation. The weight can 
> be the approx number of dirty pages, produced by an operation. Before 
> attempting an operation, a corresponding weight must be "reserved" in the 
> total weight pool (configurable by a user)



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


[jira] [Updated] (IGNITE-21205) Don't store table versions in meta-storage in SchemaManager

2024-01-08 Thread Ivan Bessonov (Jira)


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

Ivan Bessonov updated IGNITE-21205:
---
Description: 
Current implementation blocks meta-storage watch thread (doesn't allow new 
watch events to be processed, to be precise) until new schema version is 
written into the meta-storage. This is an expensive IO operation, and it might 
introduce unexpected turbulence.

Some scenarios greatly suffer from it. For example, we can't process lease 
updates while we're writing into meta-storage, which shouldn't be the case.

  was:
Current implementation blocks meta-storage watch thread until new schema 
version is written into the meta-storage. This is an expensive IO operation, 
and it might introduce unexpected turbulence.

Some scenarios greatly suffer from it. For example, we can't process lease 
updates while we're writing into meta-storage, which shouldn't be the case.


> Don't store table versions in meta-storage in SchemaManager
> ---
>
> Key: IGNITE-21205
> URL: https://issues.apache.org/jira/browse/IGNITE-21205
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Ivan Bessonov
>Assignee: Ivan Bessonov
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 20m
>  Remaining Estimate: 0h
>
> Current implementation blocks meta-storage watch thread (doesn't allow new 
> watch events to be processed, to be precise) until new schema version is 
> written into the meta-storage. This is an expensive IO operation, and it 
> might introduce unexpected turbulence.
> Some scenarios greatly suffer from it. For example, we can't process lease 
> updates while we're writing into meta-storage, which shouldn't be the case.



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


[jira] [Commented] (IGNITE-21204) Use shared rocksdb instance for all TX state storages

2024-01-08 Thread Kirill Tkalenko (Jira)


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

Kirill Tkalenko commented on IGNITE-21204:
--

Looks good.

> Use shared rocksdb instance for all TX state storages
> -
>
> Key: IGNITE-21204
> URL: https://issues.apache.org/jira/browse/IGNITE-21204
> Project: Ignite
>  Issue Type: Improvement
>Reporter: Ivan Bessonov
>Assignee: Ivan Bessonov
>Priority: Major
>  Labels: ignite-3
>  Time Spent: 1h 40m
>  Remaining Estimate: 0h
>
> Current implementation uses too many resources if you create multiple tables. 
> Table creation time suffers too.
> We need to use the same approach as "rocksdb" storage engine uses.



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


[jira] [Created] (IGNITE-21208) Sql. DEFAULT expression with NULL value processed unexpectedly

2024-01-08 Thread Evgeny Stanilovsky (Jira)
Evgeny Stanilovsky created IGNITE-21208:
---

 Summary: Sql. DEFAULT expression with NULL value processed 
unexpectedly
 Key: IGNITE-21208
 URL: https://issues.apache.org/jira/browse/IGNITE-21208
 Project: Ignite
  Issue Type: Bug
  Components: sql
Affects Versions: 3.0.0-beta1
Reporter: Evgeny Stanilovsky


Correct processing for NULL consistent expressions require additional 
overriding of IgniteSqlToRelConvertor#convertValues, seems we can avoid it.
Expressions need to be passed without such overriding method:

{noformat}
create table t (id int, c int DEFAULT null);
insert into t(id, c) values(1, DEFAULT);
insert into t(id) values(2);
{noformat}




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