[jira] [Created] (IGNITE-14620) GridCacheAsyncOperationsLimitSelfTest#testAsyncOps is flaky

2021-04-21 Thread Pavel Tupitsyn (Jira)
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

2021-04-21 Thread Pavel Tupitsyn (Jira)
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

2021-04-16 Thread Pavel Tupitsyn (Jira)
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

2021-04-13 Thread Pavel Tupitsyn (Jira)
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

2021-03-25 Thread Pavel Tupitsyn (Jira)
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

2021-03-18 Thread Pavel Tupitsyn (Jira)
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

2021-03-09 Thread Pavel Tupitsyn (Jira)
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

2021-03-09 Thread Pavel Tupitsyn (Jira)
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

2021-02-25 Thread Pavel Tupitsyn (Jira)
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

2021-02-18 Thread Pavel Tupitsyn (Jira)
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

2021-02-15 Thread Pavel Tupitsyn (Jira)
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

2021-02-13 Thread Pavel Tupitsyn (Jira)
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

2021-02-02 Thread Pavel Tupitsyn (Jira)
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

2021-01-31 Thread Pavel Tupitsyn (Jira)
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.

2021-01-29 Thread Pavel Tupitsyn (Jira)
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

2021-01-28 Thread Pavel Tupitsyn (Jira)
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

2021-01-26 Thread Pavel Tupitsyn (Jira)
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

2021-01-25 Thread Pavel Tupitsyn (Jira)
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

2021-01-23 Thread Pavel Tupitsyn (Jira)
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

2021-01-21 Thread Pavel Tupitsyn (Jira)
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

2021-01-21 Thread Pavel Tupitsyn (Jira)
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

2021-01-11 Thread Pavel Tupitsyn (Jira)
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

2021-01-05 Thread Pavel Tupitsyn (Jira)
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

2020-12-22 Thread Pavel Tupitsyn (Jira)
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

2020-12-15 Thread Pavel Tupitsyn (Jira)
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

2020-12-10 Thread Pavel Tupitsyn (Jira)
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

2020-12-07 Thread Pavel Tupitsyn (Jira)
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

2020-12-02 Thread Pavel Tupitsyn (Jira)
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

2020-11-25 Thread Pavel Tupitsyn (Jira)
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

2020-11-24 Thread Pavel Tupitsyn (Jira)
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

2020-11-24 Thread Pavel Tupitsyn (Jira)
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

2020-11-23 Thread Pavel Tupitsyn (Jira)
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

2020-11-10 Thread Pavel Tupitsyn (Jira)
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

2020-10-28 Thread Pavel Tupitsyn (Jira)
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

2020-10-24 Thread Pavel Tupitsyn (Jira)
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

2020-10-23 Thread Pavel Tupitsyn (Jira)
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

2020-10-22 Thread Pavel Tupitsyn (Jira)
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

2020-10-21 Thread Pavel Tupitsyn (Jira)
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

2020-10-20 Thread Pavel Tupitsyn (Jira)
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

2020-10-19 Thread Pavel Tupitsyn (Jira)
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

2020-10-07 Thread Pavel Tupitsyn (Jira)
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

2020-10-07 Thread Pavel Tupitsyn (Jira)
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

2020-10-06 Thread Pavel Tupitsyn (Jira)
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

2020-10-06 Thread Pavel Tupitsyn (Jira)
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

2020-10-01 Thread Pavel Tupitsyn (Jira)
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

2020-09-29 Thread Pavel Tupitsyn (Jira)
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

2020-09-25 Thread Pavel Tupitsyn (Jira)
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

2020-09-22 Thread Pavel Tupitsyn (Jira)
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

2020-09-21 Thread Pavel Tupitsyn (Jira)
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

2020-09-21 Thread Pavel Tupitsyn (Jira)
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

2020-09-19 Thread Pavel Tupitsyn (Jira)
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

2020-09-16 Thread Pavel Tupitsyn (Jira)
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

2020-09-07 Thread Pavel Tupitsyn (Jira)
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

2020-08-21 Thread Pavel Tupitsyn (Jira)
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

2020-08-18 Thread Pavel Tupitsyn (Jira)
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

2020-08-13 Thread Pavel Tupitsyn (Jira)
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

2020-08-13 Thread Pavel Tupitsyn (Jira)
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

2020-08-11 Thread Pavel Tupitsyn (Jira)
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

2020-08-08 Thread Pavel Tupitsyn (Jira)
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

2020-08-06 Thread Pavel Tupitsyn (Jira)
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

2020-08-04 Thread Pavel Tupitsyn (Jira)
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

2020-07-24 Thread Pavel Tupitsyn (Jira)
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

2020-07-23 Thread Pavel Tupitsyn (Jira)
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

2020-07-22 Thread Pavel Tupitsyn (Jira)
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

2020-07-20 Thread Pavel Tupitsyn (Jira)
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

2020-07-20 Thread Pavel Tupitsyn (Jira)
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

2020-07-20 Thread Pavel Tupitsyn (Jira)
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

2020-07-20 Thread Pavel Tupitsyn (Jira)
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

2020-07-20 Thread Pavel Tupitsyn (Jira)
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

2020-07-07 Thread Pavel Tupitsyn (Jira)
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

2020-07-06 Thread Pavel Tupitsyn (Jira)
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

2020-06-13 Thread Pavel Tupitsyn (Jira)
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

2020-06-07 Thread Pavel Tupitsyn (Jira)
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

2020-06-06 Thread Pavel Tupitsyn (Jira)
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

2020-05-29 Thread Pavel Tupitsyn (Jira)
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

2020-05-19 Thread Pavel Tupitsyn (Jira)
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

2020-05-19 Thread Pavel Tupitsyn (Jira)
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

2020-05-14 Thread Pavel Tupitsyn (Jira)
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

2020-05-12 Thread Pavel Tupitsyn (Jira)
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

2020-04-30 Thread Pavel Tupitsyn (Jira)
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

2020-04-27 Thread Pavel Tupitsyn (Jira)
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

2020-04-24 Thread Pavel Tupitsyn (Jira)
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

2020-04-24 Thread Pavel Tupitsyn (Jira)
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

2020-04-22 Thread Pavel Tupitsyn (Jira)
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

2020-04-20 Thread Pavel Tupitsyn (Jira)
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

2020-04-09 Thread Pavel Tupitsyn (Jira)
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

2020-04-09 Thread Pavel Tupitsyn (Jira)
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

2020-03-22 Thread Pavel Tupitsyn (Jira)
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

2020-03-05 Thread Pavel Tupitsyn (Jira)
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

2020-02-27 Thread Pavel Tupitsyn (Jira)
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

2020-02-19 Thread Pavel Tupitsyn (Jira)
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

2020-02-17 Thread Pavel Tupitsyn (Jira)
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

2020-02-13 Thread Pavel Tupitsyn (Jira)
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

2020-02-12 Thread Pavel Tupitsyn (Jira)
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

2020-02-06 Thread Pavel Tupitsyn (Jira)
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

2020-01-29 Thread Pavel Tupitsyn (Jira)
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

2020-01-20 Thread Pavel Tupitsyn (Jira)
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

2020-01-13 Thread Pavel Tupitsyn (Jira)
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

2019-12-20 Thread Pavel Tupitsyn (Jira)
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

2019-12-19 Thread Pavel Tupitsyn (Jira)
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)


  1   2   3   4   5   6   7   8   >