[jira] [Assigned] (IGNITE-1287) Platforms .Net: Move memory management code to Ignite.

2015-08-24 Thread Pavel Tupitsyn (JIRA)

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

Pavel Tupitsyn reassigned IGNITE-1287:
--

Assignee: Pavel Tupitsyn

 Platforms .Net: Move memory management code to Ignite.
 --

 Key: IGNITE-1287
 URL: https://issues.apache.org/jira/browse/IGNITE-1287
 Project: Ignite
  Issue Type: Sub-task
  Components: interop
Affects Versions: 1.1.4
Reporter: Vladimir Ozerov
Assignee: Pavel Tupitsyn
Priority: Critical
 Fix For: ignite-1.4






--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Issue Comment Deleted] (IGNITE-1286) Platforms .Net: Create solution and empty projects core, test, test-runner

2015-08-24 Thread Pavel Tupitsyn (JIRA)

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

Pavel Tupitsyn updated IGNITE-1286:
---
Comment: was deleted

(was: Done, pull request updated.)

 Platforms .Net: Create solution and empty projects core, test, 
 test-runner
 

 Key: IGNITE-1286
 URL: https://issues.apache.org/jira/browse/IGNITE-1286
 Project: Ignite
  Issue Type: Sub-task
  Components: interop
Affects Versions: 1.1.4
Reporter: Vladimir Ozerov
Assignee: Pavel Tupitsyn
Priority: Critical
 Fix For: ignite-1.4






--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (IGNITE-1286) Platforms .Net: Create solution and empty projects core, test, test-runner

2015-08-24 Thread Pavel Tupitsyn (JIRA)

[ 
https://issues.apache.org/jira/browse/IGNITE-1286?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14709244#comment-14709244
 ] 

Pavel Tupitsyn commented on IGNITE-1286:


https://github.com/apache/ignite/pull/28

 Platforms .Net: Create solution and empty projects core, test, 
 test-runner
 

 Key: IGNITE-1286
 URL: https://issues.apache.org/jira/browse/IGNITE-1286
 Project: Ignite
  Issue Type: Sub-task
  Components: interop
Affects Versions: 1.1.4
Reporter: Vladimir Ozerov
Assignee: Vladimir Ozerov
Priority: Critical
 Fix For: ignite-1.4






--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (IGNITE-1287) Platforms .Net: Move memory management code to Ignite.

2015-08-24 Thread Pavel Tupitsyn (JIRA)

[ 
https://issues.apache.org/jira/browse/IGNITE-1287?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14709570#comment-14709570
 ] 

Pavel Tupitsyn commented on IGNITE-1287:


Tests in Ignite and GridGain work. 
https://github.com/apache/ignite/pull/31
See corresponding GG branch as well.

 Platforms .Net: Move memory management code to Ignite.
 --

 Key: IGNITE-1287
 URL: https://issues.apache.org/jira/browse/IGNITE-1287
 Project: Ignite
  Issue Type: Sub-task
  Components: interop
Affects Versions: 1.1.4
Reporter: Vladimir Ozerov
Assignee: Pavel Tupitsyn
Priority: Critical
 Fix For: ignite-1.4






--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (IGNITE-1286) Platforms .Net: Create solution and empty projects core, test, test-runner

2015-08-24 Thread Pavel Tupitsyn (JIRA)

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

Pavel Tupitsyn reassigned IGNITE-1286:
--

Assignee: Pavel Tupitsyn

 Platforms .Net: Create solution and empty projects core, test, 
 test-runner
 

 Key: IGNITE-1286
 URL: https://issues.apache.org/jira/browse/IGNITE-1286
 Project: Ignite
  Issue Type: Sub-task
  Components: interop
Affects Versions: 1.1.4
Reporter: Vladimir Ozerov
Assignee: Pavel Tupitsyn
Priority: Critical
 Fix For: ignite-1.4






--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (IGNITE-1759) .Net: Guid read/write is not platform-safe.

2015-10-21 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn reassigned IGNITE-1759:
---

Assignee: Pavel  Tupitsyn

> .Net: Guid read/write is not platform-safe.
> ---
>
> Key: IGNITE-1759
> URL: https://issues.apache.org/jira/browse/IGNITE-1759
> Project: Ignite
>  Issue Type: Bug
>  Components: interop
>Affects Versions: ignite-1.4
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Critical
> Fix For: 1.5
>
>
> Two problems here:
> 1) We do not count for endiannes, so byte shifts might be invalid.
> 2) Guid doesn't have fixed layout. For this reason there are no guarantees 
> that it will take 16 bytes.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (IGNITE-1759) .Net: Guid read/write is not platform-safe.

2015-10-21 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn edited comment on IGNITE-1759 at 10/21/15 1:59 PM:
---

2) We can check at startup whether Guid has expected layout and then choose 
either a current faster approach, or a slower way through a Guid constructor.


was (Author: ptupitsyn):
1) Endianness does not matter here. Basically, we interpret a 16-byte memory 
chunk as 2 ulongs and then reorder some bytes in them.
2) We can check at startup whether Guid has expected layout and then choose 
either a current faster approach, or a slower way through a Guid constructor.

> .Net: Guid read/write is not platform-safe.
> ---
>
> Key: IGNITE-1759
> URL: https://issues.apache.org/jira/browse/IGNITE-1759
> Project: Ignite
>  Issue Type: Bug
>  Components: interop
>Affects Versions: ignite-1.4
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Critical
> Fix For: 1.5
>
>
> Two problems here:
> 1) We do not count for endiannes, so byte shifts might be invalid.
> 2) Guid doesn't have fixed layout. For this reason there are no guarantees 
> that it will take 16 bytes.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (IGNITE-1759) .Net: Guid read/write is not platform-safe.

2015-10-21 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn commented on IGNITE-1759:
-

1) Endianness does not matter here. Basically, we interpret a 16-byte memory 
chunk as 2 ulongs and then reorder some bytes in them.
2) We can check at startup whether Guid has expected layout and then choose 
either a current faster approach, or a slower way through a Guid constructor.

> .Net: Guid read/write is not platform-safe.
> ---
>
> Key: IGNITE-1759
> URL: https://issues.apache.org/jira/browse/IGNITE-1759
> Project: Ignite
>  Issue Type: Bug
>  Components: interop
>Affects Versions: ignite-1.4
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Critical
> Fix For: 1.5
>
>
> Two problems here:
> 1) We do not count for endiannes, so byte shifts might be invalid.
> 2) Guid doesn't have fixed layout. For this reason there are no guarantees 
> that it will take 16 bytes.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (IGNITE-1785) .Net: Improve PlatformMemory/PortableStream performance and memory usage

2015-10-23 Thread Pavel Tupitsyn (JIRA)
Pavel  Tupitsyn created IGNITE-1785:
---

 Summary: .Net: Improve PlatformMemory/PortableStream performance 
and memory usage
 Key: IGNITE-1785
 URL: https://issues.apache.org/jira/browse/IGNITE-1785
 Project: Ignite
  Issue Type: Improvement
  Components: interop
Affects Versions: 1.5
Reporter: Pavel  Tupitsyn
Assignee: Pavel  Tupitsyn
 Fix For: 1.5


* PlatformMemory is just a single "long _memPtr" and can be easily converted to 
a struct to reduce allocations (it is allocated a lot)

* PlatformMemoryStream works with PlatformMemory.Length and Capacity 
indirectly. By employing a struct approach from 
https://issues.apache.org/jira/browse/IGNITE-1428 we can work with Length and 
Capacity directly, which may be faster, and will eliminate the need for 
SyncronizeInput/Output calls.

* PlatformMemoryStream is allocated even more often than PlatformMemory, need 
to investigate whether it can also be a struct. See how List<>.GetEnumerator 
works, which is a struct.




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (IGNITE-1780) .Net: DateTime is seialized incorrectly.

2015-10-23 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn reassigned IGNITE-1780:
---

Assignee: Pavel  Tupitsyn

> .Net: DateTime is seialized incorrectly.
> 
>
> Key: IGNITE-1780
> URL: https://issues.apache.org/jira/browse/IGNITE-1780
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: ignite-1.4
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Critical
> Fix For: 1.5
>
>
> Add the following test to PortableSelfTest.cs:
> {code}
> [Test]
> public void TestWriteDate()
> {
> DateTime time = DateTime.Now;
> DateTime timeUtc = DateTime.UtcNow;
> Assert.AreEqual(_marsh.Unmarshal(_marsh.Marshal(time)), time);
> Assert.AreEqual(_marsh.Unmarshal(_marsh.Marshal(timeUtc)), 
> timeUtc);
> }
> {code}
> Observe that it fails becuase we loose DateTimeKind. 
> DateTime must be serialized in portable form only in two cases:
> 1) IPortableWriter.WriteDate()
> 2) IPortableWriter.WriteDateArray()
> In all other cases it should be serialized in some other form. E.g., we can 
> introduce new wrapper type ".NET-specific" and wrap DateTime, Collections, 
> Arrays (IGNITE-1779) in it. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Closed] (IGNITE-1780) .Net: DateTime is seialized incorrectly.

2015-10-23 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn closed IGNITE-1780.
---
Assignee: Vladimir Ozerov  (was: Pavel  Tupitsyn)

> .Net: DateTime is seialized incorrectly.
> 
>
> Key: IGNITE-1780
> URL: https://issues.apache.org/jira/browse/IGNITE-1780
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: ignite-1.4
>Reporter: Vladimir Ozerov
>Assignee: Vladimir Ozerov
>Priority: Critical
> Fix For: 1.5
>
>
> Add the following test to PortableSelfTest.cs:
> {code}
> [Test]
> public void TestWriteDate()
> {
> DateTime time = DateTime.Now;
> DateTime timeUtc = DateTime.UtcNow;
> Assert.AreEqual(_marsh.Unmarshal(_marsh.Marshal(time)), time);
> Assert.AreEqual(_marsh.Unmarshal(_marsh.Marshal(timeUtc)), 
> timeUtc);
> }
> {code}
> Observe that it fails becuase we loose DateTimeKind. 
> DateTime must be serialized in portable form only in two cases:
> 1) IPortableWriter.WriteDate()
> 2) IPortableWriter.WriteDateArray()
> In all other cases it should be serialized in some other form. E.g., we can 
> introduce new wrapper type ".NET-specific" and wrap DateTime, Collections, 
> Arrays (IGNITE-1779) in it. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (IGNITE-1779) .Net: Evaluate BinaryFormatter overhead for generic collections.

2015-10-23 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn reassigned IGNITE-1779:
---

Assignee: Pavel  Tupitsyn

> .Net: Evaluate BinaryFormatter overhead for generic collections.
> 
>
> Key: IGNITE-1779
> URL: https://issues.apache.org/jira/browse/IGNITE-1779
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: ignite-1.4
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Critical
> Fix For: 1.5
>
>
> It seems that BinaryFormatter is extrmly inefficient. I tried to write a 
> single Guid with and it resulted in >100 bytes comparing to 16 bytes when 
> written in portable form. 
> If we notice the same overhead for collections/arrays which are fairly often 
> used types, we will have to revert to our initial approach when collections 
> were serialized using our own mechanics.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (IGNITE-1644) .Net: DateTime.Kind is lost during serialization

2015-10-23 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn updated IGNITE-1644:

Description: 
Add the following test to PortableSelfTest.cs:
{code}
[Test]
public void TestWriteDate()
{
DateTime time = DateTime.Now;
DateTime timeUtc = DateTime.UtcNow;

Assert.AreEqual(_marsh.Unmarshal(_marsh.Marshal(time)), time);
Assert.AreEqual(_marsh.Unmarshal(_marsh.Marshal(timeUtc)), 
timeUtc);
}
{code}

Observe that it fails becuase we loose DateTimeKind. 
This happens because we always write DateTime as UTC and lose DateTime.Kind, so 
on deserialization we do not know whether ToLocal should be called.

DateTime must be serialized in portable form only in two cases:
1) IPortableWriter.WriteDate()
2) IPortableWriter.WriteDateArray()
In these cases we should throw exception on a non-UTC date.

In all other cases it should be serialized in some other form. E.g., we can 
introduce new wrapper type ".NET-specific" and wrap DateTime, Collections, 
Arrays (IGNITE-1779) in it.
This will break queries to some extent.

  was:
Add the following test to PortableSelfTest.cs:
{code}
[Test]
public void TestWriteDate()
{
DateTime time = DateTime.Now;
DateTime timeUtc = DateTime.UtcNow;

Assert.AreEqual(_marsh.Unmarshal(_marsh.Marshal(time)), time);
Assert.AreEqual(_marsh.Unmarshal(_marsh.Marshal(timeUtc)), 
timeUtc);
}
{code}

Observe that it fails becuase we loose DateTimeKind. 
This happens because we always write DateTime as UTC and lose DateTime.Kind, so 
on deserialization we do not know whether ToLocal should be called.

Possible solutions:
* write .Net DateTime in a different format, not compatible with Java (breaks 
queries)
* throw exceptions for non-utc DateTime (force user to use UTC-only during 
serialization)



> .Net: DateTime.Kind is lost during serialization
> 
>
> Key: IGNITE-1644
> URL: https://issues.apache.org/jira/browse/IGNITE-1644
> Project: Ignite
>  Issue Type: Bug
>  Components: interop
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.5
>
>
> Add the following test to PortableSelfTest.cs:
> {code}
> [Test]
> public void TestWriteDate()
> {
> DateTime time = DateTime.Now;
> DateTime timeUtc = DateTime.UtcNow;
> Assert.AreEqual(_marsh.Unmarshal(_marsh.Marshal(time)), time);
> Assert.AreEqual(_marsh.Unmarshal(_marsh.Marshal(timeUtc)), 
> timeUtc);
> }
> {code}
> Observe that it fails becuase we loose DateTimeKind. 
> This happens because we always write DateTime as UTC and lose DateTime.Kind, 
> so on deserialization we do not know whether ToLocal should be called.
> DateTime must be serialized in portable form only in two cases:
> 1) IPortableWriter.WriteDate()
> 2) IPortableWriter.WriteDateArray()
> In these cases we should throw exception on a non-UTC date.
> In all other cases it should be serialized in some other form. E.g., we can 
> introduce new wrapper type ".NET-specific" and wrap DateTime, Collections, 
> Arrays (IGNITE-1779) in it.
> This will break queries to some extent.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (IGNITE-1760) .Net: Validate field type in PortableReaderImpl

2015-10-23 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn updated IGNITE-1760:

Priority: Critical  (was: Major)

> .Net: Validate field type in PortableReaderImpl
> ---
>
> Key: IGNITE-1760
> URL: https://issues.apache.org/jira/browse/IGNITE-1760
> Project: Ignite
>  Issue Type: Bug
>  Components: interop
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
>Priority: Critical
> Fix For: 1.5
>
>
> Currently in methods like ReadInt we just ignore type id byte and proceed to 
> read data, which can result in garbage in case of type mismatch.
> Need to validate whether data is of expected type.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (IGNITE-1644) .Net: DateTime.Kind is lost during serialization

2015-10-23 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn commented on IGNITE-1644:
-

There is a problem with arrays. ReflectiveSerializer writes ALL arrays as 
arrays. But PortableWriterImpl only writes arrays of known types as arrays. All 
other arrays are written as Serializable.

> .Net: DateTime.Kind is lost during serialization
> 
>
> Key: IGNITE-1644
> URL: https://issues.apache.org/jira/browse/IGNITE-1644
> Project: Ignite
>  Issue Type: Bug
>  Components: interop
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.5
>
>
> Add the following test to PortableSelfTest.cs:
> {code}
> [Test]
> public void TestWriteDate()
> {
> DateTime time = DateTime.Now;
> DateTime timeUtc = DateTime.UtcNow;
> Assert.AreEqual(_marsh.Unmarshal(_marsh.Marshal(time)), time);
> Assert.AreEqual(_marsh.Unmarshal(_marsh.Marshal(timeUtc)), 
> timeUtc);
> }
> {code}
> Observe that it fails becuase we loose DateTimeKind. 
> This happens because we always write DateTime as UTC and lose DateTime.Kind, 
> so on deserialization we do not know whether ToLocal should be called.
> DateTime must be serialized in portable form only in two cases:
> 1) IPortableWriter.WriteDate()
> 2) IPortableWriter.WriteDateArray()
> In these cases we should throw exception on a non-UTC date.
> In all other cases it should be serialized in some other form. E.g., we can 
> introduce new wrapper type ".NET-specific" and wrap DateTime, Collections, 
> Arrays (IGNITE-1779) in it.
> This will break queries to some extent.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (IGNITE-1619) Platform .Net: Generic type is lost during array/collection serialization

2015-10-22 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn commented on IGNITE-1619:
-

1,3) Fixed
2) HashSet does not implement ICollection, so we can't use it in these 
methods. There is no non-generic set in .Net.

> Platform .Net: Generic type is lost during array/collection serialization
> -
>
> Key: IGNITE-1619
> URL: https://issues.apache.org/jira/browse/IGNITE-1619
> Project: Ignite
>  Issue Type: Bug
>  Components: interop
>Affects Versions: ignite-1.4
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.5
>
>
> We do not serialize collection/array element type, so on deserialization we 
> can not recreate original collection. So generic arrays/collections can't be 
> used in job arguments, service arguments, etc.
> * We should keep current format for non-generic collections, arrays of 
> primitives, and arrays of objects
> * Generic collections and arrays should be written with new TypeIds (not 
> compatible with other platforms) and include type information



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (IGNITE-1779) .Net: Evaluate BinaryFormatter overhead for generic collections.

2015-10-27 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn edited comment on IGNITE-1779 at 10/27/15 12:44 PM:


{code:title=PortableSelfTest.cs}
[Test]
public void TestArraySerializable()
{
var serArr = Enumerable.Range(1, 1).Select(x => new 
SerializableObject {Foo = x}).ToArray();
var objArr = serArr.OfType().ToArray();

Console.WriteLine("As serializable: " + 
_marsh.Marshal(serArr).Length / serArr.Length);  // 18
Console.WriteLine("As object array: " + 
_marsh.Marshal(objArr).Length / serArr.Length);  // 232
}

[Test]
public void TestArrayWithRawPortables()
{
var marsh =
new PortableMarshaller(new PortableConfiguration
{
TypeConfigurations =
new List { new 
PortableTypeConfiguration(typeof(PrimitiveFieldRawPortableType)) }
});


PrimitiveFieldRawPortableType[] serArr = Enumerable.Range(1, 
1000).Select(x => new PrimitiveFieldRawPortableType { PDouble = x }).ToArray();
object[] objArr = serArr.OfType().ToArray();

Console.WriteLine("As serializable: " + 
marsh.Marshal(serArr).Length / serArr.Length);
Console.WriteLine("As object array: " + 
marsh.Marshal(objArr).Length / objArr.Length);
}

{code}


was (Author: ptupitsyn):
{code:title=PortableSelfTest.cs}
[Test]
public void TestArraySerializable()
{
var serArr = Enumerable.Range(1, 1).Select(x => new 
SerializableObject {Foo = x}).ToArray();
var objArr = serArr.OfType().ToArray();

Console.WriteLine("As serializable: " + 
_marsh.Marshal(serArr).Length / serArr.Length);  // 18
Console.WriteLine("As object array: " + 
_marsh.Marshal(objArr).Length / serArr.Length);  // 232
}

[Test]
public void TestArrayWithRawPortables()
{
var marsh =
new PortableMarshaller(new PortableConfiguration
{
TypeConfigurations =
new List { new 
PortableTypeConfiguration(typeof(PrimitiveFieldRawPortableType)) }
});


var serArr = Enumerable.Range(1, 1000).Select(x => new 
PrimitiveFieldRawPortableType { PDouble = x }).ToArray();
var objArr = serArr.OfType().ToArray();

Console.WriteLine("As serializable: " + 
marsh.Marshal(serArr).Length / serArr.Length);  // 128
Console.WriteLine("As object array: " + 
marsh.Marshal(objArr).Length / objArr.Length);  // 383
}

{code}

> .Net: Evaluate BinaryFormatter overhead for generic collections.
> 
>
> Key: IGNITE-1779
> URL: https://issues.apache.org/jira/browse/IGNITE-1779
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: ignite-1.4
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Critical
> Fix For: 1.5
>
>
> It seems that BinaryFormatter is extrmly inefficient. I tried to write a 
> single Guid with and it resulted in >100 bytes comparing to 16 bytes when 
> written in portable form. 
> If we notice the same overhead for collections/arrays which are fairly often 
> used types, we will have to revert to our initial approach when collections 
> were serialized using our own mechanics.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (IGNITE-1779) .Net: Evaluate BinaryFormatter overhead for generic collections.

2015-10-27 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn edited comment on IGNITE-1779 at 10/27/15 12:40 PM:


{code:title=PortableSelfTest.cs}
[Test]
public void TestArraySerializable()
{
var serArr = Enumerable.Range(1, 1).Select(x => new 
SerializableObject {Foo = x}).ToArray();
var objArr = serArr.OfType().ToArray();

Console.WriteLine("As serializable: " + 
_marsh.Marshal(serArr).Length / serArr.Length);  // 18
Console.WriteLine("As object array: " + 
_marsh.Marshal(objArr).Length / serArr.Length);  // 232
}

[Test]
public void TestArrayWithRawPortables()
{
var marsh =
new PortableMarshaller(new PortableConfiguration
{
TypeConfigurations =
new List { new 
PortableTypeConfiguration(typeof(PrimitiveFieldRawPortableType)) }
});


var serArr = Enumerable.Range(1, 1000).Select(x => new 
PrimitiveFieldRawPortableType { PDouble = x }).ToArray();
var objArr = serArr.OfType().ToArray();

Console.WriteLine("As serializable: " + 
marsh.Marshal(serArr).Length / serArr.Length);  // 128
Console.WriteLine("As object array: " + 
marsh.Marshal(objArr).Length / objArr.Length);  // 383
}

{code}


was (Author: ptupitsyn):
{code:title=PortableSelfTest.cs}
[Test]
public void TestArraySerializable()
{
var serArr = Enumerable.Range(1, 1).Select(x => new 
SerializableObject {Foo = x}).ToArray();
var objArr = serArr.OfType().ToArray();

Console.WriteLine("As serializable: " + 
_marsh.Marshal(serArr).Length / serArr.Length);
Console.WriteLine("As object array: " + 
_marsh.Marshal(objArr).Length / serArr.Length);
}
{code}

As serializable: 18
As object array: 232

> .Net: Evaluate BinaryFormatter overhead for generic collections.
> 
>
> Key: IGNITE-1779
> URL: https://issues.apache.org/jira/browse/IGNITE-1779
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: ignite-1.4
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Critical
> Fix For: 1.5
>
>
> It seems that BinaryFormatter is extrmly inefficient. I tried to write a 
> single Guid with and it resulted in >100 bytes comparing to 16 bytes when 
> written in portable form. 
> If we notice the same overhead for collections/arrays which are fairly often 
> used types, we will have to revert to our initial approach when collections 
> were serialized using our own mechanics.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (IGNITE-1779) .Net: Evaluate BinaryFormatter overhead for generic collections.

2015-10-27 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn commented on IGNITE-1779:
-

{code:title=PortableSelfTest.cs}
[Test]
public void TestArraySerializable()
{
var serArr = Enumerable.Range(1, 1).Select(x => new 
SerializableObject {Foo = x}).ToArray();
var objArr = serArr.OfType().ToArray();

Console.WriteLine("As serializable: " + 
_marsh.Marshal(serArr).Length / serArr.Length);
Console.WriteLine("As object array: " + 
_marsh.Marshal(objArr).Length / serArr.Length);
}
{code}

As serializable: 18
As object array: 232

> .Net: Evaluate BinaryFormatter overhead for generic collections.
> 
>
> Key: IGNITE-1779
> URL: https://issues.apache.org/jira/browse/IGNITE-1779
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: ignite-1.4
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Critical
> Fix For: 1.5
>
>
> It seems that BinaryFormatter is extrmly inefficient. I tried to write a 
> single Guid with and it resulted in >100 bytes comparing to 16 bytes when 
> written in portable form. 
> If we notice the same overhead for collections/arrays which are fairly often 
> used types, we will have to revert to our initial approach when collections 
> were serialized using our own mechanics.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (IGNITE-1770) Portables: implement constant-time field lookup.

2015-10-29 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn reassigned IGNITE-1770:
---

Assignee: Pavel  Tupitsyn  (was: Vladimir Ozerov)

> Portables: implement constant-time field lookup.
> 
>
> Key: IGNITE-1770
> URL: https://issues.apache.org/jira/browse/IGNITE-1770
> Project: Ignite
>  Issue Type: Task
>  Components: general, interop
>Affects Versions: ignite-1.4
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Blocker
> Fix For: 1.5
>
>
> See 
> https://cwiki.apache.org/confluence/display/IGNITE/Portable+object+constant-time+field+lookup



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (IGNITE-1770) Portables: implement constant-time field lookup.

2015-10-28 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn reassigned IGNITE-1770:
---

Assignee: Pavel  Tupitsyn  (was: Vladimir Ozerov)

> Portables: implement constant-time field lookup.
> 
>
> Key: IGNITE-1770
> URL: https://issues.apache.org/jira/browse/IGNITE-1770
> Project: Ignite
>  Issue Type: Task
>  Components: general, interop
>Affects Versions: ignite-1.4
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Blocker
> Fix For: 1.5
>
>
> See 
> https://cwiki.apache.org/confluence/display/IGNITE/Portable+object+constant-time+field+lookup



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (IGNITE-1644) .Net: DateTime.Kind is lost during serialization

2015-10-26 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn commented on IGNITE-1644:
-

To fix mismatch between Reader/Writer and PortableBuilder APIs I've added 
Set_x_Field methods to the builder.

> .Net: DateTime.Kind is lost during serialization
> 
>
> Key: IGNITE-1644
> URL: https://issues.apache.org/jira/browse/IGNITE-1644
> Project: Ignite
>  Issue Type: Bug
>  Components: interop
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.5
>
>
> Add the following test to PortableSelfTest.cs:
> {code}
> [Test]
> public void TestWriteDate()
> {
> DateTime time = DateTime.Now;
> DateTime timeUtc = DateTime.UtcNow;
> Assert.AreEqual(_marsh.Unmarshal(_marsh.Marshal(time)), time);
> Assert.AreEqual(_marsh.Unmarshal(_marsh.Marshal(timeUtc)), 
> timeUtc);
> }
> {code}
> Observe that it fails becuase we loose DateTimeKind. 
> This happens because we always write DateTime as UTC and lose DateTime.Kind, 
> so on deserialization we do not know whether ToLocal should be called.
> DateTime must be serialized in portable form only in two cases:
> 1) IPortableWriter.WriteDate()
> 2) IPortableWriter.WriteDateArray()
> In these cases we should throw exception on a non-UTC date.
> In all other cases it should be serialized in some other form. E.g., we can 
> introduce new wrapper type ".NET-specific" and wrap DateTime, Collections, 
> Arrays (IGNITE-1779) in it.
> This will break queries to some extent.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (IGNITE-1652) .Net: Rework async APIs (remove WithAsync/GetFuture)

2015-10-26 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn updated IGNITE-1652:

Description: 
{code}
cache.WithAsync().Get();
IFuture future = cache.GetFuture();
{code}

should become

{code}
Task task = cache.GetAsync();
{code}

Guidelines: https://msdn.microsoft.com/en-us/library/hh873175(v=vs.110).aspx

First step is .Net-only (remove GetFuture from public API, call it inside 
*Async methods). This requires 2 JNI calls.

Later we should look into making it a single JNI call.


  was:
{code}
cache.WithAsync().Get();
var future = cache.GetFuture();
{code}

should become

{code}
var future = cache.GetAsync();
{code}

See if we can make ToTask() more efficient, or even get rid of Futures 
completely in favor of tasks, preserving performance.

First step is .Net-only (remove GetFuture from public API, call it inside 
*Async methods). This requires 2 JNI calls.

Later we should look into making it a single JNI call.



> .Net: Rework async APIs (remove WithAsync/GetFuture)
> 
>
> Key: IGNITE-1652
> URL: https://issues.apache.org/jira/browse/IGNITE-1652
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.5
>
>
> {code}
> cache.WithAsync().Get();
> IFuture future = cache.GetFuture();
> {code}
> should become
> {code}
> Task task = cache.GetAsync();
> {code}
> Guidelines: https://msdn.microsoft.com/en-us/library/hh873175(v=vs.110).aspx
> First step is .Net-only (remove GetFuture from public API, call it inside 
> *Async methods). This requires 2 JNI calls.
> Later we should look into making it a single JNI call.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (IGNITE-1652) .Net: Rework async APIs (remove WithAsync/GetFuture)

2015-10-26 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn commented on IGNITE-1652:
-

Let's hide IFuture and return Tasks directly to have a .Net-friendly API.
Later we can improve Task creation performance: 
https://issues.apache.org/jira/browse/IGNITE-1791

> .Net: Rework async APIs (remove WithAsync/GetFuture)
> 
>
> Key: IGNITE-1652
> URL: https://issues.apache.org/jira/browse/IGNITE-1652
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.5
>
>
> {code}
> cache.WithAsync().Get();
> var future = cache.GetFuture();
> {code}
> should become
> {code}
> var future = cache.GetAsync();
> {code}
> See if we can make ToTask() more efficient, or even get rid of Futures 
> completely in favor of tasks, preserving performance.
> First step is .Net-only (remove GetFuture from public API, call it inside 
> *Async methods). This requires 2 JNI calls.
> Later we should look into making it a single JNI call.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (IGNITE-1619) Platform .Net: Generic type is lost during array/collection serialization

2015-10-21 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn edited comment on IGNITE-1619 at 10/21/15 2:32 PM:
---

Since most CLR collections are Serializable, we can rely on that instead of 
inventing our own mechanism.
The downside is that elements of List will be written 
as Serializable instead of Portable, but user can work around that by 
serializing the collection manually.

1,2) Comments fixed
3,5,6) Removed, no more applicable
4) Reverted


was (Author: ptupitsyn):
Since most CLR collections are Serializable, we can rely on that instead of 
inventing our own mechanism.
The downside is that elements of List will be written 
as Serializable instead of Portable, but user can work around that by 
serializing the collection manually.

1,2) Comments fixed
3,6) Descriptor logic removed since it is not actually reachable

4) ..

> Platform .Net: Generic type is lost during array/collection serialization
> -
>
> Key: IGNITE-1619
> URL: https://issues.apache.org/jira/browse/IGNITE-1619
> Project: Ignite
>  Issue Type: Bug
>  Components: interop
>Affects Versions: ignite-1.4
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.5
>
>
> We do not serialize collection/array element type, so on deserialization we 
> can not recreate original collection. So generic arrays/collections can't be 
> used in job arguments, service arguments, etc.
> * We should keep current format for non-generic collections, arrays of 
> primitives, and arrays of objects
> * Generic collections and arrays should be written with new TypeIds (not 
> compatible with other platforms) and include type information



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (IGNITE-1884) .Net: JNI local ref can't be accessed from another thread

2015-11-10 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn updated IGNITE-1884:

Description: 
Documentation: 
https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/design.html

{code}
Local references are only valid in the thread in which they are created. The 
native code must not pass local references from one thread to another.
{code}

We have two places where we DO pass local JNI reference to another thread:
* CacheParallelLoadStoreAdapter
* CacheTestStore.LoadCache

And, potentially (due to user code):
* UnmanagedCallbacks.DataStreamerStreamReceiverInvoke

For some reason it has worked for us before.
But renamings in IGNITE-1881 have caused test execution order to change, and 
these store tests cause process crash.

To reproduce, BinaryBuilderSelfTest (former PortableApiSelfTest) has to be 
executed before store tests. All other tests can be excluded. 100% repro rate: 
"FATAL ERROR in native method: Bad global or local ref passed to JNI".


  was:
Documentation: 
https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/design.html

{code}
Local references are only valid in the thread in which they are created. The 
native code must not pass local references from one thread to another.
{code}

We have two places where we DO pass local JNI reference to another thread:
* CacheParallelLoadStoreAdapter
* CacheTestStore.LoadCache

For some reason it has worked for us before.
But renamings in IGNITE-1881 have caused test execution order to change, and 
these store tests cause process crash.

To reproduce, BinaryBuilderSelfTest (former PortableApiSelfTest) has to be 
executed before store tests. All other tests can be excluded. 100% repro rate: 
"FATAL ERROR in native method: Bad global or local ref passed to JNI".



> .Net: JNI local ref can't be accessed from another thread
> -
>
> Key: IGNITE-1884
> URL: https://issues.apache.org/jira/browse/IGNITE-1884
> Project: Ignite
>  Issue Type: Bug
>  Components: interop
>Affects Versions: 1.1.4
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
>Priority: Blocker
> Fix For: 1.5
>
>
> Documentation: 
> https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/design.html
> {code}
> Local references are only valid in the thread in which they are created. The 
> native code must not pass local references from one thread to another.
> {code}
> We have two places where we DO pass local JNI reference to another thread:
> * CacheParallelLoadStoreAdapter
> * CacheTestStore.LoadCache
> And, potentially (due to user code):
> * UnmanagedCallbacks.DataStreamerStreamReceiverInvoke
> For some reason it has worked for us before.
> But renamings in IGNITE-1881 have caused test execution order to change, and 
> these store tests cause process crash.
> To reproduce, BinaryBuilderSelfTest (former PortableApiSelfTest) has to be 
> executed before store tests. All other tests can be excluded. 100% repro 
> rate: "FATAL ERROR in native method: Bad global or local ref passed to JNI".



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (IGNITE-1884) .Net: JNI local ref can't be accessed from another thread

2015-11-10 Thread Pavel Tupitsyn (JIRA)
Pavel  Tupitsyn created IGNITE-1884:
---

 Summary: .Net: JNI local ref can't be accessed from another thread
 Key: IGNITE-1884
 URL: https://issues.apache.org/jira/browse/IGNITE-1884
 Project: Ignite
  Issue Type: Bug
  Components: interop
Affects Versions: 1.1.4
Reporter: Pavel  Tupitsyn
Assignee: Pavel  Tupitsyn
 Fix For: 1.5


Documentation: 
https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/design.html

{code}
Local references are only valid in the thread in which they are created. The 
native code must not pass local references from one thread to another.
{code}

We have two places where we DO pass local JNI reference to another thread:
* CacheParallelLoadStoreAdapter
* CacheTestStore.LoadCache

For some reason it has worked for us before.
But renamings in IGNITE-1881 have caused test execution order to change, and 
these store tests cause process crash.

To reproduce, BinaryBuilderSelfTest (former PortableApiSelfTest) has to be 
executed before store tests. All other tests can be excluded. 100% repro rate: 
"FATAL ERROR in native method: Bad global or local ref passed to JNI".




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (IGNITE-1884) .Net: JNI local ref can't be accessed from another thread

2015-11-10 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn updated IGNITE-1884:

Priority: Blocker  (was: Major)

> .Net: JNI local ref can't be accessed from another thread
> -
>
> Key: IGNITE-1884
> URL: https://issues.apache.org/jira/browse/IGNITE-1884
> Project: Ignite
>  Issue Type: Bug
>  Components: interop
>Affects Versions: 1.1.4
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
>Priority: Blocker
> Fix For: 1.5
>
>
> Documentation: 
> https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/design.html
> {code}
> Local references are only valid in the thread in which they are created. The 
> native code must not pass local references from one thread to another.
> {code}
> We have two places where we DO pass local JNI reference to another thread:
> * CacheParallelLoadStoreAdapter
> * CacheTestStore.LoadCache
> For some reason it has worked for us before.
> But renamings in IGNITE-1881 have caused test execution order to change, and 
> these store tests cause process crash.
> To reproduce, BinaryBuilderSelfTest (former PortableApiSelfTest) has to be 
> executed before store tests. All other tests can be excluded. 100% repro 
> rate: "FATAL ERROR in native method: Bad global or local ref passed to JNI".



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (IGNITE-1884) .Net: JNI local ref can't be accessed from another thread

2015-11-11 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn commented on IGNITE-1884:
-

1,2) Both of these cases go down to ThrowToJava. It just sets an exception in 
Java, but does not affect C++ program flow. So the handle won't leak.
http://mindprod.com/jgloss/jni.html#EXCEPTIONS

However, in future there may be the case with C++ or some other client where 
exceptions are possible. I'll address this with a wrapper/destructor.

3,4) Creating a wrapper and checking thread id would also introduce an 
overhead. Before doing this, we need to make sure if that is actually faster 
than GlobalRef. Let's do that separately.

> .Net: JNI local ref can't be accessed from another thread
> -
>
> Key: IGNITE-1884
> URL: https://issues.apache.org/jira/browse/IGNITE-1884
> Project: Ignite
>  Issue Type: Bug
>  Components: interop
>Affects Versions: 1.1.4
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
>Priority: Blocker
> Fix For: 1.5
>
>
> Documentation: 
> https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/design.html
> {code}
> Local references are only valid in the thread in which they are created. The 
> native code must not pass local references from one thread to another.
> {code}
> We have two places where we DO pass local JNI reference to another thread:
> * CacheParallelLoadStoreAdapter
> * CacheTestStore.LoadCache
> And, potentially (due to user code):
> * UnmanagedCallbacks.DataStreamerStreamReceiverInvoke
> For some reason it has worked for us before.
> But renamings in IGNITE-1881 have caused test execution order to change, and 
> these store tests cause process crash.
> To reproduce, BinaryBuilderSelfTest (former PortableApiSelfTest) has to be 
> executed before store tests. All other tests can be excluded. 100% repro 
> rate: "FATAL ERROR in native method: Bad global or local ref passed to JNI".



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (IGNITE-1845) .Net: Adopt portable API changes.

2015-11-11 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn commented on IGNITE-1845:
-

Please make sure you check PR#212. It certainly has these changes: 
https://github.com/apache/ignite/pull/212/files

> .Net: Adopt portable API changes.
> -
>
> Key: IGNITE-1845
> URL: https://issues.apache.org/jira/browse/IGNITE-1845
> Project: Ignite
>  Issue Type: Task
>  Components: general, interop
>Affects Versions: ignite-1.4
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Blocker
> Fix For: 1.5
>
>
> Important API changes will be introduced as a part of IGNITE-950. 
> Once these changes are in place, we need to port them to .Net.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (IGNITE-1694) .Net: More efficient way to call native methods.

2015-11-11 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn commented on IGNITE-1694:
-

* [DllImport] works fine after LoadLibrary call, no additional changes required.
* PutBenchmark ~2% faster.
* TC ok.

> .Net: More efficient way to call native methods.
> 
>
> Key: IGNITE-1694
> URL: https://issues.apache.org/jira/browse/IGNITE-1694
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: ignite-1.4
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Critical
> Fix For: 1.6
>
>
> Currently we invoke native platform using 
> "Marshal.GetDelegateForFunctionPointer". 
> This is the least efficient way to call external code. What can be done to 
> improve it:
> 1) Add [SuppressUnmanagedCodeSecurity] attribute.
> 2) Use P/Invoke instead. We do not use it now because we unpack native 
> library in runtime into some temp folder, while PInvoke searches for 
> libraries in predefined file system places. Need to evaluate whether we can 
> switch back to P/Invoke somehow.
> See 
> http://ybeernet.blogspot.ru/2011/03/techniques-of-calling-unmanaged-code.html 
> for more info.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (IGNITE-1694) .Net: More efficient way to call native methods.

2015-11-11 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn reassigned IGNITE-1694:
---

Assignee: Pavel  Tupitsyn

> .Net: More efficient way to call native methods.
> 
>
> Key: IGNITE-1694
> URL: https://issues.apache.org/jira/browse/IGNITE-1694
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: ignite-1.4
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Critical
> Fix For: 1.6
>
>
> Currently we invoke native platform using 
> "Marshal.GetDelegateForFunctionPointer". 
> This is the least efficient way to call external code. What can be done to 
> improve it:
> 1) Add [SuppressUnmanagedCodeSecurity] attribute.
> 2) Use P/Invoke instead. We do not use it now because we unpack native 
> library in runtime into some temp folder, while PInvoke searches for 
> libraries in predefined file system places. Need to evaluate whether we can 
> switch back to P/Invoke somehow.
> See 
> http://ybeernet.blogspot.ru/2011/03/techniques-of-calling-unmanaged-code.html 
> for more info.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (IGNITE-1866) .Net: turn SerializableObjectHolder & DateTimeHolder into structs

2015-11-11 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn commented on IGNITE-1866:
-

Implementation shows no performance increase in reader benchmarks.
And there is a drop in writer benchmarks due to boxing in 
IBinarySerializer.WriteBinary call.

Not efficient, closing.

> .Net: turn SerializableObjectHolder & DateTimeHolder into structs
> -
>
> Key: IGNITE-1866
> URL: https://issues.apache.org/jira/browse/IGNITE-1866
> Project: Ignite
>  Issue Type: Improvement
>  Components: interop
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.6
>
>
> Reduce allocations on read and write



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Resolved] (IGNITE-1866) .Net: turn SerializableObjectHolder & DateTimeHolder into structs

2015-11-11 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn resolved IGNITE-1866.
-
Resolution: Won't Fix

> .Net: turn SerializableObjectHolder & DateTimeHolder into structs
> -
>
> Key: IGNITE-1866
> URL: https://issues.apache.org/jira/browse/IGNITE-1866
> Project: Ignite
>  Issue Type: Improvement
>  Components: interop
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.6
>
>
> Reduce allocations on read and write



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (IGNITE-1845) .Net: Adopt portable API changes.

2015-11-10 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn commented on IGNITE-1845:
-

1,2) Fixed. 
3) Renamings in tests lead to hard-to-debug issues with portable type ids. 
Let's address them separately.

Please see PR 212: https://github.com/apache/ignite/pull/212

> .Net: Adopt portable API changes.
> -
>
> Key: IGNITE-1845
> URL: https://issues.apache.org/jira/browse/IGNITE-1845
> Project: Ignite
>  Issue Type: Task
>  Components: general, interop
>Affects Versions: ignite-1.4
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Blocker
> Fix For: 1.5
>
>
> Important API changes will be introduced as a part of IGNITE-950. 
> Once these changes are in place, we need to port them to .Net.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (IGNITE-1626) .Net: Create NuGet package.

2015-11-12 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn reassigned IGNITE-1626:
---

Assignee: Pavel  Tupitsyn

> .Net: Create NuGet package.
> ---
>
> Key: IGNITE-1626
> URL: https://issues.apache.org/jira/browse/IGNITE-1626
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: 1.5
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Blocker
> Fix For: 1.6
>
>
> *Overview*
> To boost usage of the product we need to distribute it using NuGet, which is 
> tightly integrated with Visual Studio.
> To achieve this several technical, infrastructure and marketing tasks must be 
> completed.
> *Technical tasks*
> - Apache Ignite.NET heavily depends on relative positions of compiled Java 
> classes. We must be able to apply different classpath search strategies 
> depending on packaging. This includes normal search in exploded build 
> directory, search in NuGet package, search in local Maven repo.
> - We need a way to select classpath search strategy. E.g. we can add special 
> marker resource to NuGet package so that DLL understands that it is 
> NuGet-based. More investigation here is reuqired.
> - Minimal set of required JARs should be defined. Currently we have over 
> >100Mb of Java libraries shipped with Ignite build. NuGet have limitation of 
> 30Mb per package. Only vital subset of JARs should be shipped.
> *Infrastructure tasks*
> - INFRA team must be asked about a place where NuGet package could be stored. 
> - Separate build plan should be created, producing NuGet artifacts.
> *Marketing tasks*
> - We need to produce clean, selling and intriguing header and description for 
> our package and attach logo.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (IGNITE-1894) .Net: Delegate support in the API via extension methods

2015-11-12 Thread Pavel Tupitsyn (JIRA)
Pavel  Tupitsyn created IGNITE-1894:
---

 Summary: .Net: Delegate support in the API via extension methods
 Key: IGNITE-1894
 URL: https://issues.apache.org/jira/browse/IGNITE-1894
 Project: Ignite
  Issue Type: Improvement
  Components: interop
Affects Versions: 1.1.4
Reporter: Pavel  Tupitsyn
 Fix For: 1.6


In many places we require a single-method interface implementation from the 
user:
{code:title=ICompute}
TRes Call(IComputeFunc clo);
{code}

All of these can be extended to accept a delegate:
{code:title=ICompute}
TRes Call(Func clo);
{code}

We can't replace interfaces with delegates completely (which is desirable), 
because it will take away serialization control from the user. So the interface 
approach has to stay as a primary.
Delegate support can be added via extension methods, which wrap provided 
delegates into a class that implements corresponding interface.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (IGNITE-1626) .Net: Create NuGet package.

2015-11-12 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn commented on IGNITE-1626:
-

TODO:
* Create nuspec file which includes all required files (dll, default config, 
jars)
* Investigate nuget on linux
* x86/x64?

> .Net: Create NuGet package.
> ---
>
> Key: IGNITE-1626
> URL: https://issues.apache.org/jira/browse/IGNITE-1626
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: 1.5
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Blocker
> Fix For: 1.6
>
>
> *Overview*
> To boost usage of the product we need to distribute it using NuGet, which is 
> tightly integrated with Visual Studio.
> To achieve this several technical, infrastructure and marketing tasks must be 
> completed.
> *Technical tasks*
> - Apache Ignite.NET heavily depends on relative positions of compiled Java 
> classes. We must be able to apply different classpath search strategies 
> depending on packaging. This includes normal search in exploded build 
> directory, search in NuGet package, search in local Maven repo.
> - We need a way to select classpath search strategy. E.g. we can add special 
> marker resource to NuGet package so that DLL understands that it is 
> NuGet-based. More investigation here is reuqired.
> - Minimal set of required JARs should be defined. Currently we have over 
> >100Mb of Java libraries shipped with Ignite build. NuGet have limitation of 
> 30Mb per package. Only vital subset of JARs should be shipped.
> *Infrastructure tasks*
> - INFRA team must be asked about a place where NuGet package could be stored. 
> - Separate build plan should be created, producing NuGet artifacts.
> *Marketing tasks*
> - We need to produce clean, selling and intriguing header and description for 
> our package and attach logo.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (IGNITE-1626) .Net: Create NuGet package.

2015-11-12 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn commented on IGNITE-1626:
-

x86/x64: Standard way is to have two different packages.
https://github.com/taliesins/neosis/pull/1

> .Net: Create NuGet package.
> ---
>
> Key: IGNITE-1626
> URL: https://issues.apache.org/jira/browse/IGNITE-1626
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: 1.5
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Blocker
> Fix For: 1.6
>
>
> *Overview*
> To boost usage of the product we need to distribute it using NuGet, which is 
> tightly integrated with Visual Studio.
> To achieve this several technical, infrastructure and marketing tasks must be 
> completed.
> *Technical tasks*
> - Apache Ignite.NET heavily depends on relative positions of compiled Java 
> classes. We must be able to apply different classpath search strategies 
> depending on packaging. This includes normal search in exploded build 
> directory, search in NuGet package, search in local Maven repo.
> - We need a way to select classpath search strategy. E.g. we can add special 
> marker resource to NuGet package so that DLL understands that it is 
> NuGet-based. More investigation here is reuqired.
> - Minimal set of required JARs should be defined. Currently we have over 
> >100Mb of Java libraries shipped with Ignite build. NuGet have limitation of 
> 30Mb per package. Only vital subset of JARs should be shipped.
> *Infrastructure tasks*
> - INFRA team must be asked about a place where NuGet package could be stored. 
> - Separate build plan should be created, producing NuGet artifacts.
> *Marketing tasks*
> - We need to produce clean, selling and intriguing header and description for 
> our package and attach logo.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (IGNITE-1626) .Net: Create NuGet package.

2015-11-12 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn edited comment on IGNITE-1626 at 11/12/15 12:53 PM:


TODO:
* Create nuspec file which includes all required files (dll, default config, 
jars)
* Create TC build that packs and publishes new nuget package
* x86/x64?


was (Author: ptupitsyn):
TODO:
* Create nuspec file which includes all required files (dll, default config, 
jars)
* Investigate nuget on linux
* x86/x64?

> .Net: Create NuGet package.
> ---
>
> Key: IGNITE-1626
> URL: https://issues.apache.org/jira/browse/IGNITE-1626
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: 1.5
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Blocker
> Fix For: 1.6
>
>
> *Overview*
> To boost usage of the product we need to distribute it using NuGet, which is 
> tightly integrated with Visual Studio.
> To achieve this several technical, infrastructure and marketing tasks must be 
> completed.
> *Technical tasks*
> - Apache Ignite.NET heavily depends on relative positions of compiled Java 
> classes. We must be able to apply different classpath search strategies 
> depending on packaging. This includes normal search in exploded build 
> directory, search in NuGet package, search in local Maven repo.
> - We need a way to select classpath search strategy. E.g. we can add special 
> marker resource to NuGet package so that DLL understands that it is 
> NuGet-based. More investigation here is reuqired.
> - Minimal set of required JARs should be defined. Currently we have over 
> >100Mb of Java libraries shipped with Ignite build. NuGet have limitation of 
> 30Mb per package. Only vital subset of JARs should be shipped.
> *Infrastructure tasks*
> - INFRA team must be asked about a place where NuGet package could be stored. 
> - Separate build plan should be created, producing NuGet artifacts.
> *Marketing tasks*
> - We need to produce clean, selling and intriguing header and description for 
> our package and attach logo.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (IGNITE-1906) .Net: Ignite configuration without Spring.

2015-11-13 Thread Pavel Tupitsyn (JIRA)
Pavel  Tupitsyn created IGNITE-1906:
---

 Summary: .Net: Ignite configuration without Spring.
 Key: IGNITE-1906
 URL: https://issues.apache.org/jira/browse/IGNITE-1906
 Project: Ignite
  Issue Type: Task
  Components: interop
Affects Versions: 1.1.4
Reporter: Pavel  Tupitsyn
Assignee: Pavel  Tupitsyn
 Fix For: 1.5


* Spring is alien for .NET developers.
* In-code configuration is often preferrable



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (IGNITE-1908) .Net: Query configuration

2015-11-13 Thread Pavel Tupitsyn (JIRA)
Pavel  Tupitsyn created IGNITE-1908:
---

 Summary: .Net: Query configuration
 Key: IGNITE-1908
 URL: https://issues.apache.org/jira/browse/IGNITE-1908
 Project: Ignite
  Issue Type: Sub-task
  Components: interop
Affects Versions: 1.1.4
Reporter: Pavel  Tupitsyn
 Fix For: 1.5


Configure queries in code.
This includes attribute-based configuration (similar to QuerySqlField in Java).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (IGNITE-1909) .Net: Discovery configuration

2015-11-13 Thread Pavel Tupitsyn (JIRA)
Pavel  Tupitsyn created IGNITE-1909:
---

 Summary: .Net: Discovery configuration
 Key: IGNITE-1909
 URL: https://issues.apache.org/jira/browse/IGNITE-1909
 Project: Ignite
  Issue Type: Sub-task
  Components: interop
Affects Versions: 1.1.4
Reporter: Pavel  Tupitsyn
 Fix For: 1.5


Configure discovery in code



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (IGNITE-1907) .Net: Cache configuration

2015-11-13 Thread Pavel Tupitsyn (JIRA)
Pavel  Tupitsyn created IGNITE-1907:
---

 Summary: .Net: Cache configuration
 Key: IGNITE-1907
 URL: https://issues.apache.org/jira/browse/IGNITE-1907
 Project: Ignite
  Issue Type: Sub-task
  Components: interop
Affects Versions: 1.1.4
Reporter: Pavel  Tupitsyn
 Fix For: 1.5


Configure cache in code



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (IGNITE-1906) .Net: Ignite configuration without Spring

2015-11-13 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn updated IGNITE-1906:

Summary: .Net: Ignite configuration without Spring  (was: .Net: Ignite 
configuration without Spring.)

> .Net: Ignite configuration without Spring
> -
>
> Key: IGNITE-1906
> URL: https://issues.apache.org/jira/browse/IGNITE-1906
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: 1.1.4
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.5
>
>
> * Spring is alien for .NET developers.
> * In-code configuration is often preferrable



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (IGNITE-1906) .Net: Ignite configuration without Spring

2015-11-13 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn updated IGNITE-1906:

Description: 
* Spring is alien for .NET developers
* In-code configuration is often preferrable

  was:
* Spring is alien for .NET developers.
* In-code configuration is often preferrable


> .Net: Ignite configuration without Spring
> -
>
> Key: IGNITE-1906
> URL: https://issues.apache.org/jira/browse/IGNITE-1906
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: 1.1.4
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.5
>
>
> * Spring is alien for .NET developers
> * In-code configuration is often preferrable



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (IGNITE-1896) .Net: Improve query API

2015-11-13 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn commented on IGNITE-1896:
-

1) I don't propose to remove current method altogether, I propose to complement 
it with more usable methods. If arguments are added, API won't be broken. We 
can keep simple methods for simple scenarios, and current approach for higher 
customization

2) There is a problem. When you use a dictionary, you have to specify generic 
arguments only once, in constructor. Then you never have to do it again:
{code}
var dict = new Dictionary();
dict[1] = new Person();  // No generic arguments
var person = dict[1];  // No generic arguments
{code}

Same with put/get in our cache, no problem there.
But with queries:
{code}
var cache = ignite.GetCache();  // generic arguments specified 
once, this is fine
var person = cache.Get(1);  // no generic arguments, good

// Why do we force user to specify typeof(Person)? Cache already knows this 
type. 
// And there will be an exception if the user specifies wrong type
var sqlQuery = cache.Query(new SqlQuery(typeof (Person), "Age > ?", 5));  
// Much cleaner, isn't it?
var sqlQuery = cache.SqlQuery("Age > ?", 5)

// Again, why do we force user to type so much? Generic arguments are known.
var scanQuery = cache.Query(new ScanQuery());
// Compare to:
var scanQuery = cache.ScanQuery();
{code}

Same issue we had with GetFuture. Too much typing, prone to errors, makes 
refactoring hard.

> .Net: Improve query API
> ---
>
> Key: IGNITE-1896
> URL: https://issues.apache.org/jira/browse/IGNITE-1896
> Project: Ignite
>  Issue Type: Improvement
>  Components: interop
>Affects Versions: 1.1.4
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.5
>
>
> Current API is very clumsy.
> Cache is generic, however we require the user to specify query type 
> explicitly.
> There are cases when query type is a string and/or is different from current 
> cache generic type, so the current API has to be kept.
> However, we should provide simple methods with generic inference:
> {code}
> IQueryCursor> ScanQuery(ICacheEntryFilter 
> filter);
> IQueryCursor> SqlQuery(string sql, params 
> object[] args);
> IQueryCursor> SqlQuery(string sql, bool local, 
> params object[] args);
> IQueryCursor> TextQuery(string text);
> IQueryCursor> TextQuery(string text, bool local);
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (IGNITE-1896) .Net: Improve query API

2015-11-13 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn edited comment on IGNITE-1896 at 11/13/15 8:44 AM:
---

1) I don't propose to remove current method altogether, I propose to complement 
it with more usable methods. If arguments are added, API won't be broken. We 
can keep simple methods for simple scenarios, and current approach for higher 
customization

2) There is a problem. When you use a dictionary, you have to specify generic 
arguments only once, in constructor. Then you never have to do it again, no 
chance to make a mistake:
{code}
var dict = new Dictionary();
dict[1] = new Person();  // No generic arguments
var person = dict[1];  // No generic arguments
{code}

Same with put/get in our cache, no problem there.
But with queries:
{code}
var cache = ignite.GetCache();  // generic arguments specified 
once, this is fine
var person = cache.Get(1);  // no generic arguments, good

// Why do we force user to specify typeof(Person)? Cache already knows this 
type. 
// And there will be an exception if the user specifies wrong type
var sqlQuery = cache.Query(new SqlQuery(typeof (Person), "Age > ?", 5));  
// Much cleaner, isn't it?
var sqlQuery = cache.SqlQuery("Age > ?", 5)

// Again, why do we force user to type so much? Generic arguments are known.
var scanQuery = cache.Query(new ScanQuery());
// Compare to:
var scanQuery = cache.ScanQuery();
{code}

Same issue we had with GetFuture. Too much typing, prone to errors, makes 
refactoring hard.


was (Author: ptupitsyn):
1) I don't propose to remove current method altogether, I propose to complement 
it with more usable methods. If arguments are added, API won't be broken. We 
can keep simple methods for simple scenarios, and current approach for higher 
customization

2) There is a problem. When you use a dictionary, you have to specify generic 
arguments only once, in constructor. Then you never have to do it again:
{code}
var dict = new Dictionary();
dict[1] = new Person();  // No generic arguments
var person = dict[1];  // No generic arguments
{code}

Same with put/get in our cache, no problem there.
But with queries:
{code}
var cache = ignite.GetCache();  // generic arguments specified 
once, this is fine
var person = cache.Get(1);  // no generic arguments, good

// Why do we force user to specify typeof(Person)? Cache already knows this 
type. 
// And there will be an exception if the user specifies wrong type
var sqlQuery = cache.Query(new SqlQuery(typeof (Person), "Age > ?", 5));  
// Much cleaner, isn't it?
var sqlQuery = cache.SqlQuery("Age > ?", 5)

// Again, why do we force user to type so much? Generic arguments are known.
var scanQuery = cache.Query(new ScanQuery());
// Compare to:
var scanQuery = cache.ScanQuery();
{code}

Same issue we had with GetFuture. Too much typing, prone to errors, makes 
refactoring hard.

> .Net: Improve query API
> ---
>
> Key: IGNITE-1896
> URL: https://issues.apache.org/jira/browse/IGNITE-1896
> Project: Ignite
>  Issue Type: Improvement
>  Components: interop
>Affects Versions: 1.1.4
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.5
>
>
> Current API is very clumsy.
> Cache is generic, however we require the user to specify query type 
> explicitly.
> There are cases when query type is a string and/or is different from current 
> cache generic type, so the current API has to be kept.
> However, we should provide simple methods with generic inference:
> {code}
> IQueryCursor> ScanQuery(ICacheEntryFilter 
> filter);
> IQueryCursor> SqlQuery(string sql, params 
> object[] args);
> IQueryCursor> SqlQuery(string sql, bool local, 
> params object[] args);
> IQueryCursor> TextQuery(string text);
> IQueryCursor> TextQuery(string text, bool local);
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (IGNITE-1902) NET: Adopt new marshalling flags.

2015-11-13 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn reassigned IGNITE-1902:
---

Assignee: Pavel  Tupitsyn

> NET: Adopt new marshalling flags.
> -
>
> Key: IGNITE-1902
> URL: https://issues.apache.org/jira/browse/IGNITE-1902
> Project: Ignite
>  Issue Type: Sub-task
>  Components: interop
>Affects Versions: ignite-1.4
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Critical
> Fix For: 1.5
>
>
> As a part of IGNITE-1816 I had to revisit our flags. Here are how they look 
> now:
> {code}
> /** Flag: user type. */
> public static final short FLAG_USR_TYP = 0x0001;
> /** Flag: schema exists. */
> public static final short FLAG_HAS_SCHEMA = 0x0002;
> /** Flag indicating that object has raw data. */
> public static final short FLAG_HAS_RAW = 0x0004;
> /** Flag: offsets take 1 byte. */
> public static final short FLAG_OFFSET_ONE_BYTE = 0x0008;
> /** Flag: offsets take 2 bytes. */
> public static final short FLAG_OFFSET_TWO_BYTES = 0x0010;
> /** Flag: compact footer, no field IDs. */
> public static final short FLAG_COMPACT_FOOTER = 0x0020;
> {code}
> The following changes must be made to NET:
> 1) When schema exists (i.e. at least on non-raw fieid was written), HAS_ 
> SCHEMA flag is set to true. This is the inversed version of what previously 
> was "RAW_ONLY".
> 2) When raw data exists, HAS_RAW flag is set to true. This flag should be 
> used to determine location of raw data. 
> *DO NOT USE % for this anymore!*
> 3) For now COMPACT_FOOTER should always be 0. If you receive an object with 
> this flag set to 1, an exception must be thrown.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (IGNITE-1902) NET: Adopt new marshalling flags.

2015-11-13 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn updated IGNITE-1902:

Description: 
As a part of IGNITE-1816 I had to revisit our flags. Here are how they look now:

{code}
/** Flag: user type. */
public static final short FLAG_USR_TYP = 0x0001;

/** Flag: schema exists. */
public static final short FLAG_HAS_SCHEMA = 0x0002;

/** Flag indicating that object has raw data. */
public static final short FLAG_HAS_RAW = 0x0004;

/** Flag: offsets take 1 byte. */
public static final short FLAG_OFFSET_ONE_BYTE = 0x0008;

/** Flag: offsets take 2 bytes. */
public static final short FLAG_OFFSET_TWO_BYTES = 0x0010;

/** Flag: compact footer, no field IDs. */
public static final short FLAG_COMPACT_FOOTER = 0x0020;
{code}

The following changes must be made to .NET:
1) When schema exists (i.e. at least on non-raw fieid was written), HAS_ SCHEMA 
flag is set to true. This is the inversed version of what previously was 
"RAW_ONLY".
2) When raw data exists, HAS_RAW flag is set to true. This flag should be used 
to determine location of raw data. 
*DO NOT USE % for this anymore!*
3) For now COMPACT_FOOTER should always be 0. If you receive an object with 
this flag set to 1, an exception must be thrown.

  was:
As a part of IGNITE-1816 I had to revisit our flags. Here are how they look now:

{code}
/** Flag: user type. */
public static final short FLAG_USR_TYP = 0x0001;

/** Flag: schema exists. */
public static final short FLAG_HAS_SCHEMA = 0x0002;

/** Flag indicating that object has raw data. */
public static final short FLAG_HAS_RAW = 0x0004;

/** Flag: offsets take 1 byte. */
public static final short FLAG_OFFSET_ONE_BYTE = 0x0008;

/** Flag: offsets take 2 bytes. */
public static final short FLAG_OFFSET_TWO_BYTES = 0x0010;

/** Flag: compact footer, no field IDs. */
public static final short FLAG_COMPACT_FOOTER = 0x0020;
{code}

The following changes must be made to CPP:
1) When schema exists (i.e. at least on non-raw fieid was written), HAS_ SCHEMA 
flag is set to true. This is the inversed version of what previously was 
"RAW_ONLY".
2) When raw data exists, HAS_RAW flag is set to true. This flag should be used 
to determine location of raw data. 
*DO NOT USE % for this anymore!*
3) For now COMPACT_FOOTER should always be 0. If you receive an object with 
this flag set to 1, an exception must be thrown.


> NET: Adopt new marshalling flags.
> -
>
> Key: IGNITE-1902
> URL: https://issues.apache.org/jira/browse/IGNITE-1902
> Project: Ignite
>  Issue Type: Sub-task
>  Components: interop
>Affects Versions: ignite-1.4
>Reporter: Vladimir Ozerov
>Priority: Critical
> Fix For: 1.5
>
>
> As a part of IGNITE-1816 I had to revisit our flags. Here are how they look 
> now:
> {code}
> /** Flag: user type. */
> public static final short FLAG_USR_TYP = 0x0001;
> /** Flag: schema exists. */
> public static final short FLAG_HAS_SCHEMA = 0x0002;
> /** Flag indicating that object has raw data. */
> public static final short FLAG_HAS_RAW = 0x0004;
> /** Flag: offsets take 1 byte. */
> public static final short FLAG_OFFSET_ONE_BYTE = 0x0008;
> /** Flag: offsets take 2 bytes. */
> public static final short FLAG_OFFSET_TWO_BYTES = 0x0010;
> /** Flag: compact footer, no field IDs. */
> public static final short FLAG_COMPACT_FOOTER = 0x0020;
> {code}
> The following changes must be made to .NET:
> 1) When schema exists (i.e. at least on non-raw fieid was written), HAS_ 
> SCHEMA flag is set to true. This is the inversed version of what previously 
> was "RAW_ONLY".
> 2) When raw data exists, HAS_RAW flag is set to true. This flag should be 
> used to determine location of raw data. 
> *DO NOT USE % for this anymore!*
> 3) For now COMPACT_FOOTER should always be 0. If you receive an object with 
> this flag set to 1, an exception must be thrown.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (IGNITE-1915) .Net: Ignite as Entity Framework Second-Level Cache

2015-11-13 Thread Pavel Tupitsyn (JIRA)
Pavel  Tupitsyn created IGNITE-1915:
---

 Summary: .Net: Ignite as Entity Framework Second-Level Cache
 Key: IGNITE-1915
 URL: https://issues.apache.org/jira/browse/IGNITE-1915
 Project: Ignite
  Issue Type: Task
  Components: interop
Affects Versions: 1.1.4
Reporter: Pavel  Tupitsyn
 Fix For: 1.6


Entity Framework is #1 ORM for .NET
We should provide easy solution to boost Entity Framework performance with 
Ignite.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (IGNITE-1626) .Net: Create NuGet package.

2015-11-14 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn reassigned IGNITE-1626:
---

Assignee: Pavel  Tupitsyn  (was: Vladimir Ozerov)

> .Net: Create NuGet package.
> ---
>
> Key: IGNITE-1626
> URL: https://issues.apache.org/jira/browse/IGNITE-1626
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: 1.5
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Blocker
> Fix For: 1.6
>
>
> *Overview*
> To boost usage of the product we need to distribute it using NuGet, which is 
> tightly integrated with Visual Studio.
> To achieve this several technical, infrastructure and marketing tasks must be 
> completed.
> *Technical tasks*
> - Apache Ignite.NET heavily depends on relative positions of compiled Java 
> classes. We must be able to apply different classpath search strategies 
> depending on packaging. This includes normal search in exploded build 
> directory, search in NuGet package, search in local Maven repo.
> - We need a way to select classpath search strategy. E.g. we can add special 
> marker resource to NuGet package so that DLL understands that it is 
> NuGet-based. More investigation here is reuqired.
> - Minimal set of required JARs should be defined. Currently we have over 
> >100Mb of Java libraries shipped with Ignite build. NuGet have limitation of 
> 30Mb per package. Only vital subset of JARs should be shipped.
> *Infrastructure tasks*
> - INFRA team must be asked about a place where NuGet package could be stored. 
> - Separate build plan should be created, producing NuGet artifacts.
> *Marketing tasks*
> - We need to produce clean, selling and intriguing header and description for 
> our package and attach logo.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (IGNITE-1907) .Net: Cache configuration

2015-11-16 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn reassigned IGNITE-1907:
---

Assignee: Pavel  Tupitsyn

> .Net: Cache configuration
> -
>
> Key: IGNITE-1907
> URL: https://issues.apache.org/jira/browse/IGNITE-1907
> Project: Ignite
>  Issue Type: Sub-task
>  Components: interop
>Affects Versions: 1.1.4
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.5
>
>
> Configure cache in code



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (IGNITE-1924) Incomplete marshaller cache rebalancing causes Grid hangs

2015-11-16 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn updated IGNITE-1924:

Summary: Incomplete marshaller cache rebalancing causes Grid hangs  (was: 
Uncompleme marshaller cashe rebalancing cause Grid hangs)

> Incomplete marshaller cache rebalancing causes Grid hangs
> -
>
> Key: IGNITE-1924
> URL: https://issues.apache.org/jira/browse/IGNITE-1924
> Project: Ignite
>  Issue Type: Bug
>Reporter: Anton Vinogradov
>Assignee: Anton Vinogradov
>Priority: Critical
>
> End of the log.
> [11:49:32] :   [org.apache.ignite:ignite-core] [11:49:32,947][INFO 
> ][exchange-worker-#220584%tcp.IgniteCacheSslStartStopSelfTest3%][GridDhtPartitionDemander]
>   Starting rebalancing 
> [cache=ignite-marshaller-sys-cache, mode=SYNC, 
> fromNode=108bffdb-1c1e-49aa-9525-b434784fa001, partitionsCount=7, 
> topology=AffinityTopologyVersion [topVer=594, minorTopVer=0], updateSeq=1]
> [11:49:32] :   [org.apache.ignite:ignite-core] [11:49:32,962][INFO 
> ][exchange-worker-#220584%tcp.IgniteCacheSslStartStopSelfTest3%][GridDhtPartitionDemander]
>   Starting rebalancing 
> [cache=ignite-marshaller-sys-cache, mode=SYNC, 
> fromNode=20660c29-91a1-4279-9dc1-88d192bc6002, partitionsCount=6, 
> topology=AffinityTopologyVersion [topVer=594, minorTopVer=0], updateSeq=1]
> [11:49:32] :   [org.apache.ignite:ignite-core] [11:49:32,962][INFO 
> ][exchange-worker-#220584%tcp.IgniteCacheSslStartStopSelfTest3%][GridDhtPartitionDemander]
>   Starting rebalancing 
> [cache=ignite-marshaller-sys-cache, mode=SYNC, 
> fromNode=00b3a75a-074d-46a5-a158-3956c0ec4000, partitionsCount=7, 
> topology=AffinityTopologyVersion [topVer=594, minorTopVer=0], updateSeq=1]
> [11:49:32] :   [org.apache.ignite:ignite-core] [11:49:32,963][INFO 
> ][ignite-#220587%marshaller-cache-tcp.IgniteCacheSslStartStopSelfTest3%][GridDhtPartitionDemander]
>   Completed rebalancing 
> [cache=ignite-marshaller-sys-cache, 
> fromNode=00b3a75a-074d-46a5-a158-3956c0ec4000, 
> topology=AffinityTopologyVersion [topVer=594, minorTopVer=0], time=21 ms]
> [11:49:32] :   [org.apache.ignite:ignite-core] [11:49:32,963][INFO 
> ][ignite-#220586%marshaller-cache-tcp.IgniteCacheSslStartStopSelfTest3%][GridDhtPartitionDemander]
>   Completed rebalancing 
> [cache=ignite-marshaller-sys-cache, 
> fromNode=108bffdb-1c1e-49aa-9525-b434784fa001, 
> topology=AffinityTopologyVersion [topVer=594, minorTopVer=0], time=21 ms]
> Hang on:
> [11:51:56] :   [org.apache.ignite:ignite-core] Thread 
> [name="ignite-#220562%sys-tcp.IgniteCacheSslStartStopSelfTest3%", id=287517, 
> state=WAITING, blockCnt=0, waitCnt=3]
> [11:51:56] :   [org.apache.ignite:ignite-core] Lock 
> [object=o.a.i.i.processors.cache.distributed.dht.preloader.GridDhtPartitionDemander$RebalanceFuture@b402f89,
>  ownerName=null, ownerId=-1]
> [11:51:56] :   [org.apache.ignite:ignite-core] at 
> sun.misc.Unsafe.park(Native Method)
> [11:51:56] :   [org.apache.ignite:ignite-core] at 
> java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
> [11:51:56] :   [org.apache.ignite:ignite-core] at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)
> [11:51:56] :   [org.apache.ignite:ignite-core] at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:994)
> [11:51:56] :   [org.apache.ignite:ignite-core] at 
> java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1303)
> [11:51:56] :   [org.apache.ignite:ignite-core] at 
> o.a.i.i.util.future.GridFutureAdapter.get0(GridFutureAdapter.java:157)
> [11:51:56] :   [org.apache.ignite:ignite-core] at 
> o.a.i.i.util.future.GridFutureAdapter.get(GridFutureAdapter.java:115)
> [11:51:56] :   [org.apache.ignite:ignite-core] at 
> o.a.i.i.processors.cache.distributed.dht.preloader.GridDhtPartitionDemander.waitForCacheRebalancing(GridDhtPartitionDemander.java:265)
> [11:51:56] :   [org.apache.ignite:ignite-core] at 
> o.a.i.i.processors.cache.distributed.dht.preloader.GridDhtPartitionDemander.access$400(GridDhtPartitionDemander.java:85)
> [11:51:56] :   [org.apache.ignite:ignite-core] at 
> o.a.i.i.processors.cache.distributed.dht.preloader.GridDhtPartitionDemander$3.call(GridDhtPartitionDemander.java:323)
> [11:51:56] :   [org.apache.ignite:ignite-core] at 
> o.a.i.i.processors.cache.distributed.dht.preloader.GridDhtPartitionDemander$3.call(GridDhtPartitionDemander.java:320)
> [11:51:56] :   

[jira] [Created] (IGNITE-1921) .Net: Handle leak during ComputeJobHolder serialization

2015-11-16 Thread Pavel Tupitsyn (JIRA)
Pavel  Tupitsyn created IGNITE-1921:
---

 Summary: .Net: Handle leak during ComputeJobHolder serialization
 Key: IGNITE-1921
 URL: https://issues.apache.org/jira/browse/IGNITE-1921
 Project: Ignite
  Issue Type: Bug
  Components: interop
Affects Versions: 1.1.4
Reporter: Pavel  Tupitsyn
Assignee: Pavel  Tupitsyn
Priority: Blocker
 Fix For: 1.5


See where ComputeJobHolder is constructed and serialized. In case of 
non-serializable user job there is a handle leak.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (IGNITE-1626) .Net: Create NuGet package.

2015-11-16 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn reassigned IGNITE-1626:
---

Assignee: Vladimir Ozerov  (was: Pavel  Tupitsyn)

> .Net: Create NuGet package.
> ---
>
> Key: IGNITE-1626
> URL: https://issues.apache.org/jira/browse/IGNITE-1626
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: 1.5
>Reporter: Vladimir Ozerov
>Assignee: Vladimir Ozerov
>Priority: Blocker
> Fix For: 1.5
>
>
> *Overview*
> To boost usage of the product we need to distribute it using NuGet, which is 
> tightly integrated with Visual Studio.
> To achieve this several technical, infrastructure and marketing tasks must be 
> completed.
> *Technical tasks*
> - Apache Ignite.NET heavily depends on relative positions of compiled Java 
> classes. We must be able to apply different classpath search strategies 
> depending on packaging. This includes normal search in exploded build 
> directory, search in NuGet package, search in local Maven repo.
> - We need a way to select classpath search strategy. E.g. we can add special 
> marker resource to NuGet package so that DLL understands that it is 
> NuGet-based. More investigation here is reuqired.
> - Minimal set of required JARs should be defined. Currently we have over 
> >100Mb of Java libraries shipped with Ignite build. NuGet have limitation of 
> 30Mb per package. Only vital subset of JARs should be shipped.
> *Infrastructure tasks*
> - INFRA team must be asked about a place where NuGet package could be stored. 
> - Separate build plan should be created, producing NuGet artifacts.
> *Marketing tasks*
> - We need to produce clean, selling and intriguing header and description for 
> our package and attach logo.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Issue Comment Deleted] (IGNITE-1626) .Net: Create NuGet package.

2015-11-12 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn updated IGNITE-1626:

Comment: was deleted

(was: TODO:
* Create nuspec file which includes all required files (dll, default config, 
jars)
* Create TC build that packs and publishes new nuget package
* x86/x64?)

> .Net: Create NuGet package.
> ---
>
> Key: IGNITE-1626
> URL: https://issues.apache.org/jira/browse/IGNITE-1626
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: 1.5
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Blocker
> Fix For: 1.6
>
>
> *Overview*
> To boost usage of the product we need to distribute it using NuGet, which is 
> tightly integrated with Visual Studio.
> To achieve this several technical, infrastructure and marketing tasks must be 
> completed.
> *Technical tasks*
> - Apache Ignite.NET heavily depends on relative positions of compiled Java 
> classes. We must be able to apply different classpath search strategies 
> depending on packaging. This includes normal search in exploded build 
> directory, search in NuGet package, search in local Maven repo.
> - We need a way to select classpath search strategy. E.g. we can add special 
> marker resource to NuGet package so that DLL understands that it is 
> NuGet-based. More investigation here is reuqired.
> - Minimal set of required JARs should be defined. Currently we have over 
> >100Mb of Java libraries shipped with Ignite build. NuGet have limitation of 
> 30Mb per package. Only vital subset of JARs should be shipped.
> *Infrastructure tasks*
> - INFRA team must be asked about a place where NuGet package could be stored. 
> - Separate build plan should be created, producing NuGet artifacts.
> *Marketing tasks*
> - We need to produce clean, selling and intriguing header and description for 
> our package and attach logo.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (IGNITE-1880) .Net: Intermittent "Invalid global JNI handle passed to DeleteGlobalRef"

2015-11-10 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn commented on IGNITE-1880:
-

LocalToGlobal call was missing from ContinuousQueryGetInitialQueryCursor.

> .Net: Intermittent "Invalid global JNI handle passed to DeleteGlobalRef"
> 
>
> Key: IGNITE-1880
> URL: https://issues.apache.org/jira/browse/IGNITE-1880
> Project: Ignite
>  Issue Type: Bug
>  Components: interop
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.5
>
>
> Example of a failure: http://94.72.60.102/viewLog.html?buildId=565513
> {code}
> [18:07:47] :   [Step 10/11] FATAL ERROR in native method: Invalid global JNI 
> handle passed to DeleteGlobalRef
> [18:07:47] :   [Step 10/11] FATAL ERROR in native method: Bad global or local 
> ref passed to JNI
> {code}
> UnmanagedTarget class releases JNI handles in finalizer.
> Finalizers run at non-deterministic time. Due to some irrelevant changes 
> there may be failures sometimes. Need to ensure that we do not release the 
> same handle twice, and that we pass correct handles from unmanaged code.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (IGNITE-1626) .Net: Create NuGet package.

2015-11-12 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn edited comment on IGNITE-1626 at 11/12/15 4:17 PM:
---

* nuspec file created to include all necessary JAR files, 
Apache.Ignite.Core.dll, and default config file
* version is being set automatically from assemblyinfo
* IGNITE_HOME resolve logic adjusted to detect NuGet deployment
* Package tested locally: no extra steps from the user are required (besides 
Java installation). Install package => Ignition.Start works.

* TC config created to build nupkg: 
http://94.72.60.102/viewType.html?buildTypeId=IgniteBuildsAndUploads_IgniteBuildFabricOnlyNet

> INFRA team must be asked about a place where NuGet package could be stored.
No need for this. Package is created by TC task, tested, and then pushed to 
nuget.org.

What is left:
* proper wording in summary and description
* icon


was (Author: ptupitsyn):
* nuspec file created to include all necessary JAR files, 
Apache.Ignite.Core.dll, and default config file
* version is being set automatically from assemblyinfo
* IGNITE_HOME resolve logic adjusted to detect NuGet deployment
* Package tested locally: no extra steps from the user are required (besides 
Java installation). Install package => Ignition.Start works.

* TC config created to build nupkg: 
http://94.72.60.102/viewType.html?buildTypeId=IgniteBuildsAndUploads_IgniteBuildFabricOnlyNet

> .Net: Create NuGet package.
> ---
>
> Key: IGNITE-1626
> URL: https://issues.apache.org/jira/browse/IGNITE-1626
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: 1.5
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Blocker
> Fix For: 1.6
>
>
> *Overview*
> To boost usage of the product we need to distribute it using NuGet, which is 
> tightly integrated with Visual Studio.
> To achieve this several technical, infrastructure and marketing tasks must be 
> completed.
> *Technical tasks*
> - Apache Ignite.NET heavily depends on relative positions of compiled Java 
> classes. We must be able to apply different classpath search strategies 
> depending on packaging. This includes normal search in exploded build 
> directory, search in NuGet package, search in local Maven repo.
> - We need a way to select classpath search strategy. E.g. we can add special 
> marker resource to NuGet package so that DLL understands that it is 
> NuGet-based. More investigation here is reuqired.
> - Minimal set of required JARs should be defined. Currently we have over 
> >100Mb of Java libraries shipped with Ignite build. NuGet have limitation of 
> 30Mb per package. Only vital subset of JARs should be shipped.
> *Infrastructure tasks*
> - INFRA team must be asked about a place where NuGet package could be stored. 
> - Separate build plan should be created, producing NuGet artifacts.
> *Marketing tasks*
> - We need to produce clean, selling and intriguing header and description for 
> our package and attach logo.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (IGNITE-1896) .Net: Improve query API

2015-11-12 Thread Pavel Tupitsyn (JIRA)
Pavel  Tupitsyn created IGNITE-1896:
---

 Summary: .Net: Improve query API
 Key: IGNITE-1896
 URL: https://issues.apache.org/jira/browse/IGNITE-1896
 Project: Ignite
  Issue Type: Improvement
  Components: interop
Affects Versions: 1.1.4
Reporter: Pavel  Tupitsyn
Assignee: Pavel  Tupitsyn
 Fix For: 1.5


Current API is very clumsy.
Cache is generic, however we require the user to specify query type explicitly.
There are cases when query type is a string and/or is different from current 
cache generic type, so the current API has to be kept.

However, we should provide simple methods with generic inference:
{code}
IQueryCursor> ScanQuery(ICacheEntryFilter 
filter);
IQueryCursor> SqlQuery(string sql, params object[] 
args);
IQueryCursor> SqlQuery(string sql, bool local, 
params object[] args);
IQueryCursor> TextQuery(string text);
IQueryCursor> TextQuery(string text, bool local);
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (IGNITE-1933) .Net: GetOrCreateCache overloads with CacheConfiguration

2015-11-17 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn updated IGNITE-1933:

Assignee: (was: Pavel  Tupitsyn)

> .Net: GetOrCreateCache overloads with CacheConfiguration
> 
>
> Key: IGNITE-1933
> URL: https://issues.apache.org/jira/browse/IGNITE-1933
> Project: Ignite
>  Issue Type: Sub-task
>  Components: interop
>Affects Versions: 1.1.4
>Reporter: Pavel  Tupitsyn
> Fix For: 1.6
>
>
> Add GetOrCreateCache overloads that accept CacheConfiguration, similar to 
> Ignite in Java.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (IGNITE-1933) .Net: GetOrCreateCache overloads with CacheConfiguration

2015-11-17 Thread Pavel Tupitsyn (JIRA)
Pavel  Tupitsyn created IGNITE-1933:
---

 Summary: .Net: GetOrCreateCache overloads with CacheConfiguration
 Key: IGNITE-1933
 URL: https://issues.apache.org/jira/browse/IGNITE-1933
 Project: Ignite
  Issue Type: Sub-task
  Components: interop
Affects Versions: 1.1.4
Reporter: Pavel  Tupitsyn
Assignee: Pavel  Tupitsyn
 Fix For: 1.6


Add GetOrCreateCache overloads that accept CacheConfiguration, similar to 
Ignite in Java.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (IGNITE-1907) .Net: Cache configuration

2015-11-17 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn updated IGNITE-1907:

Description: Configure cache in code  (was: * Configure cache in code
* Add GetOrCreateCache overloads)

> .Net: Cache configuration
> -
>
> Key: IGNITE-1907
> URL: https://issues.apache.org/jira/browse/IGNITE-1907
> Project: Ignite
>  Issue Type: Sub-task
>  Components: interop
>Affects Versions: 1.1.4
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.5
>
>
> Configure cache in code



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (IGNITE-1933) .Net: GetOrCreateCache overloads with CacheConfiguration

2015-11-17 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn reassigned IGNITE-1933:
---

Assignee: Pavel  Tupitsyn

> .Net: GetOrCreateCache overloads with CacheConfiguration
> 
>
> Key: IGNITE-1933
> URL: https://issues.apache.org/jira/browse/IGNITE-1933
> Project: Ignite
>  Issue Type: Sub-task
>  Components: interop
>Affects Versions: 1.1.4
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.6
>
>
> Add GetOrCreateCache overloads that accept CacheConfiguration, similar to 
> Ignite in Java.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (IGNITE-1908) .Net: Query configuration

2015-11-17 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn commented on IGNITE-1908:
-

Stopping this because new query API (QueryEntity) is not yet finalized.

> .Net: Query configuration
> -
>
> Key: IGNITE-1908
> URL: https://issues.apache.org/jira/browse/IGNITE-1908
> Project: Ignite
>  Issue Type: Sub-task
>  Components: interop
>Affects Versions: 1.1.4
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.6
>
>
> Configure queries in code.
> This includes attribute-based configuration (similar to QuerySqlField in 
> Java).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (IGNITE-1934) .Net: Store tests broken after keepPortableInStore renaming

2015-11-17 Thread Pavel Tupitsyn (JIRA)
Pavel  Tupitsyn created IGNITE-1934:
---

 Summary: .Net: Store tests broken after keepPortableInStore 
renaming
 Key: IGNITE-1934
 URL: https://issues.apache.org/jira/browse/IGNITE-1934
 Project: Ignite
  Issue Type: Bug
  Components: interop
Affects Versions: 1.1.4
Reporter: Pavel  Tupitsyn
Assignee: Pavel  Tupitsyn
Priority: Blocker
 Fix For: 1.5


Need to fix .net test configs



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (IGNITE-1907) .Net: Cache configuration

2015-11-17 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn updated IGNITE-1907:

Description: 
* Configure cache in code
* Add GetOrCreateCache overloads

  was:Configure cache in code


> .Net: Cache configuration
> -
>
> Key: IGNITE-1907
> URL: https://issues.apache.org/jira/browse/IGNITE-1907
> Project: Ignite
>  Issue Type: Sub-task
>  Components: interop
>Affects Versions: 1.1.4
>Reporter: Pavel  Tupitsyn
>Assignee: Vladimir Ozerov
> Fix For: 1.5
>
>
> * Configure cache in code
> * Add GetOrCreateCache overloads



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (IGNITE-1880) .Net: Intermittent "Invalid global JNI handle passed to DeleteGlobalRef"

2015-11-10 Thread Pavel Tupitsyn (JIRA)
Pavel  Tupitsyn created IGNITE-1880:
---

 Summary: .Net: Intermittent "Invalid global JNI handle passed to 
DeleteGlobalRef"
 Key: IGNITE-1880
 URL: https://issues.apache.org/jira/browse/IGNITE-1880
 Project: Ignite
  Issue Type: Bug
  Components: interop
Affects Versions: 1.5
Reporter: Pavel  Tupitsyn
Assignee: Pavel  Tupitsyn
 Fix For: 1.5


Example of a failure: http://94.72.60.102/viewLog.html?buildId=565513

{code}
[18:07:47] : [Step 10/11] FATAL ERROR in native method: Invalid global JNI 
handle passed to DeleteGlobalRef
[18:07:47] : [Step 10/11] FATAL ERROR in native method: Bad global or local 
ref passed to JNI
{code}

UnmanagedTarget class releases JNI handles in finalizer.
Finalizers run at non-deterministic time. Due to some irrelevant changes there 
may be failures sometimes. Need to ensure that we do not release the same 
handle twice, and that we pass correct handles from unmanaged code.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (IGNITE-1881) .Net: Rename "portable" to "binary/binarizable"

2015-11-10 Thread Pavel Tupitsyn (JIRA)
Pavel  Tupitsyn created IGNITE-1881:
---

 Summary: .Net: Rename "portable" to "binary/binarizable"
 Key: IGNITE-1881
 URL: https://issues.apache.org/jira/browse/IGNITE-1881
 Project: Ignite
  Issue Type: Task
  Components: interop
Affects Versions: 1.5
Reporter: Pavel  Tupitsyn
Assignee: Pavel  Tupitsyn
 Fix For: 1.5


https://issues.apache.org/jira/browse/IGNITE-1845 addressed these renames in 
Core, need to do the same in the rest of the codebase.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (IGNITE-1873) .Net: Investigate BinaryFormatter vs DataContractSerializer vs XmlSerializer

2015-11-09 Thread Pavel Tupitsyn (JIRA)
Pavel  Tupitsyn created IGNITE-1873:
---

 Summary: .Net: Investigate BinaryFormatter vs 
DataContractSerializer vs XmlSerializer
 Key: IGNITE-1873
 URL: https://issues.apache.org/jira/browse/IGNITE-1873
 Project: Ignite
  Issue Type: Improvement
  Components: interop
Affects Versions: 1.6
Reporter: Pavel  Tupitsyn
Priority: Minor
 Fix For: 1.6


DataContractSerializer and XmlSerializer, in binary mode (BinaryWriter), are 
said to be faster and produce more compact results than BinaryFormatter.

We can consider changing it in SerializableObjectHolder. Need to run benchmarks 
first.

Comprehensive feature comparison: 
http://manski.net/2014/10/net-serializers-comparison-chart/



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Closed] (IGNITE-1414) .Net: support async/await in the API via extension methods

2015-11-03 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn closed IGNITE-1414.
---

> .Net: support async/await in the API via extension methods
> --
>
> Key: IGNITE-1414
> URL: https://issues.apache.org/jira/browse/IGNITE-1414
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: 1.1.4
>Reporter: Vladimir Ozerov
>
> Currently to get awaitable target (Task) for async operation, user have to do 
> the following (pseudocode):
> {code}
> target.ExecuteOperation();
> IFuture fut = target.CurrentFuture();
> Task task = fut.ToTask();
> {code}
> This is too complex. We need to think how to minimize this boilerplate code. 
> Extensions + lambdas appears to be good candidates for this. E.g.:
> {code}
> Task task = target.DoAsync(t => t.Execute());
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (IGNITE-1563) .Net: Implement "atomic" data structures.

2015-11-03 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn reassigned IGNITE-1563:
---

Assignee: Pavel  Tupitsyn

> .Net: Implement "atomic" data structures.
> -
>
> Key: IGNITE-1563
> URL: https://issues.apache.org/jira/browse/IGNITE-1563
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.6
>
>
> This includes:
> atomicSequence;
> atomicStamped;
> atomicReference



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (IGNITE-1417) .Net: Implement distributed queue.

2015-11-03 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn updated IGNITE-1417:

Summary: .Net: Implement distributed queue.  (was: .Net: Implement 
desitributed queue.)

> .Net: Implement distributed queue.
> --
>
> Key: IGNITE-1417
> URL: https://issues.apache.org/jira/browse/IGNITE-1417
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: 1.1.4
>Reporter: Vladimir Ozerov
>Priority: Critical
>




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (IGNITE-1835) .Net: Use thread-local pool to store schemas in PortableWriter

2015-11-03 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn edited comment on IGNITE-1835 at 11/3/15 1:09 PM:
--

I'm not sure about shrinking. If the array has come to a certain size, it 
happened for a reason, and it will probably happen again. Doing 2 reallocations 
of an array on each write will perform poorly. And we are talking about small 
savings here. In Java there is a 256*4=1KB limit for the buffer.

IGNITE-1814 has been merged to 1282, and I've merged from 1282.


was (Author: ptupitsyn):
I'm not sure about shrinking. If the array has come to a certain size, it 
happened for a reason, and it will probably happen again. Doing 2 reallocations 
of an array on each write will perform poorly. 

And we are talking about laughable savings here. In Java there is a 256*4=1KB 
limit for the buffer.

> .Net: Use thread-local pool to store schemas in PortableWriter
> --
>
> Key: IGNITE-1835
> URL: https://issues.apache.org/jira/browse/IGNITE-1835
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.5
>
>
> Avoid array allocations in PortableWriter by keeping a single ThreadLocal 
> array to store schema fields.
> See SchemaHolder in Java.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (IGNITE-1835) .Net: Use thread-local pool to store schemas in PortableWriter

2015-11-03 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn commented on IGNITE-1835:
-

I'm not sure about shrinking. If the array has come to a certain size, it 
happened for a reason, and it will probably happen again. Doing 2 reallocations 
of an array on each write will perform poorly. 

And we are talking about laughable savings here. In Java there is a 256*4=1KB 
limit for the buffer.

> .Net: Use thread-local pool to store schemas in PortableWriter
> --
>
> Key: IGNITE-1835
> URL: https://issues.apache.org/jira/browse/IGNITE-1835
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.5
>
>
> Avoid array allocations in PortableWriter by keeping a single ThreadLocal 
> array to store schema fields.
> See SchemaHolder in Java.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (IGNITE-1768) .Net: Review portable configuration on Java side.

2015-10-30 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn commented on IGNITE-1768:
-

* LifecycleBean
* CacheStore
* TypeConfiguration

> .Net: Review portable configuration on Java side.
> -
>
> Key: IGNITE-1768
> URL: https://issues.apache.org/jira/browse/IGNITE-1768
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: ignite-1.4
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Critical
> Fix For: 1.5
>
>
> I am concerned why for some objects we pass assembly + type, while for others 
> type only.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (IGNITE-1768) .Net: Review portable configuration on Java side.

2015-10-30 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn reassigned IGNITE-1768:
---

Assignee: Pavel  Tupitsyn

> .Net: Review portable configuration on Java side.
> -
>
> Key: IGNITE-1768
> URL: https://issues.apache.org/jira/browse/IGNITE-1768
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: ignite-1.4
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Critical
> Fix For: 1.5
>
>
> I am concerned why for some objects we pass assembly + type, while for others 
> type only.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (IGNITE-1768) .Net: Review portable configuration on Java side.

2015-10-30 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn edited comment on IGNITE-1768 at 10/30/15 9:43 AM:
---

* LifecycleBean
* CacheStore
* TypeConfiguration
* IdMapper/NameMapper
* IPortables

PlatformDotNetPortableTypeConfiguration has nameMapper, idMapper, serializer 
which are type names without an assembly.


was (Author: ptupitsyn):
* LifecycleBean
* CacheStore
* TypeConfiguration
* IdMapper/NameMapper
* IPortables

> .Net: Review portable configuration on Java side.
> -
>
> Key: IGNITE-1768
> URL: https://issues.apache.org/jira/browse/IGNITE-1768
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: ignite-1.4
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Critical
> Fix For: 1.5
>
>
> I am concerned why for some objects we pass assembly + type, while for others 
> type only.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (IGNITE-1818) .Net: compact footer offsets

2015-10-30 Thread Pavel Tupitsyn (JIRA)
Pavel  Tupitsyn created IGNITE-1818:
---

 Summary: .Net: compact footer offsets
 Key: IGNITE-1818
 URL: https://issues.apache.org/jira/browse/IGNITE-1818
 Project: Ignite
  Issue Type: Sub-task
  Components: interop
Affects Versions: 1.5
Reporter: Pavel  Tupitsyn
Assignee: Pavel  Tupitsyn
 Fix For: 1.5


Implement protocol changes in .NET



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (IGNITE-1858) .Net: Update project settings to support VS2010-VS2015

2015-11-05 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn updated IGNITE-1858:

Summary: .Net: Update project settings to support VS2010-VS2015  (was: 
.Net: Update project settings to support VS2015)

> .Net: Update project settings to support VS2010-VS2015
> --
>
> Key: IGNITE-1858
> URL: https://issues.apache.org/jira/browse/IGNITE-1858
> Project: Ignite
>  Issue Type: Task
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.5
>
>
> I've opened Ignite.NET solution in VS2015 and noticed a couple of issues:
> * Benchmark performance in Release mode is very low. Turns out "optimize 
> code" is unchecked in project settings. For some reason, this checkbox does 
> not affect benchmarks in VS2013, but the difference is dramatic in VS2015.
> * Language version is not set, so VS2015 allows C# 6 features like null 
> propagation (and R# suggests these changes). But using these features will 
> break compilation in VS2013 and earlier. So we should set language version to 
> C# 4.0



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (IGNITE-1858) .Net: Update project settings to support VS2015

2015-11-05 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn updated IGNITE-1858:

Affects Version/s: 1.5

> .Net: Update project settings to support VS2015
> ---
>
> Key: IGNITE-1858
> URL: https://issues.apache.org/jira/browse/IGNITE-1858
> Project: Ignite
>  Issue Type: Task
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
>
> I've opened Ignite.NET solution in VS2015 and noticed a couple of issues:
> * Benchmark performance in Release mode is very low. Turns out "optimize 
> code" is unchecked in project settings. For some reason, this checkbox does 
> not affect benchmarks in VS2013, but the difference is dramatic in VS2015.
> * Language version is not set, so VS2015 allows C# 6 features like null 
> propagation (and R# suggests these changes). But using these features will 
> break compilation in VS2013 and earlier. So we should set language version to 
> C# 4.0



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (IGNITE-1858) .Net: Update project settings to support VS2015

2015-11-05 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn updated IGNITE-1858:

Fix Version/s: 1.5

> .Net: Update project settings to support VS2015
> ---
>
> Key: IGNITE-1858
> URL: https://issues.apache.org/jira/browse/IGNITE-1858
> Project: Ignite
>  Issue Type: Task
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.5
>
>
> I've opened Ignite.NET solution in VS2015 and noticed a couple of issues:
> * Benchmark performance in Release mode is very low. Turns out "optimize 
> code" is unchecked in project settings. For some reason, this checkbox does 
> not affect benchmarks in VS2013, but the difference is dramatic in VS2015.
> * Language version is not set, so VS2015 allows C# 6 features like null 
> propagation (and R# suggests these changes). But using these features will 
> break compilation in VS2013 and earlier. So we should set language version to 
> C# 4.0



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (IGNITE-1858) .Net: Update project settings to support VS2015

2015-11-05 Thread Pavel Tupitsyn (JIRA)
Pavel  Tupitsyn created IGNITE-1858:
---

 Summary: .Net: Update project settings to support VS2015
 Key: IGNITE-1858
 URL: https://issues.apache.org/jira/browse/IGNITE-1858
 Project: Ignite
  Issue Type: Task
Reporter: Pavel  Tupitsyn
Assignee: Pavel  Tupitsyn


I've opened Ignite.NET solution in VS2015 and noticed a couple of issues:
* Benchmark performance in Release mode is very low. Turns out "optimize code" 
is unchecked in project settings. For some reason, this checkbox does not 
affect benchmarks in VS2013, but the difference is dramatic in VS2015.
* Language version is not set, so VS2015 allows C# 6 features like null 
propagation (and R# suggests these changes). But using these features will 
break compilation in VS2013 and earlier. So we should set language version to 
C# 4.0



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (IGNITE-1858) .Net: Update project settings to support VS2010-VS2015

2015-11-05 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn updated IGNITE-1858:

Description: 
I've opened Ignite.NET solution in VS2015 and noticed a couple of issues:
* Benchmark performance in Release mode is very low. Turns out "optimize code" 
is unchecked in project settings. For some reason, this checkbox does not 
affect benchmarks in VS2013, but the difference is dramatic in VS2015.
* Language version is not set, so VS2015 allows C# 6 features like null 
propagation (and R# suggests these changes). But using these features will 
break compilation in VS2013 and earlier. So we should set language version to 
C# 4.0

And current solution file can't be opened in VS2010. Need to fix version in 
header.

  was:
I've opened Ignite.NET solution in VS2015 and noticed a couple of issues:
* Benchmark performance in Release mode is very low. Turns out "optimize code" 
is unchecked in project settings. For some reason, this checkbox does not 
affect benchmarks in VS2013, but the difference is dramatic in VS2015.
* Language version is not set, so VS2015 allows C# 6 features like null 
propagation (and R# suggests these changes). But using these features will 
break compilation in VS2013 and earlier. So we should set language version to 
C# 4.0


> .Net: Update project settings to support VS2010-VS2015
> --
>
> Key: IGNITE-1858
> URL: https://issues.apache.org/jira/browse/IGNITE-1858
> Project: Ignite
>  Issue Type: Task
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.5
>
>
> I've opened Ignite.NET solution in VS2015 and noticed a couple of issues:
> * Benchmark performance in Release mode is very low. Turns out "optimize 
> code" is unchecked in project settings. For some reason, this checkbox does 
> not affect benchmarks in VS2013, but the difference is dramatic in VS2015.
> * Language version is not set, so VS2015 allows C# 6 features like null 
> propagation (and R# suggests these changes). But using these features will 
> break compilation in VS2013 and earlier. So we should set language version to 
> C# 4.0
> And current solution file can't be opened in VS2010. Need to fix version in 
> header.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (IGNITE-1858) .Net: Update project settings to support VS2010-VS2015

2015-11-05 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn commented on IGNITE-1858:
-

Turns out that VS2010 does not support langVersion switch. So we'll have to 
skip this change.

> .Net: Update project settings to support VS2010-VS2015
> --
>
> Key: IGNITE-1858
> URL: https://issues.apache.org/jira/browse/IGNITE-1858
> Project: Ignite
>  Issue Type: Task
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.5
>
>
> I've opened Ignite.NET solution in VS2015 and noticed a couple of issues:
> * Benchmark performance in Release mode is very low. Turns out "optimize 
> code" is unchecked in project settings. For some reason, this checkbox does 
> not affect benchmarks in VS2013, but the difference is dramatic in VS2015.
> * Language version is not set, so VS2015 allows C# 6 features like null 
> propagation (and R# suggests these changes). But using these features will 
> break compilation in VS2013 and earlier. So we should set language version to 
> C# 4.0
> And current solution file can't be opened in VS2010. Need to fix version in 
> header.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (IGNITE-1858) .Net: Update project settings to support VS2010-VS2015

2015-11-05 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn commented on IGNITE-1858:
-

Changes made:
* fix sln file to support VS2010
* fix a couple of generic inference issues for VS2010 compiler
* Enable code optimization in all projects in Release

Verified in VS2010, VS2013, VS2015. Code compiles and runs, benchmark results 
are equally fine. TC is ok.

> .Net: Update project settings to support VS2010-VS2015
> --
>
> Key: IGNITE-1858
> URL: https://issues.apache.org/jira/browse/IGNITE-1858
> Project: Ignite
>  Issue Type: Task
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.5
>
>
> I've opened Ignite.NET solution in VS2015 and noticed a couple of issues:
> * Benchmark performance in Release mode is very low. Turns out "optimize 
> code" is unchecked in project settings. For some reason, this checkbox does 
> not affect benchmarks in VS2013, but the difference is dramatic in VS2015.
> * Language version is not set, so VS2015 allows C# 6 features like null 
> propagation (and R# suggests these changes). But using these features will 
> break compilation in VS2013 and earlier. So we should set language version to 
> C# 4.0
> And current solution file can't be opened in VS2010. Need to fix version in 
> header.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Closed] (IGNITE-1737) .Net: Review naming and xmldoc in IPortableTypeDescriptor

2015-11-05 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn closed IGNITE-1737.
---

> .Net: Review naming and xmldoc in IPortableTypeDescriptor
> -
>
> Key: IGNITE-1737
> URL: https://issues.apache.org/jira/browse/IGNITE-1737
> Project: Ignite
>  Issue Type: Improvement
>  Components: interop
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.6
>
>
> * NameConverter & Mapper properties should be renamed
> * documentation needs to be more detaileed



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Resolved] (IGNITE-1737) .Net: Review naming and xmldoc in IPortableTypeDescriptor

2015-11-05 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn resolved IGNITE-1737.
-
Resolution: Fixed
  Assignee: Pavel  Tupitsyn

Done as part of IGNITE-1834

> .Net: Review naming and xmldoc in IPortableTypeDescriptor
> -
>
> Key: IGNITE-1737
> URL: https://issues.apache.org/jira/browse/IGNITE-1737
> Project: Ignite
>  Issue Type: Improvement
>  Components: interop
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.6
>
>
> * NameConverter & Mapper properties should be renamed
> * documentation needs to be more detaileed



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (IGNITE-1845) .Net: Adopt portable API changes.

2015-11-05 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn reassigned IGNITE-1845:
---

Assignee: Pavel  Tupitsyn

> .Net: Adopt portable API changes.
> -
>
> Key: IGNITE-1845
> URL: https://issues.apache.org/jira/browse/IGNITE-1845
> Project: Ignite
>  Issue Type: Task
>  Components: general, interop
>Affects Versions: ignite-1.4
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Blocker
> Fix For: 1.5
>
>
> Important API changes will be introduced as a part of IGNITE-950. 
> Once these changes are in place, we need to port them to .Net.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (IGNITE-1785) .Net: Improve PlatformMemory/PortableStream performance and memory usage

2015-11-05 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn reassigned IGNITE-1785:
---

Assignee: (was: Pavel  Tupitsyn)

> .Net: Improve PlatformMemory/PortableStream performance and memory usage
> 
>
> Key: IGNITE-1785
> URL: https://issues.apache.org/jira/browse/IGNITE-1785
> Project: Ignite
>  Issue Type: Improvement
>  Components: interop
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
> Fix For: 1.6
>
>
> * PlatformMemory is just a single "long _memPtr" and can be easily converted 
> to a struct to reduce allocations (it is allocated a lot)
> * PlatformMemoryStream works with PlatformMemory.Length and Capacity 
> indirectly. By employing a struct approach from 
> https://issues.apache.org/jira/browse/IGNITE-1428 we can work with Length and 
> Capacity directly, which may be faster, and will eliminate the need for 
> SyncronizeInput/Output calls.
> * PlatformMemoryStream is allocated even more often than PlatformMemory, need 
> to investigate whether it can also be a struct. See how List<>.GetEnumerator 
> works, which is a struct.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (IGNITE-1737) .Net: Review naming and xmldoc in IPortableTypeDescriptor

2015-11-05 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn reassigned IGNITE-1737:
---

Assignee: (was: Pavel  Tupitsyn)

> .Net: Review naming and xmldoc in IPortableTypeDescriptor
> -
>
> Key: IGNITE-1737
> URL: https://issues.apache.org/jira/browse/IGNITE-1737
> Project: Ignite
>  Issue Type: Improvement
>  Components: interop
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
> Fix For: 1.6
>
>
> * NameConverter & Mapper properties should be renamed
> * documentation needs to be more detaileed



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (IGNITE-1428) .Net: Use struct with fixed layout for InteropMemory operations.

2015-11-05 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn reassigned IGNITE-1428:
---

Assignee: Pavel  Tupitsyn

> .Net: Use struct with fixed layout for InteropMemory operations.
> 
>
> Key: IGNITE-1428
> URL: https://issues.apache.org/jira/browse/IGNITE-1428
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: 1.1.4
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Minor
>
> This will decrease probability of bugs caused by pointer arithmetics.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Resolved] (IGNITE-1791) .Net: Improve Task-based async API efficiency with TaskCompletionSource

2015-11-02 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn resolved IGNITE-1791.
-
Resolution: Fixed

Done as part of IGNITE-1652.

> .Net: Improve Task-based async API efficiency with TaskCompletionSource
> ---
>
> Key: IGNITE-1791
> URL: https://issues.apache.org/jira/browse/IGNITE-1791
> Project: Ignite
>  Issue Type: Improvement
>  Components: interop
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.6
>
>
> Currently we use TaskFactory.FromAsync to create tasks and return them from 
> API. This requires implementing IAsyncResult, which has a heavyweight 
> WaitHandle inside. TaskFactory then uses 
> ThreadPool.RegisterWaitForSingleObject to wait on that handle and set task 
> completion. 
> Creating WaitHandle and waiting on it are redundant extra steps.
> [TaskCompletionSource|https://msdn.microsoft.com/en-us/library/dd449174(v=vs.100).aspx]
>  allows lighter-weight approach.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Closed] (IGNITE-1791) .Net: Improve Task-based async API efficiency with TaskCompletionSource

2015-11-02 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn closed IGNITE-1791.
---

> .Net: Improve Task-based async API efficiency with TaskCompletionSource
> ---
>
> Key: IGNITE-1791
> URL: https://issues.apache.org/jira/browse/IGNITE-1791
> Project: Ignite
>  Issue Type: Improvement
>  Components: interop
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
>Assignee: Pavel  Tupitsyn
> Fix For: 1.6
>
>
> Currently we use TaskFactory.FromAsync to create tasks and return them from 
> API. This requires implementing IAsyncResult, which has a heavyweight 
> WaitHandle inside. TaskFactory then uses 
> ThreadPool.RegisterWaitForSingleObject to wait on that handle and set task 
> completion. 
> Creating WaitHandle and waiting on it are redundant extra steps.
> [TaskCompletionSource|https://msdn.microsoft.com/en-us/library/dd449174(v=vs.100).aspx]
>  allows lighter-weight approach.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (IGNITE-1835) .Net: Use thread-local pool to store schemas in PortableWriter

2015-11-02 Thread Pavel Tupitsyn (JIRA)
Pavel  Tupitsyn created IGNITE-1835:
---

 Summary: .Net: Use thread-local pool to store schemas in 
PortableWriter
 Key: IGNITE-1835
 URL: https://issues.apache.org/jira/browse/IGNITE-1835
 Project: Ignite
  Issue Type: Task
  Components: interop
Affects Versions: 1.5
Reporter: Pavel  Tupitsyn
Assignee: Pavel  Tupitsyn
 Fix For: 1.5


Avoid array allocations in PortableWriter by keeping a single ThreadLocal array 
to store schema fields.
See SchemaHolder in Java.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (IGNITE-1834) .Net: Remove MetadataEnabled property

2015-11-02 Thread Pavel Tupitsyn (JIRA)
Pavel  Tupitsyn created IGNITE-1834:
---

 Summary: .Net: Remove MetadataEnabled property
 Key: IGNITE-1834
 URL: https://issues.apache.org/jira/browse/IGNITE-1834
 Project: Ignite
  Issue Type: Task
  Components: interop
Affects Versions: 1.5
Reporter: Pavel  Tupitsyn
Assignee: Pavel  Tupitsyn
 Fix For: 1.5


MetadataEnabled is going to be removed from Ignite, need to reflect this in 
.Net.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (IGNITE-1866) .Net: turn SerializableObjectHolder & DateTimeHolder into structs

2015-11-06 Thread Pavel Tupitsyn (JIRA)
Pavel  Tupitsyn created IGNITE-1866:
---

 Summary: .Net: turn SerializableObjectHolder & DateTimeHolder into 
structs
 Key: IGNITE-1866
 URL: https://issues.apache.org/jira/browse/IGNITE-1866
 Project: Ignite
  Issue Type: Improvement
  Components: interop
Affects Versions: 1.5
Reporter: Pavel  Tupitsyn
Assignee: Pavel  Tupitsyn
 Fix For: 1.5


Reduce allocations on read and write



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (IGNITE-1863) IgniteAtomicReference.compareAndSet does not work for nulls

2015-11-05 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn updated IGNITE-1863:

Description: 
IgniteAtomicReference allows null as a value, but when current value is null, 
compareAndSet does not work:

{code}
IgniteAtomicReference atomic = 
ignite.atomicReference(atomicName, null, true);

assertEquals(null, atomic.get());

boolean res = atomic.compareAndSet(null, "x");

assertTrue(res);// fail
assertEquals("x", atomic.get());// fail

{code}

  was:
IgniteAtomicReference allows null as a value, but when current value is null, 
compareAndSet does not work:

{code}
IgniteAtomicReference atomic = 
ignite.atomicReference(atomicName, null, true);

assertEquals(null, atomic.get());

boolean res = atomic.compareAndSet(null, "x");

assertEquals(null, atomic.get());   // ok
assertTrue(res);// fail
assertEquals("x", atomic.get());// fail

{code}


> IgniteAtomicReference.compareAndSet does not work for nulls
> ---
>
> Key: IGNITE-1863
> URL: https://issues.apache.org/jira/browse/IGNITE-1863
> Project: Ignite
>  Issue Type: Bug
>  Components: data structures
>Affects Versions: 1.5
>Reporter: Pavel  Tupitsyn
> Fix For: 1.5
>
>
> IgniteAtomicReference allows null as a value, but when current value is null, 
> compareAndSet does not work:
> {code}
> IgniteAtomicReference atomic = 
> ignite.atomicReference(atomicName, null, true);
> assertEquals(null, atomic.get());
> boolean res = atomic.compareAndSet(null, "x");
> assertTrue(res);// fail
> assertEquals("x", atomic.get());// fail
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (IGNITE-1863) IgniteAtomicReference.compareAndSet does not work for nulls

2015-11-05 Thread Pavel Tupitsyn (JIRA)
Pavel  Tupitsyn created IGNITE-1863:
---

 Summary: IgniteAtomicReference.compareAndSet does not work for 
nulls
 Key: IGNITE-1863
 URL: https://issues.apache.org/jira/browse/IGNITE-1863
 Project: Ignite
  Issue Type: Bug
  Components: data structures
Affects Versions: 1.5
Reporter: Pavel  Tupitsyn
 Fix For: 1.5


IgniteAtomicReference allows null as a value, but when current value is null, 
compareAndSet does not work:

{code}
IgniteAtomicReference atomic = 
ignite.atomicReference(atomicName, null, true);

assertEquals(null, atomic.get());

boolean res = atomic.compareAndSet(null, "x");

assertEquals(null, atomic.get());   // ok
assertTrue(res);// fail
assertEquals("x", atomic.get());// fail

{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (IGNITE-1768) .Net: Review portable configuration on Java side.

2015-10-30 Thread Pavel Tupitsyn (JIRA)

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

Pavel  Tupitsyn edited comment on IGNITE-1768 at 10/30/15 9:35 AM:
---

* LifecycleBean
* CacheStore
* TypeConfiguration
* IdMapper/NameMapper
* IPortables


was (Author: ptupitsyn):
* LifecycleBean
* CacheStore
* TypeConfiguration

> .Net: Review portable configuration on Java side.
> -
>
> Key: IGNITE-1768
> URL: https://issues.apache.org/jira/browse/IGNITE-1768
> Project: Ignite
>  Issue Type: Task
>  Components: interop
>Affects Versions: ignite-1.4
>Reporter: Vladimir Ozerov
>Assignee: Pavel  Tupitsyn
>Priority: Critical
> Fix For: 1.5
>
>
> I am concerned why for some objects we pass assembly + type, while for others 
> type only.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


  1   2   3   4   5   6   7   8   9   10   >