[jira] [Created] (IGNITE-14620) GridCacheAsyncOperationsLimitSelfTest#testAsyncOps is flaky
Pavel Tupitsyn created IGNITE-14620: --- Summary: GridCacheAsyncOperationsLimitSelfTest#testAsyncOps is flaky Key: IGNITE-14620 URL: https://issues.apache.org/jira/browse/IGNITE-14620 Project: Ignite Issue Type: Bug Components: cache Affects Versions: 2.11 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.11 GridCacheAsyncOperationsLimitSelfTest#testAsyncOps became flaky because of changes from IGNITE-12033 -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-14609) Document old and new async continuation behavior
Pavel Tupitsyn created IGNITE-14609: --- Summary: Document old and new async continuation behavior Key: IGNITE-14609 URL: https://issues.apache.org/jira/browse/IGNITE-14609 Project: Ignite Issue Type: Improvement Components: documentation Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.11 IGNITE-12033 changed the default async behavior for cache operations in Java and .NET, plus Compute operations in .NET. Document old and new async continuation behavior for Java and .NET. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-14577) .NET: error serialization failed when thread is interrupted
Pavel Tupitsyn created IGNITE-14577: --- Summary: .NET: error serialization failed when thread is interrupted Key: IGNITE-14577 URL: https://issues.apache.org/jira/browse/IGNITE-14577 Project: Ignite Issue Type: New Feature Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn When using {{ICompute.WithTimeout}}, the following scenario is possible: * Timeout is reached, and Ignite interrupts compute job thread * {{InterruptedException}} is thrown from the job code * Ignite.NET tries to serialize the job result (exception) in {{BinaryUtils.WriteInvocationResult}} * {{BinaryProcessor.PutBinaryTypes}} is called during the serialization * Thread is interrupted, so metadata update fails with {{InterruptedException}} As a result, instead of a simple timeout exception, there is a lot of cryptic errors in the log. Possible fixes: * Handle {{InterruptedException}} as a special case in {{WriteInvocationResult}} * Do not interrupt binary meta updates -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-14532) Thin client: Unordered map used for putAll warning is unavoidable
Pavel Tupitsyn created IGNITE-14532: --- Summary: Thin client: Unordered map used for putAll warning is unavoidable Key: IGNITE-14532 URL: https://issues.apache.org/jira/browse/IGNITE-14532 Project: Ignite Issue Type: New Feature Components: thin client Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.11 Thin client uses LinkedHashMap to preserve client-side entry order. Ignite logs a warning and there is no way to fix it for the user: {code} Unordered map java.util.HashMap is used for putAll operation on cache exact. This can lead to a distributed deadlock. Switch to a sorted map like TreeMap instead. {code} We should suppress this warning for thin client operations, since it does not make sense. Thin clients have different language-specific APIs, some of them don't even use maps. The same applies to PlatformCache (thick C# & C++). -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-14402) Java Thin: Continuous Query
Pavel Tupitsyn created IGNITE-14402: --- Summary: Java Thin: Continuous Query Key: IGNITE-14402 URL: https://issues.apache.org/jira/browse/IGNITE-14402 Project: Ignite Issue Type: New Feature Components: thin client Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.11 Implement Continuous Query API in Java Thin Client. See .NET Thin Client as a reference: IGNITE-13148 -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-14343) .NET: Allow arbitrary MemberInit projections in LINQ
Pavel Tupitsyn created IGNITE-14343: --- Summary: .NET: Allow arbitrary MemberInit projections in LINQ Key: IGNITE-14343 URL: https://issues.apache.org/jira/browse/IGNITE-14343 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.11 Ignite LINQ provider allows anonymous type projections: {code} query.Select(emp => new {Id = emp.Key, Name = emp.Value.Name}); {code} However, it does not work with a custom class: {code} query.Select(emp => new Foo {Id = emp.Key, Name = emp.Value.Name}); {code} throws exception: {code} System.NotSupportedException : The expression 'new Foo() {Id = [x].Key}' (type: System.Linq.Expressions.MemberInitExpression) is not supported. {code} Add VisitMemberInit overload to CacheQueryExpressionVisitor to support this scenario. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-14294) .NET: ClientServerCompatibilityTest is flaky
Pavel Tupitsyn created IGNITE-14294: --- Summary: .NET: ClientServerCompatibilityTest is flaky Key: IGNITE-14294 URL: https://issues.apache.org/jira/browse/IGNITE-14294 Project: Ignite Issue Type: Bug Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.11 ClientServerCompatibilityTest fails for two reasons: 1. {{Failed to establish Ignite thin client connection, examine inner exceptions for details. (Connection refused 127.0.0.1:10892)}} - check process output, is there a different port used for the client connector? 2. {{GridUnsafe cannot access class jdk.internal.misc.SharedSecrets}} - we should pass {{--add-exports}} and {{--illegal-access=permit}} JVM options when running on Java9+, see {{Jvm.IsJava9}}. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-14293) .NET: AffinityKey does not work
Pavel Tupitsyn created IGNITE-14293: --- Summary: .NET: AffinityKey does not work Key: IGNITE-14293 URL: https://issues.apache.org/jira/browse/IGNITE-14293 Project: Ignite Issue Type: Bug Components: platforms Affects Versions: 2.10 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 {{AffinityKey}} does not work as expected - {{Affinity}} property is not used for affinity calculation. This is caused by IGNITE-13160: {{AffinityKey}} system type is overwritten by {{UnmanagedCallbacks.BinaryTypeGet}} call. As a result, this type becomes a regular, user type, and does not map to a corresponding type on the Java side. * Add test that combines QueryEntity with AffinityKey * Check that other system types (IgniteUuid, etc) don't have this problem, add tests * Make sure we never overwrite system types during registration * Improve examples tests: Thick Sql example provides inconsistent output due to this bug -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-14243) .NET: Upgrade ConfigurationManager dependency
Pavel Tupitsyn created IGNITE-14243: --- Summary: .NET: Upgrade ConfigurationManager dependency Key: IGNITE-14243 URL: https://issues.apache.org/jira/browse/IGNITE-14243 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.11 ConfigurationManager dependency is limited to versions below 5 which causes problems when other dependencies want 5.0+. Test that Ignite is compatible with newer versions and extend the range of allowed versions {code} {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-14208) .NET: Examples multi targeting
Pavel Tupitsyn created IGNITE-14208: --- Summary: .NET: Examples multi targeting Key: IGNITE-14208 URL: https://issues.apache.org/jira/browse/IGNITE-14208 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.11 Currently examples require .NET SDK 2.1, which is quite old. Users are more likely to have .NET Core 3.1 or .NET 5 installed. Fix example projects and replace {code} netcoreapp2.1 {code} with {code} netcoreapp2.1;netcoreapp3.1;net5 {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-14187) .NET Thin Client: DataStreamer
Pavel Tupitsyn created IGNITE-14187: --- Summary: .NET Thin Client: DataStreamer Key: IGNITE-14187 URL: https://issues.apache.org/jira/browse/IGNITE-14187 Project: Ignite Issue Type: New Feature Components: platforms, thin client Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.11 Add data streaming to Thin Client -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-14173) .NET: TestReconnectToOldNodeDisablesPartitionAwareness fails
Pavel Tupitsyn created IGNITE-14173: --- Summary: .NET: TestReconnectToOldNodeDisablesPartitionAwareness fails Key: IGNITE-14173 URL: https://issues.apache.org/jira/browse/IGNITE-14173 Project: Ignite Issue Type: Bug Components: platforms, thin client Affects Versions: 2.11 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.11 TestReconnectToOldNodeDisablesPartitionAwareness is broken by changes from IGNITE-14103 -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-14116) .NET: Review LongRunning tests
Pavel Tupitsyn created IGNITE-14116: --- Summary: .NET: Review LongRunning tests Key: IGNITE-14116 URL: https://issues.apache.org/jira/browse/IGNITE-14116 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.11 {{TestUtils.CategoryIntensive}} is supposed to be applied to long-running tests, so that we can exclude that category and do a quick test run. * Review current tests duration and apply the attribute to all tests that take over 2 or 3 seconds. * Review test fixtures that take a long time to set up. * Update DEVNOTES with a command to run quick tests only (exclude long and examples). -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-14103) .NET Thin Client: Retrieve binary configuration from server
Pavel Tupitsyn created IGNITE-14103: --- Summary: .NET Thin Client: Retrieve binary configuration from server Key: IGNITE-14103 URL: https://issues.apache.org/jira/browse/IGNITE-14103 Project: Ignite Issue Type: Improvement Components: platforms, thin client Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.11 Thin clients require manual binary configuration currently. Settings like compact footer and simple/full name mapper should be set to match the cluster settings. Extend the protocol to retrieve those settings automatically on start. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-14101) .NET Thin Client: Add connection limit configuration property.
Pavel Tupitsyn created IGNITE-14101: --- Summary: .NET Thin Client: Add connection limit configuration property. Key: IGNITE-14101 URL: https://issues.apache.org/jira/browse/IGNITE-14101 Project: Ignite Issue Type: Improvement Components: platforms, thin client Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn With partition awareness enabled, the thin client connects to every server node in the cluster. Provide a config property to limit the number of connections to limit the resource usage on servers and clients. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-14076) Exponential putAll performance degradation in transactional cache
Pavel Tupitsyn created IGNITE-14076: --- Summary: Exponential putAll performance degradation in transactional cache Key: IGNITE-14076 URL: https://issues.apache.org/jira/browse/IGNITE-14076 Project: Ignite Issue Type: Bug Components: cache Affects Versions: 2.9.1 Reporter: Pavel Tupitsyn Fix For: 2.11 {{putAll}} execution time grows almost exponentially while the number of keys grows linearly in the following test: {code:java} public class PutAllTxTest extends GridCommonAbstractTest { @Test public void testPutAll() throws Exception { Ignition.start(getConfiguration("server1")); Ignition.start(getConfiguration("server2")); Ignite ignite = Ignition.start(getConfiguration("client").setClientMode(true)); IgniteCache cache = ignite.createCache( new CacheConfiguration("c") .setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL)); int count = 5; Map data = new TreeMap<>(); for (int i = 0; i < count; i++) data.put(i, i); long begin = System.nanoTime(); cache.putAll(data); long dur = System.nanoTime() - begin; System.out.println("> " + dur / 100); } } {code} ||Entries||Seconds|| |1000|0.4| |5000|1.9| |1|3.8| |2|10.7| |4|41| |5|64| -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-14064) .NET: Incorrect table name when query type is generic
Pavel Tupitsyn created IGNITE-14064: --- Summary: .NET: Incorrect table name when query type is generic Key: IGNITE-14064 URL: https://issues.apache.org/jira/browse/IGNITE-14064 Project: Ignite Issue Type: Bug Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Using a generic type as a QueryEntity value type results in a broken SQL table name: {code} var ignite = Ignition.Start(TestUtils.GetTestConfiguration()); var cfg = new CacheConfiguration( TestUtils.TestName, new QueryEntity(typeof(int), typeof(GenericTest))); var cache = ignite.GetOrCreateCache>(cfg); cache[1] = new GenericTest {Prop = "1"}; var tables = cache.Query(new SqlFieldsQuery("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES")) .Select(x => (string) x.Single()).ToArray(); {code} Resulting table name is *0, CULTURE=NEUTRAL, PUBLICKEYTOKEN=7CEC85D7BEA7798E]]*. We should clean up the generic type name in {{BinaryUtils.GetSqlTypeName}}. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-14047) .NET: Release build fails because of missing nuget executable
Pavel Tupitsyn created IGNITE-14047: --- Summary: .NET: Release build fails because of missing nuget executable Key: IGNITE-14047 URL: https://issues.apache.org/jira/browse/IGNITE-14047 Project: Ignite Issue Type: Bug Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn NuGet executable is not downloaded when {{-skipNuGet}} is specified, but it is required for .NET Framework build. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-14045) .NET: Examples tests fail on .NET Core 3 nightly run
Pavel Tupitsyn created IGNITE-14045: --- Summary: .NET: Examples tests fail on .NET Core 3 nightly run Key: IGNITE-14045 URL: https://issues.apache.org/jira/browse/IGNITE-14045 Project: Ignite Issue Type: Bug Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.11 Example tests assume {{netcoreapp2.1}} in assembly paths, but .NET Core 3.0 TC project overrides the SDK version, breaking the tests. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-14033) .NET: MessagingTest is flaky
Pavel Tupitsyn created IGNITE-14033: --- Summary: .NET: MessagingTest is flaky Key: IGNITE-14033 URL: https://issues.apache.org/jira/browse/IGNITE-14033 Project: Ignite Issue Type: Bug Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.11 TestRemoteListen is flaky: https://ci.ignite.apache.org/test/-5844373269997071739?currentProjectId=IgniteTests24Java8=IgniteTests24Java8_PlatformNetCoreLinux=%3Cdefault%3E -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-14032) IgniteMessaging.stopRemoteListen does not remove remote listeners immediately
Pavel Tupitsyn created IGNITE-14032: --- Summary: IgniteMessaging.stopRemoteListen does not remove remote listeners immediately Key: IGNITE-14032 URL: https://issues.apache.org/jira/browse/IGNITE-14032 Project: Ignite Issue Type: Bug Components: messaging Reporter: Pavel Tupitsyn Remote listeners still exist after {{IgniteMessaging.stopRemoteListen}} call, they are removed after some delay, which is unreliable. See {{MessagingTest.TestStopRemoteListenRemovesAllCallbacksUponExit}} in Ignite.NET code as a reproducer. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13979) .NET: Modernize examples
Pavel Tupitsyn created IGNITE-13979: --- Summary: .NET: Modernize examples Key: IGNITE-13979 URL: https://issues.apache.org/jira/browse/IGNITE-13979 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.11 Rework and modernize Ignite.NET examples: * Refactor to .NET Core * One project per example to run with {{dotnet run}} or from the IDE * NuGet-based (similar to how Java examples are Maven-based) -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13957) GridQueryProcessor.validateKeyAndValue attempts to deserialize key and value when QueryEntity.fields is not set
Pavel Tupitsyn created IGNITE-13957: --- Summary: GridQueryProcessor.validateKeyAndValue attempts to deserialize key and value when QueryEntity.fields is not set Key: IGNITE-13957 URL: https://issues.apache.org/jira/browse/IGNITE-13957 Project: Ignite Issue Type: Bug Components: sql Affects Versions: 2.9.1, 2.9 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 {{GridQueryProcessor.validateKeyAndValue}} attempts to deserialize cache key and value on {{put}} when {{QueryEntity.fields}} is not set, and fails when corresponding classes can't be found. * The bug was introduced in 2.9 * There is no problem when some query entity fields are defined Reproducer in .NET (TODO: add both .NET and Java tests for this) {code} // CacheQueriesCodeConfigurationTest /// /// Tests query entity validation when no has been set. /// [Test] public void TestMissingQueryAttributes() { using (var ignite = Ignition.Start(TestUtils.GetTestConfiguration())) { var cfg = new CacheConfiguration( TestUtils.TestName, new QueryEntity(typeof(string), typeof(MissingAttributesTest))); var cache = ignite.GetOrCreateCache(cfg); cache["1"] = new MissingAttributesTest {Foo = "Bar"}; } } /// /// Class without any attributes. /// private class MissingAttributesTest { /** */ public string Foo { get; set; } } {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13883) .NET: Performance: Refactor BinarySystemHandlers.TryReadSystemType to switch-case
Pavel Tupitsyn created IGNITE-13883: --- Summary: .NET: Performance: Refactor BinarySystemHandlers.TryReadSystemType to switch-case Key: IGNITE-13883 URL: https://issues.apache.org/jira/browse/IGNITE-13883 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn {{BinarySystemHandlers.TryReadSystemType}} is too clever with interfaces and generics: * Hard to understand and maintain * Possibly causes overhead due to virtual method calls Refactor to switch-case and check if performance improves. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13859) .NET: Build scripts and instructions cleanup
Pavel Tupitsyn created IGNITE-13859: --- Summary: .NET: Build scripts and instructions cleanup Key: IGNITE-13859 URL: https://issues.apache.org/jira/browse/IGNITE-13859 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn The one and only build script is *build.ps1*. * Remove *build-mono.sh* - Ignite does not work properly under Mono * Change *build.sh* to delegate to *build.ps1* same way as *build.bat* does * Update *build.ps1* to work by default on Linux/macOS: instead of looking for Mono msbuild, simply skip .NET Framework build part and print a warning along the lines of ".NET Core build succeeded. Full Ignite.NET build requires Windows and .NET Framework 4.x.". Using msbuild from Mono produces incorrect results anyway. * Update README files accordingly -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13834) .NET: Set COMPlus_EnableAlternateStackCheck environment variable in Dockerfile
Pavel Tupitsyn created IGNITE-13834: --- Summary: .NET: Set COMPlus_EnableAlternateStackCheck environment variable in Dockerfile Key: IGNITE-13834 URL: https://issues.apache.org/jira/browse/IGNITE-13834 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn COMPlus_EnableAlternateStackCheck fixes {{stack smashing detected}} issue and should be enabled by default in Ignite.NET Dockerfile https://github.com/apache/ignite/blob/master/docker/apache-ignite-net/Dockerfile -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13826) .NET: RendezvousAffinityFunction.BackupFilter
Pavel Tupitsyn created IGNITE-13826: --- Summary: .NET: RendezvousAffinityFunction.BackupFilter Key: IGNITE-13826 URL: https://issues.apache.org/jira/browse/IGNITE-13826 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 * Add {{RendezvousAffinityFunction.BackupFilter}} property * Allow single predefined implementation: {{ClusterNodeAttributeAffinityBackupFilter}} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13804) Java thin: avoid buffer copies in synchronous operations
Pavel Tupitsyn created IGNITE-13804: --- Summary: Java thin: avoid buffer copies in synchronous operations Key: IGNITE-13804 URL: https://issues.apache.org/jira/browse/IGNITE-13804 Project: Ignite Issue Type: Improvement Components: thin client Reporter: Pavel Tupitsyn {{org.apache.ignite.internal.client.thin.TcpClientChannel#send}} creates a buffer copy, because the buffer will be returned to the pool upon leaving the scope, but we need it to survive longer while NIO framework processes it. However, for synchronous requests we block the thread anyway, so an extra copy can be avoided. See discussion in [#8483|https://github.com/apache/ignite/pull/8483#discussion_r533915757] -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13759) .NET: Add support for dotnet-example global tool
Pavel Tupitsyn created IGNITE-13759: --- Summary: .NET: Add support for dotnet-example global tool Key: IGNITE-13759 URL: https://issues.apache.org/jira/browse/IGNITE-13759 Project: Ignite Issue Type: Bug Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 https://github.com/patriksvensson/dotnet-example is a nice way to present and run examples. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13755) .NET: Inspections fail after TC upgrade - unused classes detected
Pavel Tupitsyn created IGNITE-13755: --- Summary: .NET: Inspections fail after TC upgrade - unused classes detected Key: IGNITE-13755 URL: https://issues.apache.org/jira/browse/IGNITE-13755 Project: Ignite Issue Type: Bug Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.9.1 {code} Enum 'CacheFlags' is never used {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13754) .NET: LINQ provider emits incorrect table alias for queries with JOIN and GROUP BY combined
Pavel Tupitsyn created IGNITE-13754: --- Summary: .NET: LINQ provider emits incorrect table alias for queries with JOIN and GROUP BY combined Key: IGNITE-13754 URL: https://issues.apache.org/jira/browse/IGNITE-13754 Project: Ignite Issue Type: Bug Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 Attachments: Meeting.cs, MeetingAttachment.cs, Program.cs See the attached reproducer. Generated SQL is: {code} select _T0.MEETINGID, max (_T0.AttachmentDate) from USERSCHEMA.MEETING as _T0 inner join USERSCHEMA.MEETINGATTACHMENT as _T1 on (_T1.MEETINGID = _T0.MEETINGID) group by (_T0.MEETINGID) {code} {{_T0.AttachmentDate}} should be {{_T1.AttachmentDate}} here. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13746) Document partition-aware data loading
Pavel Tupitsyn created IGNITE-13746: --- Summary: Document partition-aware data loading Key: IGNITE-13746 URL: https://issues.apache.org/jira/browse/IGNITE-13746 Project: Ignite Issue Type: Improvement Components: documentation Reporter: Pavel Tupitsyn Assignee: Denis A. Magda Document the fact that CacheStore.loadCache discards non-primary entries, and how to deal with that properly. Old documentation has this section: https://apacheignite.readme.io/docs/data-loading#partition-aware-data-loading And a callout: {code} In case of partitioned caches and 3rd party persistence such as a relational database, keys that are not mapped to this node, either as primary or backups, will be automatically discarded. This is not relevant for Ignite Persistent Store where every node stores only that data for which the node is either a primary or backup. {code} Additionally, it would be great to mention non-primary entries being discarded in CacheStore Javadoc (and .NET XMLDoc): * https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/cache/store/CacheStore.java * https://github.com/apache/ignite/blob/master/modules/platforms/dotnet/Apache.Ignite.Core/Cache/Store/ICacheStore.cs -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13692) .NET: Default query timeout
Pavel Tupitsyn created IGNITE-13692: --- Summary: .NET: Default query timeout Key: IGNITE-13692 URL: https://issues.apache.org/jira/browse/IGNITE-13692 Project: Ignite Issue Type: Improvement Components: platforms Affects Versions: 2.9 Reporter: Pavel Tupitsyn Fix For: 2.10 Propagate IGNITE-7285 changes to .NET thin and thick APIs: * Add {{IgniteConfiguration.DefaultQueryTimeout}} * Change {{SqlFieldsQuery.Timeout}} to be {{-1}} by default, so that global config is used * Enable {{ClientBitmaskFeature.DefaultQueryTimeout}} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13635) .NET: OOM due to integer overflow in PlatformOutputStream
Pavel Tupitsyn created IGNITE-13635: --- Summary: .NET: OOM due to integer overflow in PlatformOutputStream Key: IGNITE-13635 URL: https://issues.apache.org/jira/browse/IGNITE-13635 Project: Ignite Issue Type: Bug Components: platforms Affects Versions: 2.9, 1.4 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10, 2.9.1 {{PlatformOutputStreamImpl.unsafeEnsure}} causes integer overflow, then passes a negative value to {{PlatformCallbackGateway.memoryReallocate}} from there it is passed to {{Marshal.ReAllocHGlobal}}, which throws an OutOfMemoryException. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13622) .NET: Add Snapshots API
Pavel Tupitsyn created IGNITE-13622: --- Summary: .NET: Add Snapshots API Key: IGNITE-13622 URL: https://issues.apache.org/jira/browse/IGNITE-13622 Project: Ignite Issue Type: New Feature Components: platforms Affects Versions: 2.9 Reporter: Pavel Tupitsyn Fix For: 2.10 IGNITE-11073 introduced a Java API to create snapshots: * {{Ignite.snapshot()}} * {{IgniteSnapshot.createSnapshot, cancelSnapshot}} Propagate this API to .NET. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13615) .NET: Fix failover-related documentation
Pavel Tupitsyn created IGNITE-13615: --- Summary: .NET: Fix failover-related documentation Key: IGNITE-13615 URL: https://issues.apache.org/jira/browse/IGNITE-13615 Project: Ignite Issue Type: Improvement Components: documentation, platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 The following page incorrectly mentions that failover is not supported in .NET Thin Client https://ignite.apache.org/docs/latest/thin-clients/getting-started-with-thin-clients Fix this and review the feature table. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13608) .NET: Add Partitions and UpdateBatchSize to SqlFieldsQuery
Pavel Tupitsyn created IGNITE-13608: --- Summary: .NET: Add Partitions and UpdateBatchSize to SqlFieldsQuery Key: IGNITE-13608 URL: https://issues.apache.org/jira/browse/IGNITE-13608 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 IGNITE-4523 and IGNITE-11499 addede new options to SqlFieldsQuery, propagate .NET: * {{SqlFieldsQuery.Partitions}}, {{QueryOptions.Partitions}} * {{SqlFieldsQuery.UpdateBatchSize}}, {{QueryOptions.UpdateBatchSize}} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13607) .NET: Binary meta is not registered from QueryEntity on cache start when types are not present on server node
Pavel Tupitsyn created IGNITE-13607: --- Summary: .NET: Binary meta is not registered from QueryEntity on cache start when types are not present on server node Key: IGNITE-13607 URL: https://issues.apache.org/jira/browse/IGNITE-13607 Project: Ignite Issue Type: Bug Components: platforms, thin client Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 When {{QueryEntity}} is present in {{CacheConfiguration}}, {{GridQueryProcessor}} registers binary metadata for key and value types by looking up Java classes (IGNITE-5795) and .NET types (IGNITE-13160) and scanning attributes. In particular, Affinity Key is determined at this point and then cached for future use. However, when corresponding Java/.NET types are not present on the server node, affinity key can't be determined from annotations/attributes and is considered null. This can happens only with dynamic cache start in the following cases: * Thin clients - the most obvious case, classes are almost never present on server nodes * Thick clients * Server nodes with different classpath -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13600) .NET: TypeResolver uses legacy ReflectionOnlyLoad
Pavel Tupitsyn created IGNITE-13600: --- Summary: .NET: TypeResolver uses legacy ReflectionOnlyLoad Key: IGNITE-13600 URL: https://issues.apache.org/jira/browse/IGNITE-13600 Project: Ignite Issue Type: Bug Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 ReflectionOnlyLoad is not supported on .NET Core [1] [2] * Replace ReflectionOnlyLoad with System.Reflection.Metadata if possible * Enable TestReferencedAssemblyLoading [1] https://docs.microsoft.com/en-us/dotnet/api/system.reflection.assembly.reflectiononlyload?view=netcore-3.1 [2] https://github.com/dotnet/runtime/issues/7452 -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13592) .NET: Incorrect GetTotalPhysicalMemory result in Docker
Pavel Tupitsyn created IGNITE-13592: --- Summary: .NET: Incorrect GetTotalPhysicalMemory result in Docker Key: IGNITE-13592 URL: https://issues.apache.org/jira/browse/IGNITE-13592 Project: Ignite Issue Type: Bug Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 {{MemoryInfo.GetTotalPhysicalMemory}} uses {{/proc/meminfo}} on Linux, which does not take Docker memory limit into account. This affects: * {{DataRegionConfiguration.DefaultMaxSize}} * {{MemoryPolicyConfiguration.DefaultMaxSize}} The following test fail in Docker when memory limit is set: * {{IgniteConfigurationTest.TestSpringXml}} * {{IgnitionStartTest.TestIgniteStartsFromSpringXml}} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13555) Java thin: Add support for IPv6 addresses
Pavel Tupitsyn created IGNITE-13555: --- Summary: Java thin: Add support for IPv6 addresses Key: IGNITE-13555 URL: https://issues.apache.org/jira/browse/IGNITE-13555 Project: Ignite Issue Type: Improvement Components: thin client Reporter: Pavel Tupitsyn Fix For: 2.10 ReliableChannel#parseAddresses -> HostAndPortRange#parse logic does not support IPv6 addresses, fix it. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13551) .NET: Enable ClientServerCompatibilityTest on Linux
Pavel Tupitsyn created IGNITE-13551: --- Summary: .NET: Enable ClientServerCompatibilityTest on Linux Key: IGNITE-13551 URL: https://issues.apache.org/jira/browse/IGNITE-13551 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 ClientServerCompatibilityTest is disabled on Linux because it hangs. The problem is now understood: IGNITE-13536. Use the workaround - create processes from Java - and enable the test on all platforms and frameworks. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13536) .NET: Child processes become zombies when persistence is used with direct-io on Linux
Pavel Tupitsyn created IGNITE-13536: --- Summary: .NET: Child processes become zombies when persistence is used with direct-io on Linux Key: IGNITE-13536 URL: https://issues.apache.org/jira/browse/IGNITE-13536 Project: Ignite Issue Type: Bug Components: platforms Affects Versions: 2.8 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 Attachments: IgnitePersistenceProcessHangTest.csproj, Program.cs After using Ignite with direct-io optional module and persistence enabled, user code hangs when trying to kill a child process and wait for it to exit using base class library classes (Process). See attached reproducer: * Copy .cs and .csproj files to a folder * dotnet run The program hangs forever on the last line, and the child process becomes a zombie (defunct). -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13530) Java thin: exception type is lost on rethrow
Pavel Tupitsyn created IGNITE-13530: --- Summary: Java thin: exception type is lost on rethrow Key: IGNITE-13530 URL: https://issues.apache.org/jira/browse/IGNITE-13530 Project: Ignite Issue Type: Bug Components: thin client Affects Versions: 2.10 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 Exception handling in TcpClientChannel is inconsistent: * Some code is duplicated in {code}receive{code} and {code}convertException{code} * Some exception types, like {code}ClientAuthenticationException{code}, are wrapped in {code}ClientException{code} Make sure to preserve exception types when rethrowing them and deduplicate the code. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13506) .NET: Release build does not fail when compilation fails
Pavel Tupitsyn created IGNITE-13506: --- Summary: .NET: Release build does not fail when compilation fails Key: IGNITE-13506 URL: https://issues.apache.org/jira/browse/IGNITE-13506 Project: Ignite Issue Type: Improvement Components: platforms Affects Versions: 2.9 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 build.ps1 does not fail when compilation fails, leading to unexpected issues later in the release build. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13496) Java thin: Use non-blocking socket IO
Pavel Tupitsyn created IGNITE-13496: --- Summary: Java thin: Use non-blocking socket IO Key: IGNITE-13496 URL: https://issues.apache.org/jira/browse/IGNITE-13496 Project: Ignite Issue Type: Improvement Components: thin client Affects Versions: 2.9 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 IGNITE-7623 introduces async APIs to the Java thin client. However, socket writes still cause user thread blocking and thus reduce scalability. Investigate and prepare an IEP to use non-blocking IO. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13485) Java thin: increase test coverage for transactions and partition awareness
Pavel Tupitsyn created IGNITE-13485: --- Summary: Java thin: increase test coverage for transactions and partition awareness Key: IGNITE-13485 URL: https://issues.apache.org/jira/browse/IGNITE-13485 Project: Ignite Issue Type: Improvement Components: thin client Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 Add tests for the following scenarios: * Partitioned cache with backups * Serializable transactions (locking behavior) -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13471) Execute user-defined compute jobs asynchronously when CompletionStage is returned
Pavel Tupitsyn created IGNITE-13471: --- Summary: Execute user-defined compute jobs asynchronously when CompletionStage is returned Key: IGNITE-13471 URL: https://issues.apache.org/jira/browse/IGNITE-13471 Project: Ignite Issue Type: Improvement Components: compute Reporter: Pavel Tupitsyn When user-defined Compute jobs (callables, runnables) return CompletionStage: 1. Wait for completion (in a non-blocking way if possible) 2. Extract the result and return to the initiator node 3. Construct completed CompletionStage with the result on the initiator node and return to the user code -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13470) .NET: Add async counterparts to all applicable thin client APIs
Pavel Tupitsyn created IGNITE-13470: --- Summary: .NET: Add async counterparts to all applicable thin client APIs Key: IGNITE-13470 URL: https://issues.apache.org/jira/browse/IGNITE-13470 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 Add async counterparts to the following .NET Thin Client APIs * ICacheClient.GetConfiguration * IClientCluster - all methods * IClientClusterGroup.GetNodes, GetNode * IIgniteClient - CreateCache, GetOrCreateCache, DestroyCache -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13462) .NET: Thin client Dispose hangs when continuous query is active on .NET Core 3.x
Pavel Tupitsyn created IGNITE-13462: --- Summary: .NET: Thin client Dispose hangs when continuous query is active on .NET Core 3.x Key: IGNITE-13462 URL: https://issues.apache.org/jira/browse/IGNITE-13462 Project: Ignite Issue Type: Bug Components: platforms Affects Versions: 2.9 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 * Switch all projects to netcoreapp3.0 (or 3.1) * Run Apache.Ignite.Core.Tests.Client.Cache.ContinuousQueryTest - it hangs on ClientSocket.Dispose Looks like Socket.Shutdown call is missing, or we can use Socket.Close with a timeout. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13460) .NET: Thin client can't be collected by GC when Dispose was not called
Pavel Tupitsyn created IGNITE-13460: --- Summary: .NET: Thin client can't be collected by GC when Dispose was not called Key: IGNITE-13460 URL: https://issues.apache.org/jira/browse/IGNITE-13460 Project: Ignite Issue Type: Bug Components: platforms, thin client Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 If the user forgets to call IIgniteClient.Dispose, thin client objects will remain in memory forever. Thin client creates a dedicated response reader thread that holds a reference to the entire thin client object tree though Marshaller object. We should detect this scenario and clean up properly. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13454) Thin Client Ping API
Pavel Tupitsyn created IGNITE-13454: --- Summary: Thin Client Ping API Key: IGNITE-13454 URL: https://issues.apache.org/jira/browse/IGNITE-13454 Project: Ignite Issue Type: Improvement Components: platforms, thin client Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 Add ping API to thin clients: IgniteClient.ping() (Java), IIgniteClient.Ping() (.NET) and async counterparts. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13410) .NET: Run Services tests with different service processors
Pavel Tupitsyn created IGNITE-13410: --- Summary: .NET: Run Services tests with different service processors Key: IGNITE-13410 URL: https://issues.apache.org/jira/browse/IGNITE-13410 Project: Ignite Issue Type: Improvement Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 We have two service processors - legacy and a new event-driven one. Ignite system property IGNITE_EVENT_DRIVEN_SERVICE_PROCESSOR_ENABLED specifies the one to use. Make sure thick and thin service tests execute in both modes. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13378) .NET: Thin Client: Use non-blocking socket IO
Pavel Tupitsyn created IGNITE-13378: --- Summary: .NET: Thin Client: Use non-blocking socket IO Key: IGNITE-13378 URL: https://issues.apache.org/jira/browse/IGNITE-13378 Project: Ignite Issue Type: Bug Components: platforms Affects Versions: 2.4 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn .NET Thin Client was initially developed for Windows and .NET Framework. Benchmarks at that time proved that blocking socket IO was faster for single-threaded workload, and we developed a solution with a dedicated thread for response handling, and async APIs use blocking writes. We may want to reconsider this design: * Scalability is often more important than single-threaded performance * .NET Core has many perf improvements over .NET Framework Investigate async socket IO performance on .NET Core 3.x/5.x compared to the current approach on Windows and Linux and refactor ClientSocket accordingly to avoid any blocking and a dedicated thread usage. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13369) .NET: Local node info is not updated on client reconnect
Pavel Tupitsyn created IGNITE-13369: --- Summary: .NET: Local node info is not updated on client reconnect Key: IGNITE-13369 URL: https://issues.apache.org/jira/browse/IGNITE-13369 Project: Ignite Issue Type: Bug Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 {{Ignite._locNode}} field caches local node information, and this cache info is not updated on client reconnect. We should remove cached info on every disconnect. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13360) .NET: Add Timeout to Thin Client services
Pavel Tupitsyn created IGNITE-13360: --- Summary: .NET: Add Timeout to Thin Client services Key: IGNITE-13360 URL: https://issues.apache.org/jira/browse/IGNITE-13360 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Current Timeout implementation in Thin Client services is problematic and misleading: Timeout is passed from thin client to GridServiceProxy, and this only works *when the service is on another server node*. E.g. it will never work with deployNodeSingleton and only sometimes work in deployClusterSingleton. If we decide to add a timeout functionality, it should work in any scenario. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13359) .NET: Add GetServiceDescriptors to Thin Client Services
Pavel Tupitsyn created IGNITE-13359: --- Summary: .NET: Add GetServiceDescriptors to Thin Client Services Key: IGNITE-13359 URL: https://issues.apache.org/jira/browse/IGNITE-13359 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Add IServicesClient.GetServiceDescriptors - thin clients should be able to discover available services. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13351) .NET: Add generic types and methods support to Services
Pavel Tupitsyn created IGNITE-13351: --- Summary: .NET: Add generic types and methods support to Services Key: IGNITE-13351 URL: https://issues.apache.org/jira/browse/IGNITE-13351 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Applies to Thick and Thin modes (service proxy code is shared): allow generic methods and generic service types in Ignite Services. Right now {{ServiceProxyTypeGenerator}} does not emit proper IL code for generics. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13343) .NET: Thin Client: Async service calls
Pavel Tupitsyn created IGNITE-13343: --- Summary: .NET: Thin Client: Async service calls Key: IGNITE-13343 URL: https://issues.apache.org/jira/browse/IGNITE-13343 Project: Ignite Issue Type: Improvement Components: platforms Affects Versions: 2.10 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Thin client is inherently asynchronous. We should allow async service calls: when service interface has an async method (returns Task or Task), we should make the underlying call with {{ClientSocket.DoOutInOpAsync}}. This will require proper task handling in UnmanagedCallbacks.ServiceInvokeMethod: when a Task is returned, wait for its completion and unwrap the result/exception. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13336) .NET: Misleading LINQ exception when expression can't be translated
Pavel Tupitsyn created IGNITE-13336: --- Summary: .NET: Misleading LINQ exception when expression can't be translated Key: IGNITE-13336 URL: https://issues.apache.org/jira/browse/IGNITE-13336 Project: Ignite Issue Type: Bug Components: platforms Affects Versions: 2.8.1 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 The following program results in a cryptic exception, when the problem is simply lack of Expression<> wrapper around the query filter: {code} class Program { private static readonly IIgnite Ignite = Ignition.Start(); static void Main(string[] args) { var cache = GetCache(); cache["1"] = new Foo(); var res = Where2(e => e.Value.X == 0); Console.WriteLine(res); } public static ICache GetCache() { var cacheName = typeof(T).Name; var cfg = new CacheConfiguration(cacheName, new QueryEntity(typeof(T))); return Ignite.GetOrCreateCache(cfg); } public static List Where2(Expression, bool>> query) { var queryResult = GetCache().AsCacheQueryable().Where(query); return queryResult.Select(x => x.Value).ToList(); } } public class Foo { [QuerySqlField] public int X { get; set; } } {code} We should throw a better exception that says "LINQ expression can't be translated to SQL because of ..." -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13326) .NET: GetJvmDllPathsWindows does not work on .NET Core
Pavel Tupitsyn created IGNITE-13326: --- Summary: .NET: GetJvmDllPathsWindows does not work on .NET Core Key: IGNITE-13326 URL: https://issues.apache.org/jira/browse/IGNITE-13326 Project: Ignite Issue Type: Bug Components: platforms Affects Versions: 2.4 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 GetJvmDllPathsWindows implementation is hidden with preprocessor directives on .NET Core, because it uses Windows Registry, which is not available by default. We should use Microsoft.Win32.Registry NuGet package to make it work. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13296) .NET: TransactionImpl finalizer can crash the process
Pavel Tupitsyn created IGNITE-13296: --- Summary: .NET: TransactionImpl finalizer can crash the process Key: IGNITE-13296 URL: https://issues.apache.org/jira/browse/IGNITE-13296 Project: Ignite Issue Type: Bug Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 ~TransactionImpl potentially throws an exception (e.g. when grid is stopped), causing the entire process to abort. * Finalizers should not throw exceptions * Stopped grid is a valid use case Review all filalizers and make sure they are safe. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13293) .NET: Enum serialization is slow
Pavel Tupitsyn created IGNITE-13293: --- Summary: .NET: Enum serialization is slow Key: IGNITE-13293 URL: https://issues.apache.org/jira/browse/IGNITE-13293 Project: Ignite Issue Type: Bug Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 BinaryWriter.SaveMetadata has performance issues when enums are present: every enum write causes GetEnumValues call in BinaryType, which uses reflection. We should cache enum values per type. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13286) .NET: Add true NuGet multi-targeting
Pavel Tupitsyn created IGNITE-13286: --- Summary: .NET: Add true NuGet multi-targeting Key: IGNITE-13286 URL: https://issues.apache.org/jira/browse/IGNITE-13286 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 Right now we pack the same .NET 4.0 dll as `net40` and `netstandard2.0` (see nuspec file). While this works well, we can't truly use conditional compilation to leverage modern .NET features (e.g. async transaction flow). * Fix the build procedure to include true .NET Core assembly into NuGet package * Make sure .NET Core tests run on Windows as well as on Linux * Fix JVM dll detection (right now Windows Registry is excluded on .NET Core - bug) * Review all `#if` conditions to make sure we deliver proper code on all platforms -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13276) .NET: Enable multi-process tests in DotNetCore project
Pavel Tupitsyn created IGNITE-13276: --- Summary: .NET: Enable multi-process tests in DotNetCore project Key: IGNITE-13276 URL: https://issues.apache.org/jira/browse/IGNITE-13276 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn `IgniteProcess` class is not cross-platform, so related tests don't work on .NET Core and in non-Windows environments. Make it cross-platform and enable related tests. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13275) .NET: Add peer assembly loading tests to .NET Core project
Pavel Tupitsyn created IGNITE-13275: --- Summary: .NET: Add peer assembly loading tests to .NET Core project Key: IGNITE-13275 URL: https://issues.apache.org/jira/browse/IGNITE-13275 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Peer assembly loading tests are excluded from Apache.Ignite.Core.Tests.DotNetCore currently due to Examples dll usage. Fix this. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13274) .NET: IgniteConfiguration.ClusterStateOnStart
Pavel Tupitsyn created IGNITE-13274: --- Summary: .NET: IgniteConfiguration.ClusterStateOnStart Key: IGNITE-13274 URL: https://issues.apache.org/jira/browse/IGNITE-13274 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Fix For: 2.10 Add IgniteConfiguration.ClusterStateOnStart, mark IgniteConfiguration.IsActiveOnStart as obsolete -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13273) .NET: SqlConfiguration
Pavel Tupitsyn created IGNITE-13273: --- Summary: .NET: SqlConfiguration Key: IGNITE-13273 URL: https://issues.apache.org/jira/browse/IGNITE-13273 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Fix For: 2.10 Add IgniteConfiguration.SqlConfiguration -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13272) .NET: ShutdownPolicy
Pavel Tupitsyn created IGNITE-13272: --- Summary: .NET: ShutdownPolicy Key: IGNITE-13272 URL: https://issues.apache.org/jira/browse/IGNITE-13272 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Fix For: 2.10 Add IgniteConfiguration.ShutdownPolicy and ICluster.ShutdownPolicy. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13226) .NET: Thin Client Compute leaks ClientNotificationHandler instances
Pavel Tupitsyn created IGNITE-13226: --- Summary: .NET: Thin Client Compute leaks ClientNotificationHandler instances Key: IGNITE-13226 URL: https://issues.apache.org/jira/browse/IGNITE-13226 Project: Ignite Issue Type: Bug Components: platforms Affects Versions: 2.9 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.9 In multithreaded thin client compute scenarios there is a possibility for ClientNotificationHandler leak: handlers remain in ClientSocket._notificationListeners even after corresponding tasks have completed. To reproduce, add the following code at the end of ComputeClientTests.TestExecuteJavaTaskAsyncMultithreaded: {code} var failoverSocket = TestUtils.GetPrivateField(client, "_socket"); var socket = TestUtils.GetPrivateField(failoverSocket, "_socket"); var listeners = TestUtils.GetPrivateField(socket, "_notificationListeners"); Assert.IsEmpty(listeners); {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13222) .NET: Consolidate tests - get rid of Tests.DotNetCore folder
Pavel Tupitsyn created IGNITE-13222: --- Summary: .NET: Consolidate tests - get rid of Tests.DotNetCore folder Key: IGNITE-13222 URL: https://issues.apache.org/jira/browse/IGNITE-13222 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.10 Right now we have a separate directory for .NET Core tests, and most test files are shared across Apache.Ignite.Core.Tests and Apache.Ignite.Core.Tests.DotNetCore projects. Move Apache.Ignite.Core.Tests.DotNetCore.csproj to Apache.Ignite.Core.Tests directory, so that all tests are included into DotNetCore project by default. Incompatible tests should be excluded specifically from the project, or using compiler directives (#if !NETCOREAPP). -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13148) Thin Client Continuous Query
Pavel Tupitsyn created IGNITE-13148: --- Summary: Thin Client Continuous Query Key: IGNITE-13148 URL: https://issues.apache.org/jira/browse/IGNITE-13148 Project: Ignite Issue Type: New Feature Components: platforms, thin client Affects Versions: 2.8 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.9 Add Continuous Queries to thin client protocol. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13129) .NET: Thin Client auto retry idempotent operations on node failure
Pavel Tupitsyn created IGNITE-13129: --- Summary: .NET: Thin Client auto retry idempotent operations on node failure Key: IGNITE-13129 URL: https://issues.apache.org/jira/browse/IGNITE-13129 Project: Ignite Issue Type: Bug Components: platforms, thin client Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.9 .NET Thin Client supports failover, but user code is still responsible for catching exceptions and retrying operations. 1. IgniteClientException does not provide a reliable way for the user code to understand whether this is a node failure or something else 2. We can introduce RetryPolicy configuration parameter with values like `Reads`, `IdempotentWrites`, `All` and retry corresponding operations automatically and transparently for the user -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13128) IgniteLock throws NullPointerException when removed before use
Pavel Tupitsyn created IGNITE-13128: --- Summary: IgniteLock throws NullPointerException when removed before use Key: IGNITE-13128 URL: https://issues.apache.org/jira/browse/IGNITE-13128 Project: Ignite Issue Type: Bug Components: data structures Affects Versions: 2.8 Reporter: Pavel Tupitsyn Fix For: 2.9 Reproducer: {code:java} public void testClosedLockThrowsIgniteException() { final String lockName = "testRemovedLockThrowsIgniteException"; Ignite srv = ignite(0); IgniteLock lock1 = srv.reentrantLock(lockName, false, false, true); IgniteLock lock2 = srv.reentrantLock(lockName, false, false, true); lock1.close(); lock2.lock(); } {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13095) .NET: Thin Client Compute does not cancel task on server when cancelled on client
Pavel Tupitsyn created IGNITE-13095: --- Summary: .NET: Thin Client Compute does not cancel task on server when cancelled on client Key: IGNITE-13095 URL: https://issues.apache.org/jira/browse/IGNITE-13095 Project: Ignite Issue Type: New Feature Components: platforms, thin client Affects Versions: 2.9 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.9 Client should call OP_RESOURCE_CLOSE to cancel the task on server side. Test this by reading server logs, "Job was cancelled" should be there. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13037) .NET: Thin Client Near Cache
Pavel Tupitsyn created IGNITE-13037: --- Summary: .NET: Thin Client Near Cache Key: IGNITE-13037 URL: https://issues.apache.org/jira/browse/IGNITE-13037 Project: Ignite Issue Type: New Feature Components: platforms, thin client Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Add near caching for thin clients: * Clients can subscribe to change notifications for specific keys * Clients use partition awareness to route subscriptions to primary nodes * Use existing Thick .NET Client near caching mechanism to handle updates on the server side * Eviction policy is to be handled by the client code (because multiple servers are involved) -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13031) .NET: SqlFieldsQuery as ContinuousQuery.InitialQuery
Pavel Tupitsyn created IGNITE-13031: --- Summary: .NET: SqlFieldsQuery as ContinuousQuery.InitialQuery Key: IGNITE-13031 URL: https://issues.apache.org/jira/browse/IGNITE-13031 Project: Ignite Issue Type: New Feature Components: platforms Affects Versions: 2.8 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.9 SqlQuery has been deprecated in favor of SqlFieldsQuery, but ContinuousQuery in Ignite.NET does not allow SqlFieldsQuery as InitialQuery. Java API allows that, so we have to derive SqlFieldsQuery from QueryBase and make it work. The problem will arise when SqlFieldsQuery does not return _key & _val - see how Java handles this. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13011) .NET: Thin client Kubernetes discovery
Pavel Tupitsyn created IGNITE-13011: --- Summary: .NET: Thin client Kubernetes discovery Key: IGNITE-13011 URL: https://issues.apache.org/jira/browse/IGNITE-13011 Project: Ignite Issue Type: New Feature Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Thin clients should be able to discover servers from within Kubernetes pod through k8s API, without specifying any IP addresses. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-13001) .NET: Thin Client Compute
Pavel Tupitsyn created IGNITE-13001: --- Summary: .NET: Thin Client Compute Key: IGNITE-13001 URL: https://issues.apache.org/jira/browse/IGNITE-13001 Project: Ignite Issue Type: New Feature Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.9 Add Compute to .NET Thin Client. See IGNITE-12853. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-12966) .NET: Use C# Source Generators for serialization
Pavel Tupitsyn created IGNITE-12966: --- Summary: .NET: Use C# Source Generators for serialization Key: IGNITE-12966 URL: https://issues.apache.org/jira/browse/IGNITE-12966 Project: Ignite Issue Type: New Feature Components: platforms Reporter: Pavel Tupitsyn Fix For: 3.0 C# Source Generators provide a way to replace reflection with compile-time code generation. This can be very useful for Ignite serialization, compute invocations, and everything else where reflection is involved currently. https://devblogs.microsoft.com/dotnet/introducing-c-source-generators/ -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-12957) .NET: Docs have unavailable resource logo3.png
Pavel Tupitsyn created IGNITE-12957: --- Summary: .NET: Docs have unavailable resource logo3.png Key: IGNITE-12957 URL: https://issues.apache.org/jira/browse/IGNITE-12957 Project: Ignite Issue Type: New Feature Components: documentation, platforms Affects Versions: 2.8 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.9 -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-12941) .NET: Support .NET 5
Pavel Tupitsyn created IGNITE-12941: --- Summary: .NET: Support .NET 5 Key: IGNITE-12941 URL: https://issues.apache.org/jira/browse/IGNITE-12941 Project: Ignite Issue Type: New Feature Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.9 .NET 5 is in preview. Ignite.NET does not seem to work there. Tested on Ubuntu: * Install .NET 5 SDK from Snap * Create new console app, add Apache.Ignite nuget package * Add Ignition.Start * dotnet run {code} Unhandled exception. Apache.Ignite.Core.Common.IgniteException: Failed to load libjvm.so: [option=/usr/bin/java, path=/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so, error=Unknown error] [option=/usr/bin/java, path=/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so, error=/snap/core18/current/lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64/server/libjvm.so)] at Apache.Ignite.Core.Impl.Unmanaged.Jni.JvmDll.Load(String configJvmDllPath, ILogger log) at Apache.Ignite.Core.Ignition.Start(IgniteConfiguration cfg) at Apache.Ignite.Core.Ignition.Start() at dotnet5.Program.Main(String[] args) in /home/pavel/w/tests/dotnet5/Program.cs:line 10 {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-12940) .NET: NuGet tests fail with compilation error
Pavel Tupitsyn created IGNITE-12940: --- Summary: .NET: NuGet tests fail with compilation error Key: IGNITE-12940 URL: https://issues.apache.org/jira/browse/IGNITE-12940 Project: Ignite Issue Type: New Feature Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-12932) Thin client cluster discovery
Pavel Tupitsyn created IGNITE-12932: --- Summary: Thin client cluster discovery Key: IGNITE-12932 URL: https://issues.apache.org/jira/browse/IGNITE-12932 Project: Ignite Issue Type: New Feature Components: thin client Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.9 Thin clients should be able to discover all server nodes automatically when connected to any of them, and maintain an up to date list of servers at all times. See linked IEP-44 for more details. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-12918) .NET: Add dotnet build to travis-ci
Pavel Tupitsyn created IGNITE-12918: --- Summary: .NET: Add dotnet build to travis-ci Key: IGNITE-12918 URL: https://issues.apache.org/jira/browse/IGNITE-12918 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-12883) .NET: Rename PlatformNearCache to PlatformCache, mark as Experimental
Pavel Tupitsyn created IGNITE-12883: --- Summary: .NET: Rename PlatformNearCache to PlatformCache, mark as Experimental Key: IGNITE-12883 URL: https://issues.apache.org/jira/browse/IGNITE-12883 Project: Ignite Issue Type: Improvement Components: platforms Affects Versions: 2.9 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.9 PlatformNearCache is not actually "Near" - it just mirrors cache entries that are present on current node in CLR heap for faster access. Those entries can be primary, backup, or near. PlatformCache seems to be a better name. Rename: `PlatformNearCacheConfiguration` -> `PlatformCacheConfiguration` `CachePeekMode.PlatformNear` -> `CachePeekMode.Platform` `CacheConfiguration.PlatformNearConfiguration` -> `CacheConfiguration.PlatformCacheConfiguration` Mark all new platform (near) cache APIs with `[IgniteExperimental]` -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-12882) .NET: Serve local Scan queries directly from platform near cache
Pavel Tupitsyn created IGNITE-12882: --- Summary: .NET: Serve local Scan queries directly from platform near cache Key: IGNITE-12882 URL: https://issues.apache.org/jira/browse/IGNITE-12882 Project: Ignite Issue Type: Improvement Components: platforms Affects Versions: 2.9 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.9 Scan queries with Local flag and non-null Partition can be executed directly against Platform Near Cache, avoiding Java calls. Partition must be reserved before iteration to guarantee that it is local and does not move away while we iterate. Failed reservation should cause an exception - can’t do a local query for a non-local partition. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-12822) .NET: Build fails on Xamarin
Pavel Tupitsyn created IGNITE-12822: --- Summary: .NET: Build fails on Xamarin Key: IGNITE-12822 URL: https://issues.apache.org/jira/browse/IGNITE-12822 Project: Ignite Issue Type: Bug Components: platforms Affects Versions: 2.8 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.8.1 * Create new Xamarin Forms app in Visual Studio * Add reference to Apache.Ignite NuGet package * Try to rebuild all: {code} C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(1697,2): error XA2002: Can not resolve reference: `System.Configuration`, referenced by `Apache.Ignite.Core`. Please add a NuGet package or assembly reference for `System.Configuration`, or remove the reference to `Apache.Ignite.Core`. {code} Xamarin does not include System.Configuration assembly. The workaround is to manually add a reference to System.Configuration from anywhere (it is not used at runtime, we just need to satisfy the build): {code} ..\..\bin\System.Configuration.dll {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-12754) .NET: Thin Client: Service invocation
Pavel Tupitsyn created IGNITE-12754: --- Summary: .NET: Thin Client: Service invocation Key: IGNITE-12754 URL: https://issues.apache.org/jira/browse/IGNITE-12754 Project: Ignite Issue Type: Bug Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.9 Provide an API to invoke Ignite Services from Thin Clients. .NET API: {code} IIgniteClient.GetServices().GetServiceProxy("name").Bar(); {code} Thin Client protocol: * One operation, OP_SERVICE_INVOKE * Takes service name, method name, optionally node ids (cluster projection), 0..n args See PlatformServices, we just have to combine OP_SERVICE_PROXY with OP_INVOKE from there in one call. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-12720) .NET: CachePeekMode is not treated as Flags
Pavel Tupitsyn created IGNITE-12720: --- Summary: .NET: CachePeekMode is not treated as Flags Key: IGNITE-12720 URL: https://issues.apache.org/jira/browse/IGNITE-12720 Project: Ignite Issue Type: Bug Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn CachePeekMode is a [Flags] enum, but Ignite APIs such as ICache.GetSize take params array, and do not work when multiple flags are passed as one value with bitwise OR. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-12699) .NET: Remove TypeCaster
Pavel Tupitsyn created IGNITE-12699: --- Summary: .NET: Remove TypeCaster Key: IGNITE-12699 URL: https://issues.apache.org/jira/browse/IGNITE-12699 Project: Ignite Issue Type: New Feature Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.9 TypeCaster class is used in Ignite.NET for non-boxing, faster casts. Benchmarks on .NET 4.0 displayed clear advantage of this solution. However, this is no longer true on .NET Core due to improvements in the framework: {code} | Method | Runtime | Mean | Error |StdDev | |--- |-- |--:|--:|--:| | TypeCaster | .NET Core 2.2 | 3.4615 ns | 0.0325 ns | 0.0304 ns | | ObjectCast | .NET Core 2.2 | 1.0936 ns | 0.0040 ns | 0.0036 ns | | UnsafeCast | .NET Core 2.2 | 4.1921 ns | 0.0125 ns | 0.0111 ns | | TypeCaster | .NET Core 3.1 | 1.5306 ns | 0.0042 ns | 0.0037 ns | | ObjectCast | .NET Core 3.1 | 0.0229 ns | 0.0029 ns | 0.0024 ns | | UnsafeCast | .NET Core 3.1 | 2.1868 ns | 0.0052 ns | 0.0043 ns | {code} (See benchmark code in https://github.com/ptupitsyn/IgniteNetBenchmarks) Remove TypeCaster class and use regular cast instead. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-12691) .NET: Native Near Cache
Pavel Tupitsyn created IGNITE-12691: --- Summary: .NET: Native Near Cache Key: IGNITE-12691 URL: https://issues.apache.org/jira/browse/IGNITE-12691 Project: Ignite Issue Type: New Feature Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.9 Implement native .NET Near Cache, which stores deserialized cache data on CLR heap. Right now every cache.Get, every scan query, etc, cause repeated copy and deserialization of data from JVM, even for primary keys or near cache entries. This often becomes a bottleneck. Keeping up-to-date deserialized values in CLR memory can greatly improve performance and reduce latency. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-12676) .NET: Add partition-based AffinityCall and AffinityRun overloads
Pavel Tupitsyn created IGNITE-12676: --- Summary: .NET: Add partition-based AffinityCall and AffinityRun overloads Key: IGNITE-12676 URL: https://issues.apache.org/jira/browse/IGNITE-12676 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Add partition-based AffinityCall and AffinityRun overloads to ICompute. See corresponding methods in Java (IgniteCompute). -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-12670) .NET: Calculate IAffinity.GetPartition locally for default affinity
Pavel Tupitsyn created IGNITE-12670: --- Summary: .NET: Calculate IAffinity.GetPartition locally for default affinity Key: IGNITE-12670 URL: https://issues.apache.org/jira/browse/IGNITE-12670 Project: Ignite Issue Type: Improvement Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn For default affinity we already know how to calculate partition on .NET side, see `ClientRendezvousAffinityFunction`. This is faster than serializing the key and calling Java. Aside from other things, Near Cache depends on GetPartition for some use cases, so that will get faster too. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-12634) .NET: Publish symbol packages
Pavel Tupitsyn created IGNITE-12634: --- Summary: .NET: Publish symbol packages Key: IGNITE-12634 URL: https://issues.apache.org/jira/browse/IGNITE-12634 Project: Ignite Issue Type: Bug Components: platforms Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 3.0 Symbol packages (snupkg) improve debugging experience for the users: https://docs.microsoft.com/en-us/nuget/create-packages/symbol-packages-snupkg Create and publish Ignite.NET symbol packages along with normal NuGet packages. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-12604) .NET: DotNetCore publish dir is not copied to bin dir
Pavel Tupitsyn created IGNITE-12604: --- Summary: .NET: DotNetCore publish dir is not copied to bin dir Key: IGNITE-12604 URL: https://issues.apache.org/jira/browse/IGNITE-12604 Project: Ignite Issue Type: Bug Components: platforms Affects Versions: 2.8, 2.9 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.8, 2.9 Recent changes in build.ps1 break the release build: publish folder is not present in dotnet/bin. -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-12555) .NET: Thin Client: deserializing DateTime fields causes BinaryTypeGet request for every value
Pavel Tupitsyn created IGNITE-12555: --- Summary: .NET: Thin Client: deserializing DateTime fields causes BinaryTypeGet request for every value Key: IGNITE-12555 URL: https://issues.apache.org/jira/browse/IGNITE-12555 Project: Ignite Issue Type: Bug Components: platforms Affects Versions: 2.7.6, 2.7.5, 2.7, 2.6, 2.5, 2.4, 2.8 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.8 Actual: The following code causes 10 BinaryProcessorClient.GetBinaryType calls (2 fields, 5 Foo instances). Every call is a server request. Expected: 0 calls. Binary metadata should be cached after PutAll call. {code} public class CacheDateTimeMetaTest : ClientTestBase { [Test] public void TestDateTimeMeta() { var data = Enumerable.Range(1, 5) .Select(x => new Foo { Id = x, StartDate = DateTime.Now.AddHours(x), EndDate = DateTime.Now.AddDays(x) }); var cache = Client.GetOrCreateCache("foo"); cache.PutAll(data.Select(x => new KeyValuePair(x.Id, x))); var res = cache.Query(new ScanQuery()).GetAll(); Assert.AreEqual(cache.GetSize(), res.Count); } public class Foo { public int Id { get; set; } public DateTime? StartDate { get; set; } public DateTime? EndDate { get; set; } } } {code} User list discussion: http://apache-ignite-users.70518.x6.nabble.com/Getting-all-data-from-cache-via-scan-query-is-taking-lot-of-time-td30949.html -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-12532) .NET: Recognize fields with KeyAttribute and set QueryEntity.KeyFieldName
Pavel Tupitsyn created IGNITE-12532: --- Summary: .NET: Recognize fields with KeyAttribute and set QueryEntity.KeyFieldName Key: IGNITE-12532 URL: https://issues.apache.org/jira/browse/IGNITE-12532 Project: Ignite Issue Type: Bug Components: platforms Reporter: Pavel Tupitsyn Populate QueryEntity.KeyFieldName automatically when System.ComponentModel.DataAnnotations.KeyAttribute is present. This: {code} class Person { [QuerySqlField] [Key] public string EntityId {get; set;} } ... new QueryEntity(typeof(string), typeof(Person)) {code} Should be equivalent to this: {code} {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-12481) .NET: NuGet verification script does not handle multi-digit version parts
Pavel Tupitsyn created IGNITE-12481: --- Summary: .NET: NuGet verification script does not handle multi-digit version parts Key: IGNITE-12481 URL: https://issues.apache.org/jira/browse/IGNITE-12481 Project: Ignite Issue Type: Bug Components: platforms Affects Versions: 2.9 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.9 The following regex in verify-nuget.ps1 does not support multi-digit versions like 8.7.99 {code} $packageId = $_.Name -replace '(.*?)\.\d\.\d\.\d\.nupkg', '$1' {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (IGNITE-12473) .NET: ClientServerCompatibilityTest fails on some agents because of Maven error
Pavel Tupitsyn created IGNITE-12473: --- Summary: .NET: ClientServerCompatibilityTest fails on some agents because of Maven error Key: IGNITE-12473 URL: https://issues.apache.org/jira/browse/IGNITE-12473 Project: Ignite Issue Type: Bug Components: platforms Affects Versions: 2.8 Reporter: Pavel Tupitsyn Assignee: Pavel Tupitsyn Fix For: 2.8 We should set language version explicitly in the pom.xml {code} [00:04:21] [Apache.Ignite.Core.Tests.exe] >>> 35584 OUT: [ERROR] COMPILATION ERROR : [00:04:21] [Apache.Ignite.Core.Tests.exe] >>> 35584 OUT: [INFO] - [00:04:21] [Apache.Ignite.Core.Tests.exe] >>> 35584 OUT: [ERROR] Source option 1.5 is no longer supported. Use 1.6 or later. {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)