This is an automated email from the ASF dual-hosted git repository.

timoninmaxim pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new 5e193b69247 IGNITE-27842 Remove redundant IgniteExperimental 
annotations (#12739)
5e193b69247 is described below

commit 5e193b69247c87665d7ced5d5162f52eb9515f96
Author: Maksim Timonin <[email protected]>
AuthorDate: Mon Feb 16 16:09:21 2026 +0300

    IGNITE-27842 Remove redundant IgniteExperimental annotations (#12739)
---
 docs/_docs/SQL/JDBC/jdbc-driver.adoc                          |  7 -------
 docs/_docs/SQL/sql-calcite.adoc                               |  2 --
 docs/_docs/SQL/sql-introduction.adoc                          |  4 +---
 docs/_docs/key-value-api/using-cache-queries.adoc             |  7 -------
 docs/_docs/monitoring-metrics/performance-statistics.adoc     |  2 --
 docs/_docs/monitoring-metrics/system-views.adoc               |  2 --
 docs/_docs/monitoring-metrics/tracing.adoc                    |  8 --------
 docs/_docs/net-specific/net-platform-cache.adoc               |  2 --
 docs/_docs/services/services.adoc                             |  2 --
 docs/_docs/starting-nodes.adoc                                |  2 --
 docs/_docs/tools/control-script.adoc                          |  7 -------
 modules/calcite/README.txt                                    |  2 +-
 .../ignite/calcite/CalciteQueryEngineConfiguration.java       |  2 --
 .../processors/query/calcite/jdbc/JdbcCrossEngineTest.java    |  2 +-
 modules/core/src/main/java/org/apache/ignite/Ignite.java      |  1 -
 .../core/src/main/java/org/apache/ignite/IgniteServices.java  |  3 ---
 .../main/java/org/apache/ignite/IgniteSystemProperties.java   |  4 ----
 .../main/java/org/apache/ignite/cache/CacheEntryVersion.java  |  2 --
 .../main/java/org/apache/ignite/cache/query/IndexQuery.java   |  2 --
 .../main/java/org/apache/ignite/client/ClientServices.java    |  3 ---
 .../org/apache/ignite/configuration/CacheConfiguration.java   |  2 --
 .../src/main/java/org/apache/ignite/dump/DumpConsumer.java    |  2 --
 .../core/src/main/java/org/apache/ignite/dump/DumpEntry.java  |  2 --
 .../core/src/main/java/org/apache/ignite/dump/DumpReader.java |  2 --
 .../java/org/apache/ignite/dump/DumpReaderConfiguration.java  |  2 --
 .../java/org/apache/ignite/internal/IgniteComponentType.java  |  2 +-
 .../apache/ignite/internal/management/meta/MetaCommand.java   |  2 --
 .../ignite/internal/management/meta/MetaDetailsCommand.java   |  2 --
 .../ignite/internal/management/meta/MetaListCommand.java      |  2 --
 .../ignite/internal/management/meta/MetaRemoveCommand.java    |  2 --
 .../ignite/internal/management/meta/MetaUpdateCommand.java    |  2 --
 .../management/tracing/TracingConfigurationCommand.java       |  2 --
 .../management/tracing/TracingConfigurationGetAllCommand.java |  3 ---
 .../management/tracing/TracingConfigurationGetCommand.java    |  3 ---
 .../tracing/TracingConfigurationResetAllCommand.java          |  2 --
 .../management/tracing/TracingConfigurationResetCommand.java  |  2 --
 .../management/tracing/TracingConfigurationSetCommand.java    |  3 ---
 .../java/org/apache/ignite/maintenance/MaintenanceAction.java |  2 --
 .../org/apache/ignite/maintenance/MaintenanceRegistry.java    |  2 --
 .../java/org/apache/ignite/maintenance/MaintenanceTask.java   |  2 --
 .../ignite/maintenance/MaintenanceWorkflowCallback.java       |  2 --
 .../org/apache/ignite/mxbean/PerformanceStatisticsMBean.java  |  2 --
 .../java/org/apache/ignite/services/ServiceCallContext.java   |  3 ---
 .../org/apache/ignite/services/ServiceCallContextBuilder.java |  2 --
 .../org/apache/ignite/services/ServiceCallInterceptor.java    |  2 --
 .../java/org/apache/ignite/services/ServiceConfiguration.java |  3 ---
 .../tcp/internal/TcpCommunicationConfigInitializer.java       |  4 ----
 .../java/org/apache/ignite/spi/metric/RegexpMetricFilter.java |  2 --
 .../ignite/spi/tracing/TracingConfigurationManager.java       |  2 --
 .../GridCommandHandlerClusterByClassTest_help.output          | 11 -----------
 .../GridCommandHandlerClusterByClassWithSSLTest_help.output   | 11 -----------
 .../dotnet/Apache.Ignite.Core/Cache/CachePeekMode.cs          |  1 -
 .../Cache/Configuration/CacheConfiguration.cs                 |  1 -
 .../Apache.Ignite.Core/Client/Services/IServicesClient.cs     |  1 -
 modules/platforms/dotnet/Apache.Ignite.Core/IIgnite.cs        |  4 ----
 .../dotnet/Apache.Ignite.Core/Services/IServiceCallContext.cs |  1 -
 .../Apache.Ignite.Core/Services/IServiceCallInterceptor.cs    |  1 -
 .../dotnet/Apache.Ignite.Core/Services/IServiceContext.cs     |  1 -
 .../platforms/dotnet/Apache.Ignite.Core/Services/IServices.cs |  2 --
 .../Apache.Ignite.Core/Services/ServiceCallContextBuilder.cs  |  1 -
 .../Apache.Ignite.Core/Services/ServiceConfiguration.cs       |  1 -
 61 files changed, 4 insertions(+), 163 deletions(-)

diff --git a/docs/_docs/SQL/JDBC/jdbc-driver.adoc 
b/docs/_docs/SQL/JDBC/jdbc-driver.adoc
index a57f7e69e15..25bdd16fe9c 100644
--- a/docs/_docs/SQL/JDBC/jdbc-driver.adoc
+++ b/docs/_docs/SQL/JDBC/jdbc-driver.adoc
@@ -176,13 +176,6 @@ include::{javaFile}[tags=multiple-endpoints, indent=0]
 
 === Partition Awareness [[partition-awareness]]
 
-[WARNING]
-====
-[discrete]
-Partition awareness is an experimental feature whose API or design 
architecture might be changed
-before a GA version is released.
-====
-
 Partition awareness is a feature that makes the JDBC driver "aware" of the 
partition distribution in the cluster.
 It allows the driver to pick the nodes that own the data that is being queried 
and send the query directly to those nodes
 (if the addresses of the nodes are provided in the driver's configuration). 
Partition awareness can increase average
diff --git a/docs/_docs/SQL/sql-calcite.adoc b/docs/_docs/SQL/sql-calcite.adoc
index 19311e0a603..558ffda4047 100644
--- a/docs/_docs/SQL/sql-calcite.adoc
+++ b/docs/_docs/SQL/sql-calcite.adoc
@@ -20,8 +20,6 @@ Apache Calcite is a dynamic data management framework, which 
mainly serves for m
 
 The current H2-based SQL engine has a number of fundamental limitations of 
query execution in a distributed environment. To address these limitations, a 
new SQL engine was implemented. The new engine uses tools provided by Apache 
Calcite for parsing and planning queries. It also has a new query execution 
flow.
 
-CAUTION: The Calcite-based query engine is currently in beta status.
-
 == Calcite Module Libraries
 
 To use a Calcite-based engine, please make sure that the Calcite module 
libraries are in a classpath.
diff --git a/docs/_docs/SQL/sql-introduction.adoc 
b/docs/_docs/SQL/sql-introduction.adoc
index 661324f701e..44d32d1552f 100644
--- a/docs/_docs/SQL/sql-introduction.adoc
+++ b/docs/_docs/SQL/sql-introduction.adoc
@@ -22,9 +22,7 @@ You can interact with Ignite as you would with any other SQL 
enabled storage by
 
 Internally, SQL tables have the same data structure as 
link:data-modeling/data-modeling#key-value-cache-vs-sql-table[key-value 
caches]. It means that you can change partition distribution of your data and 
leverage link:data-modeling/affinity-collocation[affinity colocation 
techniques] for better performance.
 
-Ignite's default SQL engine uses H2 Database to parse and optimize queries and 
generate execution plans, but also the Apache Calcite-based SQL engine can be 
enabled to execute queries.
-
-WARNING: Apache Calcite-based SQL engine is an experimental feature. For more 
information, see the link:SQL/sql-calcite[Calcite-based SQL engine, 
window=_blank] section.
+Ignite's default SQL engine uses H2 Database to parse and optimize queries and 
generate execution plans, but also the Apache Calcite-based SQL engine can be 
enabled to execute queries. For more information about Apache Calcite-based SQL 
engine, see the link:SQL/sql-calcite[Calcite-based SQL engine, window=_blank] 
section.
 
 == Distributed Queries
 
diff --git a/docs/_docs/key-value-api/using-cache-queries.adoc 
b/docs/_docs/key-value-api/using-cache-queries.adoc
index f7f803550da..8c97021ae35 100644
--- a/docs/_docs/key-value-api/using-cache-queries.adoc
+++ b/docs/_docs/key-value-api/using-cache-queries.adoc
@@ -121,13 +121,6 @@ 
include::code-snippets/cpp/src/scan_query.cpp[tag=set-local,indent=0]
 
 == Executing Index Queries
 
-[WARNING]
-====
-[discrete]
-Experimental API. Introduced since Apache Ignite 2.12. Only Java API is 
supported. Please send your questions and bug reports
-to [email protected].
-====
-
 Index queries work over distributed indexes and retrieve cache entries that 
match the specified query. `QueryCursor`
 delivers sorted cache entries by the order defined for queried index. 
`IndexQuery` can be used if a low amount of data
 matches filtering criteria. For such cases, `ScanQuery` usage is not optimal: 
it firstly extracts all cache entries and
diff --git a/docs/_docs/monitoring-metrics/performance-statistics.adoc 
b/docs/_docs/monitoring-metrics/performance-statistics.adoc
index eb98ba9dcf9..305dc5b870a 100644
--- a/docs/_docs/monitoring-metrics/performance-statistics.adoc
+++ b/docs/_docs/monitoring-metrics/performance-statistics.adoc
@@ -14,8 +14,6 @@
 // limitations under the License.
 = Performance Statistics
 
-WARNING: This feature is experimental and may change in future releases.
-
 == Overview
 
 Ignite provides a built-in tool for cluster profiling.
diff --git a/docs/_docs/monitoring-metrics/system-views.adoc 
b/docs/_docs/monitoring-metrics/system-views.adoc
index ad4589bb23c..fca31033d13 100644
--- a/docs/_docs/monitoring-metrics/system-views.adoc
+++ b/docs/_docs/monitoring-metrics/system-views.adoc
@@ -14,8 +14,6 @@
 // limitations under the License.
 = System Views
 
-WARNING: The system views are an experimental feature and can be changed in 
future releases.
-
 Ignite provides a number of built-in SQL views that contain information about 
cluster nodes and node metrics.
 The views are available in the SYS schema.
 See the link:SQL/schemas[Understanding Schemas] page for the information on 
how to access a non-default schema.
diff --git a/docs/_docs/monitoring-metrics/tracing.adoc 
b/docs/_docs/monitoring-metrics/tracing.adoc
index ecc6c68994f..a16298cf06e 100644
--- a/docs/_docs/monitoring-metrics/tracing.adoc
+++ b/docs/_docs/monitoring-metrics/tracing.adoc
@@ -16,8 +16,6 @@
 
 :javaFile: {javaCodeDir}/Tracing.java
 
-WARNING: This feature is experimental.
-
 A number of APIs in Ignite are instrumented for tracing with OpenCensus.
 You can collect distributed traces of various tasks executed in your cluster 
and use this information to diagnose latency problems.
 
@@ -82,12 +80,6 @@ The following sections describe the two ways of enabling 
trace sampling.
 === Using Control Script
 
 Go to the `{IGNITE_HOME}/bin` directory of your Ignite installation.
-Enable experimental commands in the control script:
-
-[source, shell]
-----
-export IGNITE_ENABLE_EXPERIMENTAL_COMMAND=true
-----
 
 Enable tracing for a specific API:
 
diff --git a/docs/_docs/net-specific/net-platform-cache.adoc 
b/docs/_docs/net-specific/net-platform-cache.adoc
index 73a09cabeae..a16a90dc498 100644
--- a/docs/_docs/net-specific/net-platform-cache.adoc
+++ b/docs/_docs/net-specific/net-platform-cache.adoc
@@ -14,8 +14,6 @@
 // limitations under the License.
 = .NET Platform Cache
 
-CAUTION: Experimental API
-
 Ignite.NET provides an additional layer of caching in the 
link:https://docs.microsoft.com/en-us/dotnet/standard/clr[CLR] heap. The 
platform cache keeps a deserialized copy of every cache entry that is present 
on the current node, thus greatly improving cache read performance at the cost 
of increased memory usage.
 
 [NOTE]
diff --git a/docs/_docs/services/services.adoc 
b/docs/_docs/services/services.adoc
index 7568b9d6c46..7127e11d505 100644
--- a/docs/_docs/services/services.adoc
+++ b/docs/_docs/services/services.adoc
@@ -312,8 +312,6 @@ an issue for real jobs like working with a DB or a cache.
 
 == Service Middleware
 
-WARNING: This feature is experimental and may change in future releases.
-
 [CAUTION]
 ====
 This feature may affect performance of service execution.
diff --git a/docs/_docs/starting-nodes.adoc b/docs/_docs/starting-nodes.adoc
index 59f8c81e966..ae65072a5b9 100644
--- a/docs/_docs/starting-nodes.adoc
+++ b/docs/_docs/starting-nodes.adoc
@@ -154,8 +154,6 @@ In this case, do not remove the nodes from the baseline 
topology.
 
 TODO: is this section valid for ignite?
 
-WARNING: This feature is experimental.
-
 When you simultaneously stop more nodes than the number of partition backups, 
some partitions may become unavailable to the remaining nodes (because both the 
primary and backup copies of the partition happen to be on the nodes that were 
shut down).
 For example, if the number of backups for a cache is set to 1 and you stop 2 
nodes, there is a chance that both the primary and backup copy of a partition 
becomes unavailable to the rest of the cluster.
 The proper way of dealing with this situation is to stop one node, rebalance 
the data, and then wait until the rebalancing is finished before stopping the 
next node, and so on.
diff --git a/docs/_docs/tools/control-script.adoc 
b/docs/_docs/tools/control-script.adoc
index 1436d75ed4b..18e7368fca3 100644
--- a/docs/_docs/tools/control-script.adoc
+++ b/docs/_docs/tools/control-script.adoc
@@ -914,13 +914,6 @@ Index(es):
 You can enable or disable sampling of traces for a specific API by using the 
`--tracing-configuration` command.
 Refer to the link:monitoring-metrics/tracing[Tracing] section for details.
 
-Before using the command, enable experimental features of the control script:
-
-[source, shell]
-----
-export IGNITE_ENABLE_EXPERIMENTAL_COMMAND=true
-----
-
 To view the current tracing configuration, execute the following command:
 
 [source, shell]
diff --git a/modules/calcite/README.txt b/modules/calcite/README.txt
index 025298c66a3..5b31619d755 100644
--- a/modules/calcite/README.txt
+++ b/modules/calcite/README.txt
@@ -1,7 +1,7 @@
 Apache Ignite Calcite Module
 --------------------------
 
-Apache Ignite Calcite module provides experimental Apache Calcite based query 
engine.
+Apache Ignite Calcite module provides Apache Calcite based query engine.
 
 To enable Calcite based engine explicit `CalciteQueryEngineConfiguration` 
instance should be added to
 `SqlConfiguration.QueryEnginesConfiguration` property (see 
`SqlConfiguration.setQueryEnginesConfiguration()`) or 
./examples/config/example-sql.xml.
diff --git 
a/modules/calcite/src/main/java/org/apache/ignite/calcite/CalciteQueryEngineConfiguration.java
 
b/modules/calcite/src/main/java/org/apache/ignite/calcite/CalciteQueryEngineConfiguration.java
index 890125690a2..c32ac442e60 100644
--- 
a/modules/calcite/src/main/java/org/apache/ignite/calcite/CalciteQueryEngineConfiguration.java
+++ 
b/modules/calcite/src/main/java/org/apache/ignite/calcite/CalciteQueryEngineConfiguration.java
@@ -20,12 +20,10 @@ package org.apache.ignite.calcite;
 import org.apache.ignite.internal.processors.query.QueryEngine;
 import org.apache.ignite.internal.processors.query.QueryEngineConfigurationEx;
 import 
org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor;
-import org.apache.ignite.lang.IgniteExperimental;
 
 /**
  * Query engine configuration for Calcite-based query engine.
  */
-@IgniteExperimental
 public class CalciteQueryEngineConfiguration implements 
QueryEngineConfigurationEx {
     /** Query engine name. */
     public static final String ENGINE_NAME = "calcite";
diff --git 
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/jdbc/JdbcCrossEngineTest.java
 
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/jdbc/JdbcCrossEngineTest.java
index 3eee08e82a3..e3d7865d1f4 100644
--- 
a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/jdbc/JdbcCrossEngineTest.java
+++ 
b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/jdbc/JdbcCrossEngineTest.java
@@ -35,7 +35,7 @@ import 
org.apache.ignite.indexing.IndexingQueryEngineConfiguration;
 import org.junit.Test;
 
 /**
- * Cross check queries on experimental and non-experimental SQL engines.
+ * Cross check queries on SQL engines.
  */
 public class JdbcCrossEngineTest extends AbstractJdbcTest {
     /** Nodes count. */
diff --git a/modules/core/src/main/java/org/apache/ignite/Ignite.java 
b/modules/core/src/main/java/org/apache/ignite/Ignite.java
index 135732756f5..c59a7b59a7b 100644
--- a/modules/core/src/main/java/org/apache/ignite/Ignite.java
+++ b/modules/core/src/main/java/org/apache/ignite/Ignite.java
@@ -790,7 +790,6 @@ public interface Ignite extends AutoCloseable {
      * </ul>
      * @return {@link TracingConfigurationManager} instance.
      */
-    @IgniteExperimental
     public @NotNull TracingConfigurationManager tracingConfiguration();
 
     /**
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteServices.java 
b/modules/core/src/main/java/org/apache/ignite/IgniteServices.java
index b74143c9e30..a3d64d45e70 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteServices.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteServices.java
@@ -22,7 +22,6 @@ import org.apache.ignite.cluster.ClusterGroup;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.lang.IgniteAsyncSupport;
 import org.apache.ignite.lang.IgniteAsyncSupported;
-import org.apache.ignite.lang.IgniteExperimental;
 import org.apache.ignite.lang.IgniteFuture;
 import org.apache.ignite.resources.IgniteInstanceResource;
 import org.apache.ignite.services.Service;
@@ -631,7 +630,6 @@ public interface IgniteServices extends IgniteAsyncSupport {
      * @throws IgniteException If failed to create service proxy.
      * @see ServiceCallContext
      */
-    @IgniteExperimental
     public <T> T serviceProxy(
         String name,
         Class<? super T> svcItf,
@@ -655,7 +653,6 @@ public interface IgniteServices extends IgniteAsyncSupport {
      * @throws IgniteException If failed to create service proxy.
      * @see ServiceCallContext
      */
-    @IgniteExperimental
     public <T> T serviceProxy(
         String name,
         Class<? super T> svcItf,
diff --git 
a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java 
b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
index 8163155c39a..30fb702d835 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
@@ -1804,7 +1804,6 @@ public final class IgniteSystemProperties extends 
IgniteCommonsSystemProperties
      * @deprecated Use {@link ShutdownPolicy} instead.
      */
     @Deprecated
-    @IgniteExperimental
     @SystemProperty("Enables node to wait until all of its data is backed up 
before " +
         "shutting down. Please note that it will completely prevent last node 
in cluster from shutting down if any " +
         "caches exist that have backups configured")
@@ -1815,7 +1814,6 @@ public final class IgniteSystemProperties extends 
IgniteCommonsSystemProperties
      * If enabled, subquery will be rewritten to JOIN where possible.
      * Default is {@code true}.
      */
-    @IgniteExperimental
     @SystemProperty("Enables subquery rewriting optimization. " +
         "If enabled, subquery will be rewritten to JOIN where possible")
     public static final String IGNITE_ENABLE_SUBQUERY_REWRITE_OPTIMIZATION = 
"IGNITE_ENABLE_SUBQUERY_REWRITE_OPTIMIZATION";
@@ -1967,7 +1965,6 @@ public final class IgniteSystemProperties extends 
IgniteCommonsSystemProperties
      */
     @SystemProperty(value = "Flag to indicate that disk writes during snapshot 
process should be in a sequential " +
         "manner when possible. This generates extra disk space usage", 
defaults = "" + DFLT_IGNITE_SNAPSHOT_SEQUENTIAL_WRITE)
-    @IgniteExperimental
     public static final String IGNITE_SNAPSHOT_SEQUENTIAL_WRITE = 
"IGNITE_SNAPSHOT_SEQUENTIAL_WRITE";
 
     /**
@@ -1977,7 +1974,6 @@ public final class IgniteSystemProperties extends 
IgniteCommonsSystemProperties
      * @see org.apache.ignite.spi.systemview.view.ConfigurationView
      */
     @SystemProperty(value = "Packages list to expose in configuration view")
-    @IgniteExperimental
     public static final String IGNITE_CONFIGURATION_VIEW_PACKAGES = 
"IGNITE_CONFIGURATION_VIEW_PACKAGES";
 
     /**
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/CacheEntryVersion.java 
b/modules/core/src/main/java/org/apache/ignite/cache/CacheEntryVersion.java
index 8aa97721b82..0953740f957 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/CacheEntryVersion.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/CacheEntryVersion.java
@@ -22,7 +22,6 @@ import java.util.Map;
 import 
org.apache.ignite.internal.processors.cache.CacheConflictResolutionManager;
 import org.apache.ignite.internal.processors.cache.IgniteInternalCache;
 import 
org.apache.ignite.internal.processors.cache.version.GridCacheVersionManager;
-import org.apache.ignite.lang.IgniteExperimental;
 
 /**
  * Entry event order.
@@ -32,7 +31,6 @@ import org.apache.ignite.lang.IgniteExperimental;
  * @see CacheConflictResolutionManager
  * @see GridCacheVersionManager#dataCenterId(byte)
  */
-@IgniteExperimental
 public interface CacheEntryVersion extends Comparable<CacheEntryVersion>, 
Serializable {
     /**
      * Order of the update. Value is an incremental counter value. Scope of 
counter is node.
diff --git 
a/modules/core/src/main/java/org/apache/ignite/cache/query/IndexQuery.java 
b/modules/core/src/main/java/org/apache/ignite/cache/query/IndexQuery.java
index 7d4829f7cd7..91bbf86c759 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/query/IndexQuery.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/query/IndexQuery.java
@@ -25,7 +25,6 @@ import javax.cache.Cache;
 import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.internal.A;
 import org.apache.ignite.lang.IgniteBiPredicate;
-import org.apache.ignite.lang.IgniteExperimental;
 import org.jetbrains.annotations.Nullable;
 
 /**
@@ -44,7 +43,6 @@ import org.jetbrains.annotations.Nullable;
  *
  * Conjuction of items in {@link #criteria} has to represent a valid range to 
traverse the index tree.
  */
-@IgniteExperimental
 public final class IndexQuery<K, V> extends Query<Cache.Entry<K, V>> {
     /** */
     private static final long serialVersionUID = 0L;
diff --git 
a/modules/core/src/main/java/org/apache/ignite/client/ClientServices.java 
b/modules/core/src/main/java/org/apache/ignite/client/ClientServices.java
index 7f30aec6586..82e32c198d1 100644
--- a/modules/core/src/main/java/org/apache/ignite/client/ClientServices.java
+++ b/modules/core/src/main/java/org/apache/ignite/client/ClientServices.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.client;
 
 import java.util.Collection;
-import org.apache.ignite.lang.IgniteExperimental;
 import org.apache.ignite.services.ServiceCallContext;
 
 /**
@@ -88,7 +87,6 @@ public interface ClientServices {
      * @return Proxy over remote service.
      * @see ServiceCallContext
      */
-    @IgniteExperimental
     public <T> T serviceProxy(String name, Class<? super T> svcItf, 
ServiceCallContext callCtx);
 
     /**
@@ -106,6 +104,5 @@ public interface ClientServices {
      * @return Proxy over remote service.
      * @see ServiceCallContext
      */
-    @IgniteExperimental
     public <T> T serviceProxy(String name, Class<? super T> svcItf, 
ServiceCallContext callCtx, long timeout);
 }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
index d8ecac8d9d9..7140c603e5c 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
@@ -811,7 +811,6 @@ public class CacheConfiguration<K, V> extends 
MutableConfiguration<K, V> {
      *
      * @return Platform cache configuration or null.
      */
-    @IgniteExperimental
     public PlatformCacheConfiguration getPlatformCacheConfiguration() {
         return platformCfg;
     }
@@ -832,7 +831,6 @@ public class CacheConfiguration<K, V> extends 
MutableConfiguration<K, V> {
      * @param platformCfg Platform cache configuration.
      * @return {@code this} for chaining.
      */
-    @IgniteExperimental
     public CacheConfiguration<K, V> 
setPlatformCacheConfiguration(PlatformCacheConfiguration platformCfg) {
         this.platformCfg = platformCfg;
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/dump/DumpConsumer.java 
b/modules/core/src/main/java/org/apache/ignite/dump/DumpConsumer.java
index 4c5a4c181ad..532cceaacbd 100644
--- a/modules/core/src/main/java/org/apache/ignite/dump/DumpConsumer.java
+++ b/modules/core/src/main/java/org/apache/ignite/dump/DumpConsumer.java
@@ -21,7 +21,6 @@ import java.util.Iterator;
 import org.apache.ignite.binary.BinaryType;
 import org.apache.ignite.cdc.TypeMapping;
 import org.apache.ignite.internal.processors.cache.StoredCacheData;
-import org.apache.ignite.lang.IgniteExperimental;
 
 /**
  * Consumer of a cache dump.
@@ -33,7 +32,6 @@ import org.apache.ignite.lang.IgniteExperimental;
  * </ul>
  *
  */
-@IgniteExperimental
 public interface DumpConsumer {
     /**
      * Starts the consumer.
diff --git a/modules/core/src/main/java/org/apache/ignite/dump/DumpEntry.java 
b/modules/core/src/main/java/org/apache/ignite/dump/DumpEntry.java
index 05cd5b9dd9e..04efbc71c9d 100644
--- a/modules/core/src/main/java/org/apache/ignite/dump/DumpEntry.java
+++ b/modules/core/src/main/java/org/apache/ignite/dump/DumpEntry.java
@@ -22,7 +22,6 @@ import java.util.Iterator;
 import java.util.Set;
 import org.apache.ignite.cache.CacheEntryVersion;
 import 
org.apache.ignite.internal.processors.cache.persistence.snapshot.dump.Dump;
-import org.apache.ignite.lang.IgniteExperimental;
 
 /**
  * Single cache entry from dump.
@@ -31,7 +30,6 @@ import org.apache.ignite.lang.IgniteExperimental;
  * @see DumpConsumer#onPartition(int, int, Iterator)
  * @see org.apache.ignite.IgniteSnapshot#createDump(String, Collection)
  */
-@IgniteExperimental
 public interface DumpEntry {
     /** @return Cache id. */
     public int cacheId();
diff --git a/modules/core/src/main/java/org/apache/ignite/dump/DumpReader.java 
b/modules/core/src/main/java/org/apache/ignite/dump/DumpReader.java
index 1e9243374d6..1443da99d3f 100644
--- a/modules/core/src/main/java/org/apache/ignite/dump/DumpReader.java
+++ b/modules/core/src/main/java/org/apache/ignite/dump/DumpReader.java
@@ -56,7 +56,6 @@ import org.apache.ignite.internal.util.typedef.internal.A;
 import org.apache.ignite.internal.util.typedef.internal.CU;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteBiTuple;
-import org.apache.ignite.lang.IgniteExperimental;
 import org.apache.ignite.marshaller.Marshallers;
 import org.apache.ignite.marshaller.jdk.JdkMarshaller;
 import org.apache.ignite.spi.IgniteSpiAdapter;
@@ -75,7 +74,6 @@ import static 
org.apache.ignite.internal.processors.cache.persistence.wal.reader
  * The application runs independently of Ignite node process and provides the 
ability to the {@link DumpConsumer} to consume
  * all data stored in cache dump ({@link Dump})
  */
-@IgniteExperimental
 public class DumpReader implements Runnable {
     /** Configuration. */
     private final DumpReaderConfiguration cfg;
diff --git 
a/modules/core/src/main/java/org/apache/ignite/dump/DumpReaderConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/dump/DumpReaderConfiguration.java
index bfb150ad0da..c4de312ff51 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/dump/DumpReaderConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/dump/DumpReaderConfiguration.java
@@ -22,7 +22,6 @@ import org.apache.ignite.binary.BinaryObject;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.processors.cache.CacheObject;
 import org.apache.ignite.internal.processors.cache.KeyCacheObject;
-import org.apache.ignite.lang.IgniteExperimental;
 import org.apache.ignite.spi.encryption.EncryptionSpi;
 import org.jetbrains.annotations.Nullable;
 
@@ -32,7 +31,6 @@ import org.jetbrains.annotations.Nullable;
  * @see DumpReader
  * @see DumpConsumer
  */
-@IgniteExperimental
 public class DumpReaderConfiguration {
     /** Default timeout. */
     public static final Duration DFLT_TIMEOUT = Duration.ofDays(7);
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteComponentType.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteComponentType.java
index a25276cc8db..8e9e483af45 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteComponentType.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteComponentType.java
@@ -112,7 +112,7 @@ public enum IgniteComponentType {
         "ignite-opencensus"
     ),
 
-    /** Experimental calcite based query engine. */
+    /** Calcite based query engine. */
     QUERY_ENGINE(
         NoOpQueryEngine.class.getName(),
         
"org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor",
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaCommand.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaCommand.java
index 21d365b34d0..6994560e4c0 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaCommand.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaCommand.java
@@ -19,7 +19,6 @@ package org.apache.ignite.internal.management.meta;
 
 import org.apache.ignite.internal.management.api.CommandRegistryImpl;
 import org.apache.ignite.internal.management.api.HelpCommand;
-import org.apache.ignite.lang.IgniteExperimental;
 
 /** Metadata commands. */
 public class MetaCommand extends CommandRegistryImpl {
@@ -35,7 +34,6 @@ public class MetaCommand extends CommandRegistryImpl {
     }
 
     /** */
-    @IgniteExperimental
     public static class MetaHelpCommand implements HelpCommand {
         /** {@inheritDoc} */
         @Override public String description() {
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaDetailsCommand.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaDetailsCommand.java
index 32b786503b0..6e93f633707 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaDetailsCommand.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaDetailsCommand.java
@@ -27,13 +27,11 @@ import org.apache.ignite.internal.binary.BinaryUtils;
 import org.apache.ignite.internal.dto.IgniteDataTransferObject;
 import org.apache.ignite.internal.management.api.ComputeCommand;
 import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.lang.IgniteExperimental;
 
 import static org.apache.ignite.internal.management.api.CommandUtils.INDENT;
 import static 
org.apache.ignite.internal.management.meta.MetaListCommand.printInt;
 
 /** */
-@IgniteExperimental
 public class MetaDetailsCommand implements 
ComputeCommand<IgniteDataTransferObject, MetadataListResult> {
     /** {@inheritDoc} */
     @Override public String description() {
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaListCommand.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaListCommand.java
index f8bc4659ba2..9e4dfbcac8a 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaListCommand.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaListCommand.java
@@ -22,10 +22,8 @@ import org.apache.ignite.internal.binary.BinaryMetadata;
 import org.apache.ignite.internal.dto.IgniteDataTransferObject;
 import org.apache.ignite.internal.management.api.ComputeCommand;
 import org.apache.ignite.internal.management.api.NoArg;
-import org.apache.ignite.lang.IgniteExperimental;
 
 /** */
-@IgniteExperimental
 public class MetaListCommand implements 
ComputeCommand<IgniteDataTransferObject, MetadataListResult> {
     /** {@inheritDoc} */
     @Override public String description() {
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaRemoveCommand.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaRemoveCommand.java
index 6e063da6906..3d190cbb393 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaRemoveCommand.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaRemoveCommand.java
@@ -26,10 +26,8 @@ import java.util.function.Consumer;
 import org.apache.ignite.internal.binary.BinaryMetadata;
 import org.apache.ignite.internal.management.api.ComputeCommand;
 import 
org.apache.ignite.internal.processors.cache.persistence.filename.NodeFileTree;
-import org.apache.ignite.lang.IgniteExperimental;
 
 /** */
-@IgniteExperimental
 public class MetaRemoveCommand implements ComputeCommand<MetaRemoveCommandArg, 
MetadataMarshalled> {
     /** {@inheritDoc} */
     @Override public String description() {
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaUpdateCommand.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaUpdateCommand.java
index 082421d4281..485f2c16348 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaUpdateCommand.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/management/meta/MetaUpdateCommand.java
@@ -20,10 +20,8 @@ package org.apache.ignite.internal.management.meta;
 import java.util.function.Consumer;
 import org.apache.ignite.internal.binary.BinaryMetadata;
 import org.apache.ignite.internal.management.api.ComputeCommand;
-import org.apache.ignite.lang.IgniteExperimental;
 
 /** */
-@IgniteExperimental
 public class MetaUpdateCommand implements ComputeCommand<MetaUpdateCommandArg, 
MetadataMarshalled> {
     /** {@inheritDoc} */
     @Override public String description() {
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationCommand.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationCommand.java
index afd2479ed93..eb9fe7d5c30 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationCommand.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationCommand.java
@@ -24,12 +24,10 @@ import 
org.apache.ignite.internal.dto.IgniteDataTransferObject;
 import org.apache.ignite.internal.management.api.CommandRegistryImpl;
 import org.apache.ignite.internal.management.api.ComputeCommand;
 import 
org.apache.ignite.internal.management.tracing.TracingConfigurationCommand.TracingConfigurationCommandArg;
-import org.apache.ignite.lang.IgniteExperimental;
 
 import static 
org.apache.ignite.internal.management.api.CommandUtils.coordinatorOrNull;
 
 /** */
-@IgniteExperimental
 public class TracingConfigurationCommand extends 
CommandRegistryImpl<TracingConfigurationCommandArg, 
TracingConfigurationTaskResult>
     implements ComputeCommand<TracingConfigurationCommandArg, 
TracingConfigurationTaskResult> {
     /** */
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationGetAllCommand.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationGetAllCommand.java
index 9c0beb9be95..0444940c6f9 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationGetAllCommand.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationGetAllCommand.java
@@ -17,10 +17,7 @@
 
 package org.apache.ignite.internal.management.tracing;
 
-import org.apache.ignite.lang.IgniteExperimental;
-
 /** */
-@IgniteExperimental
 public class TracingConfigurationGetAllCommand extends 
AbstractTracingConfigurationCommand {
     /** {@inheritDoc} */
     @Override public String description() {
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationGetCommand.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationGetCommand.java
index 1d74af8a59f..db4b90ef1b2 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationGetCommand.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationGetCommand.java
@@ -17,10 +17,7 @@
 
 package org.apache.ignite.internal.management.tracing;
 
-import org.apache.ignite.lang.IgniteExperimental;
-
 /** */
-@IgniteExperimental
 public class TracingConfigurationGetCommand extends 
AbstractTracingConfigurationCommand {
     /** {@inheritDoc} */
     @Override public String description() {
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationResetAllCommand.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationResetAllCommand.java
index 8a31da90159..278fbe32368 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationResetAllCommand.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationResetAllCommand.java
@@ -18,10 +18,8 @@
 package org.apache.ignite.internal.management.tracing;
 
 import 
org.apache.ignite.internal.management.tracing.TracingConfigurationCommand.TracingConfigurationResetAllCommandArg;
-import org.apache.ignite.lang.IgniteExperimental;
 
 /** */
-@IgniteExperimental
 public class TracingConfigurationResetAllCommand extends 
AbstractTracingConfigurationCommand {
     /** {@inheritDoc} */
     @Override public String description() {
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationResetCommand.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationResetCommand.java
index a60ac59701d..78e3b563099 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationResetCommand.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationResetCommand.java
@@ -18,10 +18,8 @@
 package org.apache.ignite.internal.management.tracing;
 
 import 
org.apache.ignite.internal.management.tracing.TracingConfigurationCommand.TracingConfigurationResetCommandArg;
-import org.apache.ignite.lang.IgniteExperimental;
 
 /** */
-@IgniteExperimental
 public class TracingConfigurationResetCommand extends 
AbstractTracingConfigurationCommand {
     /** {@inheritDoc} */
     @Override public String description() {
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationSetCommand.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationSetCommand.java
index 8fd010a5dd5..cac880de32c 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationSetCommand.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/management/tracing/TracingConfigurationSetCommand.java
@@ -17,10 +17,7 @@
 
 package org.apache.ignite.internal.management.tracing;
 
-import org.apache.ignite.lang.IgniteExperimental;
-
 /** */
-@IgniteExperimental
 public class TracingConfigurationSetCommand extends 
AbstractTracingConfigurationCommand {
     /** {@inheritDoc} */
     @Override public String description() {
diff --git 
a/modules/core/src/main/java/org/apache/ignite/maintenance/MaintenanceAction.java
 
b/modules/core/src/main/java/org/apache/ignite/maintenance/MaintenanceAction.java
index 49bceb66dc2..f0398192703 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/maintenance/MaintenanceAction.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/maintenance/MaintenanceAction.java
@@ -17,7 +17,6 @@
 
 package org.apache.ignite.maintenance;
 
-import org.apache.ignite.lang.IgniteExperimental;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
@@ -34,7 +33,6 @@ import org.jetbrains.annotations.Nullable;
  * call {@link MaintenanceRegistry#actionsForMaintenanceTask(String)}
  *
  */
-@IgniteExperimental
 public interface MaintenanceAction<T> {
     /**
      * Executes operations of current maintenance action.
diff --git 
a/modules/core/src/main/java/org/apache/ignite/maintenance/MaintenanceRegistry.java
 
b/modules/core/src/main/java/org/apache/ignite/maintenance/MaintenanceRegistry.java
index e1f84246974..a1bc741f11f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/maintenance/MaintenanceRegistry.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/maintenance/MaintenanceRegistry.java
@@ -22,7 +22,6 @@ import java.util.function.UnaryOperator;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.internal.util.lang.IgniteThrowableFunction;
-import org.apache.ignite.lang.IgniteExperimental;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
@@ -71,7 +70,6 @@ import org.jetbrains.annotations.Nullable;
  *     </ul>
  * </p>
  */
-@IgniteExperimental
 public interface MaintenanceRegistry {
     /**
      * @return {@code True} if any maintenance task was found.
diff --git 
a/modules/core/src/main/java/org/apache/ignite/maintenance/MaintenanceTask.java 
b/modules/core/src/main/java/org/apache/ignite/maintenance/MaintenanceTask.java
index c6009528665..4668ef8e095 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/maintenance/MaintenanceTask.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/maintenance/MaintenanceTask.java
@@ -17,7 +17,6 @@
 
 package org.apache.ignite.maintenance;
 
-import org.apache.ignite.lang.IgniteExperimental;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
@@ -43,7 +42,6 @@ import org.jetbrains.annotations.Nullable;
  * Matching between {@link MaintenanceTask} and {@link 
MaintenanceWorkflowCallback} is performed based on
  * the name of maintenance task that should be unique among all registered 
tasks.
  */
-@IgniteExperimental
 public class MaintenanceTask {
     /** */
     private final String name;
diff --git 
a/modules/core/src/main/java/org/apache/ignite/maintenance/MaintenanceWorkflowCallback.java
 
b/modules/core/src/main/java/org/apache/ignite/maintenance/MaintenanceWorkflowCallback.java
index 340bb530fcf..bbd84431d50 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/maintenance/MaintenanceWorkflowCallback.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/maintenance/MaintenanceWorkflowCallback.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.maintenance;
 
 import java.util.List;
-import org.apache.ignite.lang.IgniteExperimental;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
@@ -32,7 +31,6 @@ import org.jetbrains.annotations.Nullable;
  * {@link MaintenanceRegistry} during its workflow will collect necessary 
information about maintenance for components
  * without knowing implementation details of the components.
  */
-@IgniteExperimental
 public interface MaintenanceWorkflowCallback {
     /**
      * Called by {@link MaintenanceRegistry} and enables it to check if 
maintenance is still needed
diff --git 
a/modules/core/src/main/java/org/apache/ignite/mxbean/PerformanceStatisticsMBean.java
 
b/modules/core/src/main/java/org/apache/ignite/mxbean/PerformanceStatisticsMBean.java
index b0036b95213..51bab394f4e 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/mxbean/PerformanceStatisticsMBean.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/mxbean/PerformanceStatisticsMBean.java
@@ -18,7 +18,6 @@
 package org.apache.ignite.mxbean;
 
 import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.lang.IgniteExperimental;
 
 /**
  * MBean that provides access to performance statistics management.
@@ -27,7 +26,6 @@ import org.apache.ignite.lang.IgniteExperimental;
  * @deprecated Use managements API beans, instead.
  */
 @Deprecated
-@IgniteExperimental
 @MXBeanDescription("MBean provide access to performance statistics 
management.")
 public interface PerformanceStatisticsMBean {
     /** Start collecting performance statistics in the cluster. */
diff --git 
a/modules/core/src/main/java/org/apache/ignite/services/ServiceCallContext.java 
b/modules/core/src/main/java/org/apache/ignite/services/ServiceCallContext.java
index 978a68a0f16..d0b6bdb14a2 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/services/ServiceCallContext.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/services/ServiceCallContext.java
@@ -17,8 +17,6 @@
 
 package org.apache.ignite.services;
 
-import org.apache.ignite.lang.IgniteExperimental;
-
 /**
  * Service call context.
  * <p>
@@ -57,7 +55,6 @@ import org.apache.ignite.lang.IgniteExperimental;
  * @see ServiceCallContextBuilder
  * @see ServiceCallInterceptor
  */
-@IgniteExperimental
 public interface ServiceCallContext {
     /**
      * Create a context builder.
diff --git 
a/modules/core/src/main/java/org/apache/ignite/services/ServiceCallContextBuilder.java
 
b/modules/core/src/main/java/org/apache/ignite/services/ServiceCallContextBuilder.java
index 9ba40df3591..e00a2e87093 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/services/ServiceCallContextBuilder.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/services/ServiceCallContextBuilder.java
@@ -21,12 +21,10 @@ import java.util.HashMap;
 import java.util.Map;
 import org.apache.ignite.internal.processors.service.ServiceCallContextImpl;
 import org.apache.ignite.internal.util.typedef.internal.A;
-import org.apache.ignite.lang.IgniteExperimental;
 
 /**
  * Service call context builder.
  */
-@IgniteExperimental
 public class ServiceCallContextBuilder {
     /** Service call context attributes. */
     private final Map<String, Object> attrs = new HashMap<>();
diff --git 
a/modules/core/src/main/java/org/apache/ignite/services/ServiceCallInterceptor.java
 
b/modules/core/src/main/java/org/apache/ignite/services/ServiceCallInterceptor.java
index 4922ecab9c0..815b4c39bc8 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/services/ServiceCallInterceptor.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/services/ServiceCallInterceptor.java
@@ -19,7 +19,6 @@ package org.apache.ignite.services;
 
 import java.io.Serializable;
 import java.util.concurrent.Callable;
-import org.apache.ignite.lang.IgniteExperimental;
 
 /**
  * Service call interceptor.
@@ -89,7 +88,6 @@ import org.apache.ignite.lang.IgniteExperimental;
  * @see ServiceCallContext
  * @see ServiceContext
  */
-@IgniteExperimental
 public interface ServiceCallInterceptor extends Serializable {
     /**
      * Intercepts delegated service call.
diff --git 
a/modules/core/src/main/java/org/apache/ignite/services/ServiceConfiguration.java
 
b/modules/core/src/main/java/org/apache/ignite/services/ServiceConfiguration.java
index 76311c1b977..77d40ae83c3 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/services/ServiceConfiguration.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/services/ServiceConfiguration.java
@@ -25,7 +25,6 @@ import org.apache.ignite.cluster.ClusterNode;
 import org.apache.ignite.internal.processors.service.IgniteServiceProcessor;
 import org.apache.ignite.internal.util.tostring.GridToStringExclude;
 import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.lang.IgniteExperimental;
 import org.apache.ignite.lang.IgnitePredicate;
 
 /**
@@ -303,7 +302,6 @@ public class ServiceConfiguration implements Serializable {
      *
      * @return Service call interceptors.
      */
-    @IgniteExperimental
     public ServiceCallInterceptor[] getInterceptors() {
         return interceptors;
     }
@@ -314,7 +312,6 @@ public class ServiceConfiguration implements Serializable {
      * @param interceptors Service call interceptors.
      * @return {@code this} for chaining.
      */
-    @IgniteExperimental
     public ServiceConfiguration setInterceptors(ServiceCallInterceptor... 
interceptors) {
         this.interceptors = interceptors;
 
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/internal/TcpCommunicationConfigInitializer.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/internal/TcpCommunicationConfigInitializer.java
index 3aba3b1e7cd..75d22adb441 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/internal/TcpCommunicationConfigInitializer.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/internal/TcpCommunicationConfigInitializer.java
@@ -35,7 +35,6 @@ import org.apache.ignite.internal.util.typedef.F;
 import org.apache.ignite.internal.util.typedef.internal.A;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.lang.IgniteBiTuple;
-import org.apache.ignite.lang.IgniteExperimental;
 import org.apache.ignite.plugin.extensions.communication.Message;
 import org.apache.ignite.resources.IgniteInstanceResource;
 import org.apache.ignite.spi.IgniteSpiAdapter;
@@ -552,7 +551,6 @@ public abstract class TcpCommunicationConfigInitializer 
extends IgniteSpiAdapter
     }
 
     /** */
-    @IgniteExperimental
     public void setConnectionRequestor(ConnectionRequestor 
connectionRequestor) {
         cfg.connectionRequestor(connectionRequestor);
     }
@@ -731,7 +729,6 @@ public abstract class TcpCommunicationConfigInitializer 
extends IgniteSpiAdapter
      *
      * @see #setForceClientToServerConnections(boolean)
      */
-    @IgniteExperimental
     public boolean forceClientToServerConnections() {
         return cfg.forceClientToSrvConnections();
     }
@@ -742,7 +739,6 @@ public abstract class TcpCommunicationConfigInitializer 
extends IgniteSpiAdapter
      * In this mode, when server needs the connection with client, it uses 
{@link DiscoverySpi} protocol to notify
      * client about it. After that client opens the required connection from 
its side.
      */
-    @IgniteExperimental
     @IgniteSpiConfiguration(optional = true)
     public TcpCommunicationSpi setForceClientToServerConnections(boolean 
forceClientToSrvConnections) {
         cfg.forceClientToSrvConnections(forceClientToSrvConnections);
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/metric/RegexpMetricFilter.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/metric/RegexpMetricFilter.java
index e4340f74c86..2eb75d492d7 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/metric/RegexpMetricFilter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/metric/RegexpMetricFilter.java
@@ -21,12 +21,10 @@ import java.util.function.Predicate;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import org.apache.ignite.internal.util.typedef.internal.A;
-import org.apache.ignite.lang.IgniteExperimental;
 
 /**
  * Metric registry filter based on regular expression.
  */
-@IgniteExperimental
 public class RegexpMetricFilter implements Predicate<ReadOnlyMetricRegistry> {
     /** Metric registries pattern. */
     private final Pattern regPtrn;
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/tracing/TracingConfigurationManager.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/tracing/TracingConfigurationManager.java
index 840b0aad044..373c10087e7 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/tracing/TracingConfigurationManager.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/tracing/TracingConfigurationManager.java
@@ -20,14 +20,12 @@ package org.apache.ignite.spi.tracing;
 import java.util.Collections;
 import java.util.Map;
 import org.apache.ignite.IgniteException;
-import org.apache.ignite.lang.IgniteExperimental;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
 /**
  * Allows to configure tracing, read the configuration and restore it to the 
defaults.
  */
-@IgniteExperimental
 public interface TracingConfigurationManager {
     /** Default SQL tracing configuration. */
     static final TracingConfigurationParameters DEFAULT_SQL_CONFIGURATION =
diff --git 
a/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassTest_help.output
 
b/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassTest_help.output
index 06ed1dbb83b..ade6902b3a5 100644
--- 
a/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassTest_help.output
+++ 
b/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassTest_help.output
@@ -261,24 +261,19 @@ This utility can do the following commands:
   Change cluster tag to new value:
     control.(sh|bat) --change-tag newTagValue [--yes]
 
-  [EXPERIMENTAL]
   Print metadata command help:
     control.(sh|bat) --meta help
 
-  [EXPERIMENTAL]
   Print list of binary metadata types:
     control.(sh|bat) --meta list
 
-  [EXPERIMENTAL]
   Print detailed info about specified binary type (the type must be specified 
by type name or by type identifier):
     control.(sh|bat) --meta details [--typeId <typeId>]|[--typeName <typeName>]
 
-  [EXPERIMENTAL]
   Remove the metadata of the specified type (the type must be specified by 
type name or by type identifier) from cluster and saves the removed metadata to 
the specified file.
 If the file name isn't specified the output file name is: '<typeId>.bin':
     control.(sh|bat) --meta remove [--out <fileName>] [--typeId 
<typeId>]|[--typeName <typeName>]
 
-  [EXPERIMENTAL]
   Update cluster metadata from specified file (file name is required):
     control.(sh|bat) --meta update --in <fileName>
 
@@ -289,7 +284,6 @@ If the file name isn't specified the output file name is: 
'<typeId>.bin':
       IMMEDIATE        - Stop immediately as soon as all components are ready.
       GRACEFUL         - Node will stop if and only if it does not store any 
unique partitions, that don't have another copies in the cluster.
 
-  [EXPERIMENTAL]
   Print tracing configuration:
     control.(sh|bat) --tracing-configuration [--scope 
DISCOVERY|EXCHANGE|COMMUNICATION|TX|SQL]
 
@@ -301,7 +295,6 @@ If the file name isn't specified the output file name is: 
'<typeId>.bin':
         TX                                             - Transactional scope.
         SQL                                            - SQL scope.
 
-  [EXPERIMENTAL]
   Print tracing configuration:
     control.(sh|bat) --tracing-configuration get_all [--scope 
DISCOVERY|EXCHANGE|COMMUNICATION|TX|SQL]
 
@@ -313,7 +306,6 @@ If the file name isn't specified the output file name is: 
'<typeId>.bin':
         TX                                             - Transactional scope.
         SQL                                            - SQL scope.
 
-  [EXPERIMENTAL]
   Print specific tracing configuration based on specified --scope and --label:
     control.(sh|bat) --tracing-configuration get --scope 
DISCOVERY|EXCHANGE|COMMUNICATION|TX|SQL [--label label]
 
@@ -325,7 +317,6 @@ If the file name isn't specified the output file name is: 
'<typeId>.bin':
         TX                                             - Transactional scope.
         SQL                                            - SQL scope.
 
-  [EXPERIMENTAL]
   Reset all specific tracing configuration the to default. If --scope is 
specified, then remove all label specific configuration for the given scope and 
reset given scope specific configuration to the default, if --scope is skipped 
then reset all tracing configurations to the default. Print tracing 
configuration:
     control.(sh|bat) --tracing-configuration reset_all [--scope 
DISCOVERY|EXCHANGE|COMMUNICATION|TX|SQL]
 
@@ -337,7 +328,6 @@ If the file name isn't specified the output file name is: 
'<typeId>.bin':
         TX                                             - Transactional scope.
         SQL                                            - SQL scope.
 
-  [EXPERIMENTAL]
   Reset specific tracing configuration to the default. If both --scope and 
--label are specified then remove given configuration, if only --scope is 
specified then reset given configuration to the default. Print reseted 
configuration:
     control.(sh|bat) --tracing-configuration reset --scope 
DISCOVERY|EXCHANGE|COMMUNICATION|TX|SQL [--label label]
 
@@ -349,7 +339,6 @@ If the file name isn't specified the output file name is: 
'<typeId>.bin':
         TX                                             - Transactional scope.
         SQL                                            - SQL scope.
 
-  [EXPERIMENTAL]
   Set new tracing configuration. If both --scope and --label are specified 
then add or override label specific configuration, if only --scope is 
specified, then override scope specific configuration. Print applied 
configuration:
     control.(sh|bat) --tracing-configuration set --scope 
DISCOVERY|EXCHANGE|COMMUNICATION|TX|SQL [--label label] [--sampling-rate 
Decimal value between 0 and 1, where 0 means never and 1 means always. More or 
less reflects the probability of sampling specific trace.] [--included-scopes 
Set of scopes with comma as separator  DISCOVERY|EXCHANGE|COMMUNICATION|TX|SQL]
 
diff --git 
a/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassWithSSLTest_help.output
 
b/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassWithSSLTest_help.output
index 20bf8167824..834742e78eb 100644
--- 
a/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassWithSSLTest_help.output
+++ 
b/modules/core/src/test/resources/org.apache.ignite.util/GridCommandHandlerClusterByClassWithSSLTest_help.output
@@ -261,24 +261,19 @@ This utility can do the following commands:
   Change cluster tag to new value:
     control.(sh|bat) --change-tag newTagValue [--yes]
 
-  [EXPERIMENTAL]
   Print metadata command help:
     control.(sh|bat) --meta help
 
-  [EXPERIMENTAL]
   Print list of binary metadata types:
     control.(sh|bat) --meta list
 
-  [EXPERIMENTAL]
   Print detailed info about specified binary type (the type must be specified 
by type name or by type identifier):
     control.(sh|bat) --meta details [--typeId <typeId>]|[--typeName <typeName>]
 
-  [EXPERIMENTAL]
   Remove the metadata of the specified type (the type must be specified by 
type name or by type identifier) from cluster and saves the removed metadata to 
the specified file.
 If the file name isn't specified the output file name is: '<typeId>.bin':
     control.(sh|bat) --meta remove [--out <fileName>] [--typeId 
<typeId>]|[--typeName <typeName>]
 
-  [EXPERIMENTAL]
   Update cluster metadata from specified file (file name is required):
     control.(sh|bat) --meta update --in <fileName>
 
@@ -289,7 +284,6 @@ If the file name isn't specified the output file name is: 
'<typeId>.bin':
       IMMEDIATE        - Stop immediately as soon as all components are ready.
       GRACEFUL         - Node will stop if and only if it does not store any 
unique partitions, that don't have another copies in the cluster.
 
-  [EXPERIMENTAL]
   Print tracing configuration:
     control.(sh|bat) --tracing-configuration [--scope 
DISCOVERY|EXCHANGE|COMMUNICATION|TX|SQL]
 
@@ -301,7 +295,6 @@ If the file name isn't specified the output file name is: 
'<typeId>.bin':
         TX                                             - Transactional scope.
         SQL                                            - SQL scope.
 
-  [EXPERIMENTAL]
   Print tracing configuration:
     control.(sh|bat) --tracing-configuration get_all [--scope 
DISCOVERY|EXCHANGE|COMMUNICATION|TX|SQL]
 
@@ -313,7 +306,6 @@ If the file name isn't specified the output file name is: 
'<typeId>.bin':
         TX                                             - Transactional scope.
         SQL                                            - SQL scope.
 
-  [EXPERIMENTAL]
   Print specific tracing configuration based on specified --scope and --label:
     control.(sh|bat) --tracing-configuration get --scope 
DISCOVERY|EXCHANGE|COMMUNICATION|TX|SQL [--label label]
 
@@ -325,7 +317,6 @@ If the file name isn't specified the output file name is: 
'<typeId>.bin':
         TX                                             - Transactional scope.
         SQL                                            - SQL scope.
 
-  [EXPERIMENTAL]
   Reset all specific tracing configuration the to default. If --scope is 
specified, then remove all label specific configuration for the given scope and 
reset given scope specific configuration to the default, if --scope is skipped 
then reset all tracing configurations to the default. Print tracing 
configuration:
     control.(sh|bat) --tracing-configuration reset_all [--scope 
DISCOVERY|EXCHANGE|COMMUNICATION|TX|SQL]
 
@@ -337,7 +328,6 @@ If the file name isn't specified the output file name is: 
'<typeId>.bin':
         TX                                             - Transactional scope.
         SQL                                            - SQL scope.
 
-  [EXPERIMENTAL]
   Reset specific tracing configuration to the default. If both --scope and 
--label are specified then remove given configuration, if only --scope is 
specified then reset given configuration to the default. Print reseted 
configuration:
     control.(sh|bat) --tracing-configuration reset --scope 
DISCOVERY|EXCHANGE|COMMUNICATION|TX|SQL [--label label]
 
@@ -349,7 +339,6 @@ If the file name isn't specified the output file name is: 
'<typeId>.bin':
         TX                                             - Transactional scope.
         SQL                                            - SQL scope.
 
-  [EXPERIMENTAL]
   Set new tracing configuration. If both --scope and --label are specified 
then add or override label specific configuration, if only --scope is 
specified, then override scope specific configuration. Print applied 
configuration:
     control.(sh|bat) --tracing-configuration set --scope 
DISCOVERY|EXCHANGE|COMMUNICATION|TX|SQL [--label label] [--sampling-rate 
Decimal value between 0 and 1, where 0 means never and 1 means always. More or 
less reflects the probability of sampling specific trace.] [--included-scopes 
Set of scopes with comma as separator  DISCOVERY|EXCHANGE|COMMUNICATION|TX|SQL]
 
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/CachePeekMode.cs 
b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/CachePeekMode.cs
index af7af772991..9875648573f 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/CachePeekMode.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/CachePeekMode.cs
@@ -66,7 +66,6 @@ namespace Apache.Ignite.Core.Cache
         /// Peeks value from local native .NET cache
         /// (see <see cref="CacheConfiguration.PlatformCacheConfiguration"/>). 
         /// </summary>
-        [IgniteExperimental]
         Platform = 0x1000
     }
 }
diff --git 
a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Configuration/CacheConfiguration.cs
 
b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Configuration/CacheConfiguration.cs
index 56681cf7457..d45dc14ca77 100644
--- 
a/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Configuration/CacheConfiguration.cs
+++ 
b/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Configuration/CacheConfiguration.cs
@@ -970,7 +970,6 @@ namespace Apache.Ignite.Core.Cache.Configuration
         /// Gets or sets platform cache configuration.
         /// More details: <see cref="PlatformCacheConfiguration"/>. 
         /// </summary>
-        [IgniteExperimental]
         public PlatformCacheConfiguration PlatformCacheConfiguration { get; 
set; }
 
         /// <summary>
diff --git 
a/modules/platforms/dotnet/Apache.Ignite.Core/Client/Services/IServicesClient.cs
 
b/modules/platforms/dotnet/Apache.Ignite.Core/Client/Services/IServicesClient.cs
index f788d6709e1..b98d1a4d9d5 100644
--- 
a/modules/platforms/dotnet/Apache.Ignite.Core/Client/Services/IServicesClient.cs
+++ 
b/modules/platforms/dotnet/Apache.Ignite.Core/Client/Services/IServicesClient.cs
@@ -52,7 +52,6 @@ namespace Apache.Ignite.Core.Client.Services
         /// <param name="serviceName">Service name.</param>
         /// <param name="callCtx">Service call context.</param>
         /// <returns>Proxy object that forwards all member calls to a remote 
Ignite service.</returns>
-        [IgniteExperimental]
         T GetServiceProxy<T>(string serviceName, IServiceCallContext callCtx) 
where T : class;
 
         /// <summary>
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/IIgnite.cs 
b/modules/platforms/dotnet/Apache.Ignite.Core/IIgnite.cs
index dd72c71a94e..48cd529c0db 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/IIgnite.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/IIgnite.cs
@@ -134,7 +134,6 @@ namespace Apache.Ignite.Core
         /// <param name="platformCacheConfiguration">Platform cache 
configuration. Can be null.
         /// When not null, native .NET cache is created additionally.</param>
         /// <returns>Existing or newly created cache.</returns>
-        [IgniteExperimental]
         ICache<TK, TV> GetOrCreateCache<TK, TV>(CacheConfiguration 
configuration,
             NearCacheConfiguration nearConfiguration, 
PlatformCacheConfiguration platformCacheConfiguration);
 
@@ -177,7 +176,6 @@ namespace Apache.Ignite.Core
         /// <param name="platformCacheConfiguration">Platform cache 
configuration. Can be null.
         /// When not null, native .NET cache is created additionally.</param>
         /// <returns>Existing or newly created cache.</returns>
-        [IgniteExperimental]
         ICache<TK, TV> CreateCache<TK, TV>(CacheConfiguration configuration,
             NearCacheConfiguration nearConfiguration, 
PlatformCacheConfiguration platformCacheConfiguration);
 
@@ -307,7 +305,6 @@ namespace Apache.Ignite.Core
         /// <typeparam name="TK">Cache key type.</typeparam>
         /// <typeparam name="TV">Cache value type.</typeparam>
         /// <returns>Near cache instance.</returns>
-        [IgniteExperimental]
         ICache<TK, TV> CreateNearCache<TK, TV>(string name, 
NearCacheConfiguration configuration,
             PlatformCacheConfiguration platformConfiguration);
 
@@ -331,7 +328,6 @@ namespace Apache.Ignite.Core
         /// <typeparam name="TK">Cache key type.</typeparam>
         /// <typeparam name="TV">Cache value type.</typeparam>
         /// <returns>Near cache instance.</returns>
-        [IgniteExperimental]
         ICache<TK, TV> GetOrCreateNearCache<TK, TV>(string name, 
NearCacheConfiguration configuration,
             PlatformCacheConfiguration platformConfiguration);
 
diff --git 
a/modules/platforms/dotnet/Apache.Ignite.Core/Services/IServiceCallContext.cs 
b/modules/platforms/dotnet/Apache.Ignite.Core/Services/IServiceCallContext.cs
index a494acb32d1..2d615ed8fc9 100644
--- 
a/modules/platforms/dotnet/Apache.Ignite.Core/Services/IServiceCallContext.cs
+++ 
b/modules/platforms/dotnet/Apache.Ignite.Core/Services/IServiceCallContext.cs
@@ -61,7 +61,6 @@ namespace Apache.Ignite.Core.Services
     /// <seealso cref="IServiceCallInterceptor"/>
     /// <seealso cref="IServiceContext"/>
     /// <seealso cref="ServiceCallContextBuilder"/>
-    [IgniteExperimental]
     public interface IServiceCallContext
     {
         /// <summary>
diff --git 
a/modules/platforms/dotnet/Apache.Ignite.Core/Services/IServiceCallInterceptor.cs
 
b/modules/platforms/dotnet/Apache.Ignite.Core/Services/IServiceCallInterceptor.cs
index a1fd6e9cf14..7d2896cbfec 100644
--- 
a/modules/platforms/dotnet/Apache.Ignite.Core/Services/IServiceCallInterceptor.cs
+++ 
b/modules/platforms/dotnet/Apache.Ignite.Core/Services/IServiceCallInterceptor.cs
@@ -103,7 +103,6 @@ namespace Apache.Ignite.Core.Services
     /// </summary>
     /// <seealso cref="IServiceCallContext"/>
     /// <seealso cref="IServiceContext"/>
-    [IgniteExperimental]
     public interface IServiceCallInterceptor
     {
         /// <summary>
diff --git 
a/modules/platforms/dotnet/Apache.Ignite.Core/Services/IServiceContext.cs 
b/modules/platforms/dotnet/Apache.Ignite.Core/Services/IServiceContext.cs
index 927ba70e595..68b0c298aaf 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Services/IServiceContext.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Services/IServiceContext.cs
@@ -72,7 +72,6 @@ namespace Apache.Ignite.Core.Services
         /// </summary>
         /// <returns>Context of the current service call.</returns>
         /// <seealso cref="IServiceCallContext"/>
-        [IgniteExperimental]
         IServiceCallContext CurrentCallContext { get; }
     }
 }
\ No newline at end of file
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Services/IServices.cs 
b/modules/platforms/dotnet/Apache.Ignite.Core/Services/IServices.cs
index 07a36ece4b2..34a3e4690d4 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Services/IServices.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Services/IServices.cs
@@ -286,7 +286,6 @@ namespace Apache.Ignite.Core.Services
         /// <param name="callCtx">Service call context.</param>
         /// <returns>Proxy over service.</returns>
         /// <seealso cref="IServiceCallContext"/>
-        [IgniteExperimental]
         T GetServiceProxy<T>(string name, bool sticky, IServiceCallContext 
callCtx) where T : class;
 
         /// <summary>
@@ -326,7 +325,6 @@ namespace Apache.Ignite.Core.Services
         /// <param name="callCtx">Service call context.</param>
         /// <returns>Proxy over service.</returns>
         /// <seealso cref="IServiceCallContext"/>
-        [IgniteExperimental]
         dynamic GetDynamicServiceProxy(string name, bool sticky, 
IServiceCallContext callCtx);
 
         /// <summary>
diff --git 
a/modules/platforms/dotnet/Apache.Ignite.Core/Services/ServiceCallContextBuilder.cs
 
b/modules/platforms/dotnet/Apache.Ignite.Core/Services/ServiceCallContextBuilder.cs
index e3856835f63..745896bfa2e 100644
--- 
a/modules/platforms/dotnet/Apache.Ignite.Core/Services/ServiceCallContextBuilder.cs
+++ 
b/modules/platforms/dotnet/Apache.Ignite.Core/Services/ServiceCallContextBuilder.cs
@@ -26,7 +26,6 @@ namespace Apache.Ignite.Core.Services
     /// <summary>
     /// Service call context builder.
     /// </summary>
-    [IgniteExperimental]
     public class ServiceCallContextBuilder
     {
         /** Context attributes. */
diff --git 
a/modules/platforms/dotnet/Apache.Ignite.Core/Services/ServiceConfiguration.cs 
b/modules/platforms/dotnet/Apache.Ignite.Core/Services/ServiceConfiguration.cs
index a3f9bd2cdac..ddf81be20e5 100644
--- 
a/modules/platforms/dotnet/Apache.Ignite.Core/Services/ServiceConfiguration.cs
+++ 
b/modules/platforms/dotnet/Apache.Ignite.Core/Services/ServiceConfiguration.cs
@@ -71,7 +71,6 @@ namespace Apache.Ignite.Core.Services
         /// <summary>
         /// Gets or sets service call interceptors.
         /// </summary>
-        [IgniteExperimental]
         [SuppressMessage("Microsoft.Usage", 
"CA2227:CollectionPropertiesShouldBeReadOnly")]
         public ICollection<IServiceCallInterceptor> Interceptors { get; set; }
 

Reply via email to