This is an automated email from the ASF dual-hosted git repository. amashenkov pushed a commit to branch ignite-20339 in repository https://gitbox.apache.org/repos/asf/ignite-3.git
commit dc80d5caf81bbe43530af0cd8edf5ddde160e8d2 Author: amashenkov <[email protected]> AuthorDate: Fri Sep 22 17:15:43 2023 +0300 Drop IndexEvent. --- .../apache/ignite/internal/index/IndexManager.java | 44 +---- .../ignite/internal/index/event/IndexEvent.java | 31 ---- .../internal/index/event/IndexEventParameters.java | 60 ------ .../ignite/internal/index/IndexManagerTest.java | 205 --------------------- .../ignite/internal/index/ItIndexManagerTest.java | 115 ------------ .../internal/sql/engine/SqlQueryProcessor.java | 7 - 6 files changed, 6 insertions(+), 456 deletions(-) diff --git a/modules/index/src/main/java/org/apache/ignite/internal/index/IndexManager.java b/modules/index/src/main/java/org/apache/ignite/internal/index/IndexManager.java index 0471ed5660..fab4ac4aba 100644 --- a/modules/index/src/main/java/org/apache/ignite/internal/index/IndexManager.java +++ b/modules/index/src/main/java/org/apache/ignite/internal/index/IndexManager.java @@ -34,9 +34,6 @@ import org.apache.ignite.internal.catalog.descriptors.CatalogTableDescriptor; import org.apache.ignite.internal.catalog.events.CreateIndexEventParameters; import org.apache.ignite.internal.catalog.events.DropIndexEventParameters; import org.apache.ignite.internal.causality.IncrementalVersionedValue; -import org.apache.ignite.internal.event.AbstractEventProducer; -import org.apache.ignite.internal.index.event.IndexEvent; -import org.apache.ignite.internal.index.event.IndexEventParameters; import org.apache.ignite.internal.logger.IgniteLogger; import org.apache.ignite.internal.logger.Loggers; import org.apache.ignite.internal.manager.IgniteComponent; @@ -64,7 +61,7 @@ import org.apache.ignite.lang.NodeStoppingException; * as well as managing indexes' lifecycle. */ // TODO: IGNITE-19082 Delete this class -public class IndexManager extends AbstractEventProducer<IndexEvent, IndexEventParameters> implements IgniteComponent { +public class IndexManager implements IgniteComponent { private static final IgniteLogger LOG = Loggers.forClass(IndexManager.class); /** Schema manager. */ @@ -154,28 +151,19 @@ public class IndexManager extends AbstractEventProducer<IndexEvent, IndexEventPa int catalogVersion = parameters.catalogVersion(); if (!busyLock.enterBusy()) { - fireEvent(IndexEvent.DROP, - new IndexEventParameters(causalityToken, catalogVersion, tableId, indexId), - new NodeStoppingException() - ); - return failedFuture(new NodeStoppingException()); } try { return tableManager.tableAsync(causalityToken, parameters.tableId()) - .thenCompose(table -> { + .thenApply(table -> { if (table != null) { // In case of DROP TABLE the table will be removed first. table.unregisterIndex(indexId); } - return fireEvent( - IndexEvent.DROP, - new IndexEventParameters(causalityToken, catalogVersion, tableId, indexId) - ); - }) - .thenApply(unused -> false); + return false; + }); } catch (Throwable t) { return failedFuture(t); } finally { @@ -193,12 +181,6 @@ public class IndexManager extends AbstractEventProducer<IndexEvent, IndexEventPa int catalogVersion = parameters.catalogVersion(); if (!busyLock.enterBusy()) { - fireEvent( - IndexEvent.CREATE, - new IndexEventParameters(causalityToken, catalogVersion, tableId, indexId), - new NodeStoppingException() - ); - return failedFuture(new NodeStoppingException()); } @@ -231,11 +213,7 @@ public class IndexManager extends AbstractEventProducer<IndexEvent, IndexEventPa ); } - CompletableFuture<?> fireCreateIndexEventFuture = fireCreateIndexEvent(index, causalityToken, catalogVersion); - - CompletableFuture<Void> registerIndexFuture = registerIndex(table, index, causalityToken); - - return allOf(fireCreateIndexEventFuture, registerIndexFuture); + return registerIndex(table, index, causalityToken); } /** @@ -348,11 +326,9 @@ public class IndexManager extends AbstractEventProducer<IndexEvent, IndexEventPa assert table != null : "tableId=" + tableId + ", indexId=" + index.id(); - CompletableFuture<?> fireCreateIndexEventFuture = fireCreateIndexEvent(index, causalityToken, catalogVersion); - CompletableFuture<Void> registerIndexFuture = registerIndex(table, index, causalityToken); - startIndexFutures.add(allOf(fireCreateIndexEventFuture, registerIndexFuture)); + startIndexFutures.add(registerIndexFuture); } startVv.update(causalityToken, (unused, throwable) -> allOf(startIndexFutures.toArray(CompletableFuture[]::new))) @@ -411,12 +387,4 @@ public class IndexManager extends AbstractEventProducer<IndexEvent, IndexEventPa } }); } - - private CompletableFuture<?> fireCreateIndexEvent( - CatalogIndexDescriptor index, - long causalityToken, - int catalogVersion - ) { - return fireEvent(IndexEvent.CREATE, new IndexEventParameters(causalityToken, catalogVersion, index.tableId(), index.id())); - } } diff --git a/modules/index/src/main/java/org/apache/ignite/internal/index/event/IndexEvent.java b/modules/index/src/main/java/org/apache/ignite/internal/index/event/IndexEvent.java deleted file mode 100644 index 1105c39205..0000000000 --- a/modules/index/src/main/java/org/apache/ignite/internal/index/event/IndexEvent.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.internal.index.event; - -import org.apache.ignite.internal.event.Event; - -/** - * Index management events. - */ -public enum IndexEvent implements Event { - /** This event is fired when an index was created. */ - CREATE, - - /** This event is fired when an index was dropped. */ - DROP -} diff --git a/modules/index/src/main/java/org/apache/ignite/internal/index/event/IndexEventParameters.java b/modules/index/src/main/java/org/apache/ignite/internal/index/event/IndexEventParameters.java deleted file mode 100644 index 14e9e8d272..0000000000 --- a/modules/index/src/main/java/org/apache/ignite/internal/index/event/IndexEventParameters.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.internal.index.event; - -import org.apache.ignite.internal.event.EventParameters; - -/** Index event parameters. There are properties which associate with a particular index. */ -public class IndexEventParameters extends EventParameters { - private final int tableId; - - private final int indexId; - - private final int catalogVersion; - - /** - * Constructor. - * - * @param revision Causality token. - * @param catalogVersion Catalog version. - * @param tableId Table ID. - * @param indexId Index ID. - */ - public IndexEventParameters(long revision, int catalogVersion, int tableId, int indexId) { - super(revision); - - this.catalogVersion = catalogVersion; - this.tableId = tableId; - this.indexId = indexId; - } - - /** Returns table ID this event relates to. */ - public int tableId() { - return tableId; - } - - /** Returns index ID this event relates to. */ - public int indexId() { - return indexId; - } - - /** Returns catalog version this event relates to. */ - public int catalogVersion() { - return catalogVersion; - } -} diff --git a/modules/index/src/test/java/org/apache/ignite/internal/index/IndexManagerTest.java b/modules/index/src/test/java/org/apache/ignite/internal/index/IndexManagerTest.java deleted file mode 100644 index 1da4ee14c7..0000000000 --- a/modules/index/src/test/java/org/apache/ignite/internal/index/IndexManagerTest.java +++ /dev/null @@ -1,205 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.internal.index; - -import static java.util.concurrent.CompletableFuture.completedFuture; -import static org.apache.ignite.internal.catalog.CatalogService.DEFAULT_SCHEMA_NAME; -import static org.apache.ignite.internal.catalog.CatalogService.DEFAULT_ZONE_NAME; -import static org.apache.ignite.internal.catalog.descriptors.CatalogColumnCollation.ASC_NULLS_LAST; -import static org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.willBe; -import static org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.willCompleteSuccessfully; -import static org.apache.ignite.sql.ColumnType.STRING; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.greaterThan; -import static org.hamcrest.Matchers.notNullValue; -import static org.hamcrest.Matchers.nullValue; -import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.ArgumentMatchers.anyLong; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.util.List; -import java.util.concurrent.atomic.AtomicReference; -import java.util.function.Consumer; -import org.apache.ignite.internal.catalog.CatalogManager; -import org.apache.ignite.internal.catalog.CatalogManagerImpl; -import org.apache.ignite.internal.catalog.ClockWaiter; -import org.apache.ignite.internal.catalog.commands.ColumnParams; -import org.apache.ignite.internal.catalog.commands.CreateSortedIndexCommand; -import org.apache.ignite.internal.catalog.commands.DropIndexCommand; -import org.apache.ignite.internal.catalog.descriptors.CatalogSortedIndexDescriptor; -import org.apache.ignite.internal.catalog.storage.UpdateLogImpl; -import org.apache.ignite.internal.hlc.HybridClock; -import org.apache.ignite.internal.hlc.HybridClockImpl; -import org.apache.ignite.internal.index.event.IndexEvent; -import org.apache.ignite.internal.index.event.IndexEventParameters; -import org.apache.ignite.internal.metastorage.MetaStorageManager; -import org.apache.ignite.internal.metastorage.impl.StandaloneMetaStorageManager; -import org.apache.ignite.internal.metastorage.server.SimpleInMemoryKeyValueStorage; -import org.apache.ignite.internal.schema.CatalogSchemaManager; -import org.apache.ignite.internal.table.InternalTable; -import org.apache.ignite.internal.table.TableImpl; -import org.apache.ignite.internal.table.TableTestUtils; -import org.apache.ignite.internal.table.distributed.PartitionSet; -import org.apache.ignite.internal.table.distributed.TableManager; -import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest; -import org.apache.ignite.internal.tx.impl.HeapLockManager; -import org.apache.ignite.internal.util.IgniteUtils; -import org.apache.ignite.internal.vault.VaultManager; -import org.apache.ignite.internal.vault.inmemory.InMemoryVaultService; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -/** - * Test class to verify {@link IndexManager}. - */ -public class IndexManagerTest extends BaseIgniteAbstractTest { - private static final String TABLE_NAME = "tName"; - - private final HybridClock clock = new HybridClockImpl(); - - private VaultManager vaultManager; - - private MetaStorageManager metaStorageManager; - - private ClockWaiter clockWaiter; - - private CatalogManager catalogManager; - - private IndexManager indexManager; - - @BeforeEach - public void setUp() { - TableManager tableManagerMock = mock(TableManager.class); - - when(tableManagerMock.tableAsync(anyLong(), anyInt())).thenAnswer(inv -> completedFuture(mockTable(inv.getArgument(1)))); - - when(tableManagerMock.getTable(anyInt())).thenAnswer(inv -> mockTable(inv.getArgument(0))); - - when(tableManagerMock.localPartitionSetAsync(anyLong(), anyInt())).thenReturn(completedFuture(PartitionSet.EMPTY_SET)); - - CatalogSchemaManager schManager = mock(CatalogSchemaManager.class); - - when(schManager.schemaRegistry(anyLong(), anyInt())).thenReturn(completedFuture(null)); - - String nodeName = "test"; - - vaultManager = new VaultManager(new InMemoryVaultService()); - - metaStorageManager = StandaloneMetaStorageManager.create(vaultManager, new SimpleInMemoryKeyValueStorage(nodeName)); - - clockWaiter = new ClockWaiter(nodeName, clock); - - catalogManager = new CatalogManagerImpl(new UpdateLogImpl(metaStorageManager), clockWaiter); - - indexManager = new IndexManager( - schManager, - tableManagerMock, - catalogManager, - metaStorageManager, - mock(Consumer.class) - ); - - vaultManager.start(); - metaStorageManager.start(); - clockWaiter.start(); - catalogManager.start(); - indexManager.start(); - - assertThat(metaStorageManager.deployWatches(), willCompleteSuccessfully()); - - TableTestUtils.createTable( - catalogManager, - DEFAULT_SCHEMA_NAME, - DEFAULT_ZONE_NAME, - TABLE_NAME, - List.of( - ColumnParams.builder().name("c1").type(STRING).build(), - ColumnParams.builder().name("c2").type(STRING).build() - ), - List.of("c1") - ); - } - - @AfterEach - void tearDown() throws Exception { - IgniteUtils.stopAll(vaultManager, metaStorageManager, clockWaiter, catalogManager, indexManager); - } - - @Test - @SuppressWarnings("ConstantConditions") - public void eventIsFiredWhenIndexCreated() { - String indexName = "idx"; - - AtomicReference<IndexEventParameters> holder = new AtomicReference<>(); - - indexManager.listen(IndexEvent.CREATE, (param, th) -> { - holder.set(param); - - return completedFuture(true); - }); - - indexManager.listen(IndexEvent.DROP, (param, th) -> { - holder.set(param); - - return completedFuture(true); - }); - - int catalogVersion = catalogManager.latestCatalogVersion(); - - assertThat( - catalogManager.execute( - CreateSortedIndexCommand.builder() - .schemaName(DEFAULT_SCHEMA_NAME) - .indexName(indexName) - .tableName(TABLE_NAME) - .columns(List.of("c2")) - .collations(List.of(ASC_NULLS_LAST)) - .build() - ), - willBe(nullValue()) - ); - - CatalogSortedIndexDescriptor index = (CatalogSortedIndexDescriptor) catalogManager.index(indexName, clock.nowLong()); - int tableId = index.tableId(); - - assertThat(holder.get(), notNullValue()); - assertThat(holder.get().indexId(), equalTo(index.id())); - assertThat(holder.get().tableId(), equalTo(tableId)); - assertThat(holder.get().catalogVersion(), greaterThan(catalogVersion)); - - assertThat( - catalogManager.execute(DropIndexCommand.builder().schemaName(DEFAULT_SCHEMA_NAME).indexName(indexName).build()), - willBe(nullValue()) - ); - - assertThat(holder.get(), notNullValue()); - assertThat(holder.get().indexId(), equalTo(index.id())); - assertThat(holder.get().tableId(), equalTo(tableId)); - } - - private static TableImpl mockTable(int tableId) { - InternalTable internalTable = mock(InternalTable.class); - - when(internalTable.tableId()).thenReturn(tableId); - - return new TableImpl(internalTable, new HeapLockManager()); - } -} diff --git a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/index/ItIndexManagerTest.java b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/index/ItIndexManagerTest.java deleted file mode 100644 index 5f740f413c..0000000000 --- a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/index/ItIndexManagerTest.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.ignite.internal.index; - -import static org.apache.ignite.internal.testframework.matchers.CompletableFutureMatcher.willCompleteSuccessfully; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.greaterThan; -import static org.hamcrest.Matchers.notNullValue; - -import java.util.concurrent.CompletableFuture; -import org.apache.ignite.internal.app.IgniteImpl; -import org.apache.ignite.internal.index.event.IndexEvent; -import org.apache.ignite.internal.index.event.IndexEventParameters; -import org.apache.ignite.internal.sql.engine.ClusterPerClassIntegrationTest; -import org.apache.ignite.internal.table.TableImpl; -import org.apache.ignite.internal.testframework.WorkDirectoryExtension; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; - -/** - * Tests to verify integration of {@link IndexManager} with other components. - */ -@ExtendWith(WorkDirectoryExtension.class) -public class ItIndexManagerTest extends ClusterPerClassIntegrationTest { - @Override - protected int nodes() { - return 1; - } - - @Test - public void eventsAreFiredWhenIndexesCreatedAndDropped() { - IgniteImpl ignite = (IgniteImpl) CLUSTER_NODES.get(0); - IndexManager indexManager = ignite.indexManager(); - - CompletableFuture<IndexEventParameters> pkCreatedFuture = registerListener(indexManager, IndexEvent.CREATE); - - String tableName = "TNAME"; - - int catalogVersion = ignite.catalogManager().latestCatalogVersion(); - - sql(String.format("CREATE TABLE %s (c1 INT PRIMARY KEY, c2 INT, c3 INT)", tableName)); - - TableImpl table = (TableImpl) ignite.tables().table(tableName); - - { - assertThat(pkCreatedFuture, willCompleteSuccessfully()); - - IndexEventParameters parameters = pkCreatedFuture.join(); - - assertThat(parameters, notNullValue()); - assertThat(parameters.tableId(), equalTo(table.tableId())); - assertThat(parameters.catalogVersion(), greaterThan(catalogVersion)); - } - - CompletableFuture<IndexEventParameters> indexCreatedFuture = registerListener(indexManager, IndexEvent.CREATE); - - String indexName = "INAME"; - - sql(String.format("CREATE INDEX %s ON %s (c3, c2)", indexName, tableName)); - - int createdIndexId; - { - assertThat(indexCreatedFuture, willCompleteSuccessfully()); - - IndexEventParameters parameters = indexCreatedFuture.join(); - - assertThat(parameters, notNullValue()); - assertThat(parameters.tableId(), equalTo(table.tableId())); - assertThat(parameters.catalogVersion(), greaterThan(catalogVersion)); - - createdIndexId = parameters.indexId(); - } - - CompletableFuture<IndexEventParameters> indexDroppedFuture = registerListener(indexManager, IndexEvent.DROP); - - sql(String.format("DROP INDEX %s", indexName)); - - { - assertThat(indexDroppedFuture, willCompleteSuccessfully()); - - IndexEventParameters params = indexDroppedFuture.join(); - - assertThat(params, notNullValue()); - assertThat(params.indexId(), equalTo(createdIndexId)); - } - } - - private static CompletableFuture<IndexEventParameters> registerListener(IndexManager indexManager, IndexEvent event) { - CompletableFuture<IndexEventParameters> paramFuture = new CompletableFuture<>(); - - indexManager.listen(event, (param, th) -> { - paramFuture.complete(param); - - return CompletableFuture.completedFuture(true); - }); - - return paramFuture; - } -} diff --git a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/SqlQueryProcessor.java b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/SqlQueryProcessor.java index 99d9d3c5a1..3d9ae48cbd 100644 --- a/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/SqlQueryProcessor.java +++ b/modules/sql-engine/src/main/java/org/apache/ignite/internal/sql/engine/SqlQueryProcessor.java @@ -45,7 +45,6 @@ import org.apache.ignite.internal.event.EventListener; import org.apache.ignite.internal.hlc.HybridClock; import org.apache.ignite.internal.hlc.HybridTimestamp; import org.apache.ignite.internal.index.IndexManager; -import org.apache.ignite.internal.index.event.IndexEvent; import org.apache.ignite.internal.logger.IgniteLogger; import org.apache.ignite.internal.logger.Loggers; import org.apache.ignite.internal.metrics.MetricManager; @@ -85,7 +84,6 @@ import org.apache.ignite.internal.sql.engine.util.cache.CaffeineCacheFactory; import org.apache.ignite.internal.sql.metrics.SqlClientMetricSource; import org.apache.ignite.internal.storage.DataStorageManager; import org.apache.ignite.internal.table.distributed.TableManager; -import org.apache.ignite.internal.table.event.TableEvent; import org.apache.ignite.internal.tx.InternalTransaction; import org.apache.ignite.internal.util.AsyncCursor; import org.apache.ignite.internal.util.IgniteSpinBusyLock; @@ -156,9 +154,6 @@ public class SqlQueryProcessor implements QueryProcessor { /** Busy lock for stop synchronisation. */ private final IgniteSpinBusyLock busyLock = new IgniteSpinBusyLock(); - /** Event listeners to close. */ - private final List<Pair<Event, EventListener>> evtLsnrs = new ArrayList<>(); - private final ReplicaService replicaService; private volatile SessionManager sessionManager; @@ -323,8 +318,6 @@ public class SqlQueryProcessor implements QueryProcessor { .map((p) -> () -> { if (p.left instanceof TableEvent) { tableManager.removeListener((TableEvent) p.left, p.right); - } else { - indexManager.removeListener((IndexEvent) p.left, p.right); } });
