[jira] [Created] (IGNITE-1292) Platforms .Net: Move handle registry to Ignite.
Vladimir Ozerov created IGNITE-1292: --- Summary: Platforms .Net: Move handle registry to Ignite. Key: IGNITE-1292 URL: https://issues.apache.org/jira/browse/IGNITE-1292 Project: Ignite Issue Type: Sub-task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.4 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1780) .Net: DateTime is seialized incorrectly.
Vladimir Ozerov created IGNITE-1780: --- Summary: .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 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] [Created] (IGNITE-1768) .Net: Review portable configuration on Java side.
Vladimir Ozerov created IGNITE-1768: --- Summary: .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 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-1770) Portables: implement constant-time field lookup.
Vladimir Ozerov created IGNITE-1770: --- Summary: 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 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] [Created] (IGNITE-1803) Optimize random portable field lookup.
Vladimir Ozerov created IGNITE-1803: --- Summary: Optimize random portable field lookup. Key: IGNITE-1803 URL: https://issues.apache.org/jira/browse/IGNITE-1803 Project: Ignite Issue Type: Task Components: general Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Assignee: Vladimir Ozerov Priority: Critical Fix For: 1.5 This ticket should be implemented after IGNITE-1770 is ready because it relies on constant-time lookup feature availability. The following optimizations should be performed: 1) Create method "PortableFieldReader createFieldReader()" on PortableObject interface. This will minimize garbage and let us get rid from unnecessary header parsing. 2) Field position is calculated as follows: - Lookup ID mapper for type, get ID; - Lookup schemas for type; - Lookup schema for schema ID; - Lookup field offset for field ID inside schema. 4 (!!!) map lookups! It should work as follows: - Lookup ID mapper and schemas for type; - Lookup field offset using (schema ID + field ID). The latter lookup should be performed from highly optimized long->int map, not from conventional HashMap. 3) Normal field scan is faster than constant-time lookup when amount of fields is about 10. We need to have two field search strategies and pick the most performant one based on field count (which can be derived in advance from object footer size). -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1779) .Net: Evaluate BinaryFormatter overhead for generic collections.
Vladimir Ozerov created IGNITE-1779: --- Summary: .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 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] [Created] (IGNITE-1759) .Net: Guid read/write is not platform-safe.
Vladimir Ozerov created IGNITE-1759: --- Summary: .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 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-1902) NET: Adopt new marshalling flags.
Vladimir Ozerov created IGNITE-1902: --- Summary: 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 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. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1917) Portables: micro optimizations.
Vladimir Ozerov created IGNITE-1917: --- Summary: Portables: micro optimizations. Key: IGNITE-1917 URL: https://issues.apache.org/jira/browse/IGNITE-1917 Project: Ignite Issue Type: Task Components: general, interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Assignee: Vladimir Ozerov Priority: Critical Fix For: 1.5 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1882) Rename BinaryTypeIdMapper to BinaryIdMapper
Vladimir Ozerov created IGNITE-1882: --- Summary: Rename BinaryTypeIdMapper to BinaryIdMapper Key: IGNITE-1882 URL: https://issues.apache.org/jira/browse/IGNITE-1882 Project: Ignite Issue Type: Task Components: general, interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Assignee: Vladimir Ozerov Fix For: 1.5 BinaryTypeIdMapper is wrong name because it suggests type ID mapping, while it maps both type and field IDs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1815) Portables: optionally do not write field IDs to object footer.
Vladimir Ozerov created IGNITE-1815: --- Summary: Portables: optionally do not write field IDs to object footer. Key: IGNITE-1815 URL: https://issues.apache.org/jira/browse/IGNITE-1815 Project: Ignite Issue Type: Task Components: general Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Assignee: Vladimir Ozerov Priority: Critical Fix For: 1.5 1) Implement compact schema write mode - instead of writting it in object footer, we can store field IDs in REPLICATED metadata cache. When object is written in compact format, 0x10h flag must be set. 2) Add optional global switch on configuration to choose between compact (default) and non-compact modes. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1816) Portables: optionally do not write field IDs to object footer.
Vladimir Ozerov created IGNITE-1816: --- Summary: Portables: optionally do not write field IDs to object footer. Key: IGNITE-1816 URL: https://issues.apache.org/jira/browse/IGNITE-1816 Project: Ignite Issue Type: Task Components: general Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Assignee: Vladimir Ozerov Priority: Critical Fix For: 1.5 1) Implement compact schema write mode - instead of writting it in object footer, we can store field IDs in REPLICATED metadata cache. When object is written in compact format, 0x10h flag must be set. 2) Add optional global switch on configuration to choose between compact (default) and non-compact modes. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1838) Implement fast-path deserialization of common types in PortableObjectImpl.
Vladimir Ozerov created IGNITE-1838: --- Summary: Implement fast-path deserialization of common types in PortableObjectImpl. Key: IGNITE-1838 URL: https://issues.apache.org/jira/browse/IGNITE-1838 Project: Ignite Issue Type: Task Components: general, interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Assignee: Vladimir Ozerov Fix For: 1.5 See PortableObjectImpl and PortableObjectOffheapImpl, method "fieldByOrder". We need to add fast-path deserializtion of the following types: DECIMAL STRING UUID DATE TIMESTAMP -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1846) CPP: Adopt portable API changes.
Vladimir Ozerov created IGNITE-1846: --- Summary: CPP: Adopt portable API changes. Key: IGNITE-1846 URL: https://issues.apache.org/jira/browse/IGNITE-1846 Project: Ignite Issue Type: Task Components: general, interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov 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 CPP. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1845) .Net: Adopt poratble API changes.
Vladimir Ozerov created IGNITE-1845: --- Summary: .Net: Adopt poratble 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 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] [Created] (IGNITE-1847) Portables: add "field" method to PortableMetadata.
Vladimir Ozerov created IGNITE-1847: --- Summary: Portables: add "field" method to PortableMetadata. Key: IGNITE-1847 URL: https://issues.apache.org/jira/browse/IGNITE-1847 Project: Ignite Issue Type: Task Components: general, interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: 1.5 1) Add "PortableField field()" method to PortableMetadata. Currently it is located on "PortableObject", which is wrong. 2) PortableObject "field" and "hasField" methods must go through cached PortableFields. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1862) CPP: Fix string handling
Vladimir Ozerov created IGNITE-1862: --- Summary: CPP: Fix string handling Key: IGNITE-1862 URL: https://issues.apache.org/jira/browse/IGNITE-1862 Project: Ignite Issue Type: Task Components: interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: 1.5 Currently we write strings using 2 bytes for each simbol. This way we are trying to mimic UTF16, which is natural for Java. Instead of doing this weird things, we should: 1) Tell user that we expect UTF8 string. 2) Write strings as plain char*. Once it is done, we will be able to remove "convertStrings" property from PortableMarshaller. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1694) .Net: More efficient way to call native methods.
Vladimir Ozerov created IGNITE-1694: --- Summary: .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 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] [Created] (IGNITE-1693) .Net: Rename IMessage.Send(IEnumerable, object) method.
Vladimir Ozerov created IGNITE-1693: --- Summary: .Net: Rename IMessage.Send(IEnumerable, object) method. Key: IGNITE-1693 URL: https://issues.apache.org/jira/browse/IGNITE-1693 Project: Ignite Issue Type: Task Components: interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: 1.5 As some of integral .Net types implement "IEnumerable", we should rename the method {code} IMessage.Send(IEnumerable, object); {code} to {code} IMessage.SendAll(IEnumerable, object); {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1638) IGFS: Review IgfsImpl.checkConflictWithPrimary() method.
Vladimir Ozerov created IGNITE-1638: --- Summary: IGFS: Review IgfsImpl.checkConflictWithPrimary() method. Key: IGNITE-1638 URL: https://issues.apache.org/jira/browse/IGNITE-1638 Project: Ignite Issue Type: Task Components: hadoop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Fix For: ignite-1.5 This method looks very suspicious to me. It checks whether secondary file system contains any file under the same path as IGFS primary direcotry. If yes - an exception is thrown. But why? What is the use case we are trying to resolve with this? We need to re-think this approach and decide whether to leave it or remove it. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1637) IGFS: Consistent properties propagation.
Vladimir Ozerov created IGNITE-1637: --- Summary: IGFS: Consistent properties propagation. Key: IGNITE-1637 URL: https://issues.apache.org/jira/browse/IGNITE-1637 Project: Ignite Issue Type: Task Components: hadoop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 IGFS has methods accepting properties map. E.g., create, append, mkdirs. How we should apply these properties? Two strategies are possible: 1) Apply there properties only to leaf node, and set defaults to parent nodes. 2) Apply there properties to all created nodes. Lets take HDFS as a reference for this. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1639) IGFS: IgfsMetaManager() contains duplicated "delete" method.
Vladimir Ozerov created IGNITE-1639: --- Summary: IGFS: IgfsMetaManager() contains duplicated "delete" method. Key: IGNITE-1639 URL: https://issues.apache.org/jira/browse/IGNITE-1639 Project: Ignite Issue Type: Task Components: hadoop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Fix For: ignite-1.6 Our metamanager has two "delete" methods which do roughly the same thing: delete leafs and update parent listing. But one method remove collection of leafs, while another remove only single leaf. Do we really need to have them as separate methods? Looks like them can be merged into one. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1636) CPP: Add read/write methods with iterators for maps.
Vladimir Ozerov created IGNITE-1636: --- Summary: CPP: Add read/write methods with iterators for maps. Key: IGNITE-1636 URL: https://issues.apache.org/jira/browse/IGNITE-1636 Project: Ignite Issue Type: Task Components: interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Fix For: ignite-1.5 This needs to be done in the same way as we did it for collections. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1643) Cleanup platform communication protocol.
Vladimir Ozerov created IGNITE-1643: --- Summary: Cleanup platform communication protocol. Key: IGNITE-1643 URL: https://issues.apache.org/jira/browse/IGNITE-1643 Project: Ignite Issue Type: Task Components: interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Priority: Blocker Fix For: 1.5 At the moment we have lots of .Net-specific objects travelling over a wire. E.g., user's .Net job is wrapped in some holder, then serialized and passed to Java, then Java pass this object over wire, etc.. This approach have two drawbacks: 1) Adds unnecessary overhead on wrapping. 2) Java have no chance to understand what it is passing. If we unwrap all .Net objects and pass them to Java as is, we can achieve slightly better performance. But what is *much more* important - we will be able to unleash possibilities for very cool transparent interoperability between platforms. E.g., .Net will be able to execute Java services, Java node will be able to execute .Net/CPP jobs if it has matching portable class implemented, etc.. Alternatively we can leave wrappers as is, but implement them in Java/CPP as well. This is not very good idea because of performance overhead. The feature *must be implemented in 1.5* because now we are free to change protocol as we want. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1650) Add ability to specify thread pool for IgniteFuture listen/chain methods.
Vladimir Ozerov created IGNITE-1650: --- Summary: Add ability to specify thread pool for IgniteFuture listen/chain methods. Key: IGNITE-1650 URL: https://issues.apache.org/jira/browse/IGNITE-1650 Project: Ignite Issue Type: Task Components: general Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: 1.6 Closures passed to IgniteFuture listen() and chain() methods are executed either in the same thread if future is completed, or in a completion thread (usually this is a thread from one of Ignite pools). This enforces restrictions on what user can do in closures. He cannot use call operations, he cannot call any Ignite operations. Otherwise deadlocks or starvation could occur. To fix that we should allow user to pass optional thread pool where passed closure should be executed. This already done in Java 8 CompletableFuture. We should do almost the same. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1651) Add version to portable object header.
Vladimir Ozerov created IGNITE-1651: --- Summary: Add version to portable object header. Key: IGNITE-1651 URL: https://issues.apache.org/jira/browse/IGNITE-1651 Project: Ignite Issue Type: Task Components: general, interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Assignee: Vladimir Ozerov Priority: Blocker Fix For: 1.5 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1655) Decouple Date and Timestamp types.
Vladimir Ozerov created IGNITE-1655: --- Summary: Decouple Date and Timestamp types. Key: IGNITE-1655 URL: https://issues.apache.org/jira/browse/IGNITE-1655 Project: Ignite Issue Type: Task Components: general, interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Assignee: Vladimir Ozerov Priority: Critical Fix For: 1.5 Date and Timestamp types must be decoupled from each other: 1) New type ID must be introduced for Timestamp 2) New read/write methods should be added to portable readers, writers and builder. 3) Configuration parameter "isUseTimestamp" should be removed. 4) .Net DateTime type should be re-mapped to Timestamp. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1654) .Net: Ensure consistent "keepPortable" behavior.
Vladimir Ozerov created IGNITE-1654: --- Summary: .Net: Ensure consistent "keepPortable" behavior. Key: IGNITE-1654 URL: https://issues.apache.org/jira/browse/IGNITE-1654 Project: Ignite Issue Type: Task Components: interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: 1.5 We need to ensure that "keep portable" concept is a) Consistent; b) Exists for all logical units where it is necessary. Lets split "keep portable" behavior in two scenarios: 1) Client mode. This is when client (caller) operates on portable objects. Example: ICache.Get(...); 2) Server mode. This is when some server side object (caller) operates on portable objects. Example: a remote service which should not deserialize passed arguments and operate on portables instead. Looks like both cases can be handled using the same "keep portable" flag on related logical unit. Logical units affected: 1) Compute - at the very least closures can be executed in this mode; 2) Cache; 3) Data streamer; 4) Data structures: atomic stamped, atmoc reference; 5) Cache events; 6) Messages; 7) Services. Probably we should introduce a kind of "IKeepPortableEnabled" (or so) interface, which will have a method "T WithKeepPortable()". This way users will be able to easily understand that "keep portable" semantics is applicable. Lets split it into several children tickets if necessary. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1626) .Net: Create NuGet package.
Vladimir Ozerov created IGNITE-1626: --- Summary: .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: ignite-1.5 Reporter: Vladimir Ozerov Priority: Blocker Fix For: ignite-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] [Created] (IGNITE-1629) .Net: Introduce native logging facility.
Vladimir Ozerov created IGNITE-1629: --- Summary: .Net: Introduce native logging facility. Key: IGNITE-1629 URL: https://issues.apache.org/jira/browse/IGNITE-1629 Project: Ignite Issue Type: Task Components: interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Priority: Blocker Fix For: ignite-1.6 This is pretty serious usability issue. Currently Ignite produces logs using Java "log4j" library. While naural for Java environment, this is somewhat alien for Windows users. We need to investigate ability to hack into normal .Net logging frameworks. This include both native Windows APIs (e.g. events), and widely-used .Net loggers. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1630) .Net: Create LINQ adapter for queries.
Vladimir Ozerov created IGNITE-1630: --- Summary: .Net: Create LINQ adapter for queries. Key: IGNITE-1630 URL: https://issues.apache.org/jira/browse/IGNITE-1630 Project: Ignite Issue Type: Task Components: interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.6 *NOTE*: Is targeted for 1.6, but might be moved forward in case of tight release schedule. SQL queries are one of the most frequently used features in data grids. And .Net comes with a very nice LINQ concept. We need to investigate and idea of own LINQ adapter which will delegate to Ignite native query API. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1628) .Net: Ensure that .Net works on Mono platform.
Vladimir Ozerov created IGNITE-1628: --- Summary: .Net: Ensure that .Net works on Mono platform. Key: IGNITE-1628 URL: https://issues.apache.org/jira/browse/IGNITE-1628 Project: Ignite Issue Type: Task Components: interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.6 *NOTE*: Targeted for 1.6, but could be moved even further in case of tight release schedule. *Goal* As Microsoft is moving .Net towards open standards, Mono receives more an more attention. We need to ensure that our product works fine on this platform. This includes both Windows, Linux and (possibly) Mac environments. *Tasks* - Ensure that Ignite works with Mono on Windows. This is the easiest task because we only need to re-compile .Net part. - Ensure that Ignite works with Mono on Linux. This will require alternate build procedure because CPP recompilation will be required as well. - Create relevant TC builds. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1663) .Net: Check why node ID is nullable in IEvents and IMessaging interfaces.
Vladimir Ozerov created IGNITE-1663: --- Summary: .Net: Check why node ID is nullable in IEvents and IMessaging interfaces. Key: IGNITE-1663 URL: https://issues.apache.org/jira/browse/IGNITE-1663 Project: Ignite Issue Type: Task Components: interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: 1.5 It is not clear why we operate on node as "Guid?". Are there any use cases when it could be null? If no, we must change signature to "Guid". -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1646) .Net: IgniteGuid must be serializable and portable.
Vladimir Ozerov created IGNITE-1646: --- Summary: .Net: IgniteGuid must be serializable and portable. Key: IGNITE-1646 URL: https://issues.apache.org/jira/browse/IGNITE-1646 Project: Ignite Issue Type: Bug Components: interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Priority: Blocker Fix For: 1.5 1) User must be able to pass IgniteGuid over a wire using serializable semantics when serialized manually by user. 2) On the other hand, it must be portable for correct passing between Java and .Net. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1950) Binary format: Arrays and collections use handles differently in Java and platforms.
Vladimir Ozerov created IGNITE-1950: --- Summary: Binary format: Arrays and collections use handles differently in Java and platforms. Key: IGNITE-1950 URL: https://issues.apache.org/jira/browse/IGNITE-1950 Project: Ignite Issue Type: Bug Components: general, interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: 1.5 In Java arrays and collections could use handles. In .Net and CPP they can't. We need to provide unified approach for all platforms. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1325) Platforms: introduce extensions framework.
Vladimir Ozerov created IGNITE-1325: --- Summary: Platforms: introduce extensions framework. Key: IGNITE-1325 URL: https://issues.apache.org/jira/browse/IGNITE-1325 Project: Ignite Issue Type: Sub-task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Assignee: Vladimir Ozerov Priority: Blocker Fix For: ignite-1.4 We need to introduce several methods which will allow craeting extensions without any changes in CPP (common) code. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1331) Platforms: consistent naming for "op" methods.
Vladimir Ozerov created IGNITE-1331: --- Summary: Platforms: consistent naming for "op" methods. Key: IGNITE-1331 URL: https://issues.apache.org/jira/browse/IGNITE-1331 Project: Ignite Issue Type: Sub-task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Assignee: Vladimir Ozerov Fix For: ignite-1.4 Currently "op" methods which are invoked from native platforms have consufing names. We need to make them clean and consistent. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1303) Platforms: abstract-out platform context.
Vladimir Ozerov created IGNITE-1303: --- Summary: Platforms: abstract-out platform context. Key: IGNITE-1303 URL: https://issues.apache.org/jira/browse/IGNITE-1303 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 Need to introduce context interface thus simplifying code move from GridGain. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1310) Platforms: move cluster group to Ignite.
Vladimir Ozerov created IGNITE-1310: --- Summary: Platforms: move cluster group to Ignite. Key: IGNITE-1310 URL: https://issues.apache.org/jira/browse/IGNITE-1310 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] [Created] (IGNITE-1336) Platforms: Create JNI callback extensions.
Vladimir Ozerov created IGNITE-1336: --- Summary: Platforms: Create JNI callback extensions. Key: IGNITE-1336 URL: https://issues.apache.org/jira/browse/IGNITE-1336 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] [Created] (IGNITE-1341) Platforms: refactor exceptions.
Vladimir Ozerov created IGNITE-1341: --- Summary: Platforms: refactor exceptions. Key: IGNITE-1341 URL: https://issues.apache.org/jira/browse/IGNITE-1341 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 1) Move exceptions from "platforms" to "core". 2) PlatformNativeException: move from "compute" to base package. 3) PlatormExtendedException: incorporate into regular exception hierarchy. 4) PlatformContext.createNativeException must return PlatformNativeException. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1375) Move CPP tests for "src/test" folder.
Vladimir Ozerov created IGNITE-1375: --- Summary: Move CPP tests for "src/test" folder. Key: IGNITE-1375 URL: https://issues.apache.org/jira/browse/IGNITE-1375 Project: Ignite Issue Type: Sub-task Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Assignee: Vladimir Ozerov Fix For: ignite-1.4 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1382) Consider using "JavaCritical_" prefix to speedup short Java -> platform callbacks.
Vladimir Ozerov created IGNITE-1382: --- Summary: Consider using "JavaCritical_" prefix to speedup short Java -> platform callbacks. Key: IGNITE-1382 URL: https://issues.apache.org/jira/browse/IGNITE-1382 Project: Ignite Issue Type: Task Components: clients Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Assignee: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 This could improve performance of various native methods such as "destroy"-family and "reallocate". -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1362) Update notifier causes Ignite instance leak.
Vladimir Ozerov created IGNITE-1362: --- Summary: Update notifier causes Ignite instance leak. Key: IGNITE-1362 URL: https://issues.apache.org/jira/browse/IGNITE-1362 Project: Ignite Issue Type: Bug Components: general Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Assignee: Vladimir Ozerov Priority: Critical Fix For: ignite-1.4 IgniteKernal has private non-static anonymous class for GridTimerTask which forces üpdate notify. As a result IgniteKernal instance leaks to it and stays in memory for a long time even after node is stopped. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1364) Move C++ platform to Ignite.
Vladimir Ozerov created IGNITE-1364: --- Summary: Move C++ platform to Ignite. Key: IGNITE-1364 URL: https://issues.apache.org/jira/browse/IGNITE-1364 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.5 This involves: 1) Moving code base; 2) Moving examples; 3) Fixing doxygen docs generation. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1360) Extend platform processor lifecycle.
Vladimir Ozerov created IGNITE-1360: --- Summary: Extend platform processor lifecycle. Key: IGNITE-1360 URL: https://issues.apache.org/jira/browse/IGNITE-1360 Project: Ignite Issue Type: Sub-task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 Currently platform processor lifecycle is the same as for all other processors wiht 4 callbacks: onStart, onKernalStart, onKernalStop, onStop. This appears to be not enough for platforms. IN particular, it doesn't let us flush all write-behind store data correctly and doesn't allow for normal AFTER_NODE_STOP lifecycle callback. Also it makes platfomr initialization more painful because some callbacks might reach the platform when it is not initialized yet. To mitigate this problem we should extend platform processor with two more callbacks: "onBeforeStart" and "onAfterStop". Careful management of these callbacks will let us get rid of all aforementioned problems. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1356) Move platforms Java public API to Ignite.
Vladimir Ozerov created IGNITE-1356: --- Summary: Move platforms Java public API to Ignite. Key: IGNITE-1356 URL: https://issues.apache.org/jira/browse/IGNITE-1356 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.5 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1353) PortableContext.typeId() incorrectly resolves type ID for predefined system types.
Vladimir Ozerov created IGNITE-1353: --- Summary: PortableContext.typeId() incorrectly resolves type ID for predefined system types. Key: IGNITE-1353 URL: https://issues.apache.org/jira/browse/IGNITE-1353 Project: Ignite Issue Type: Bug Components: general Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.4 See PortableContext.typeId() method. First it checks whether type is "system", and only then try picking predefiend ID. As a result, predefined types like IgniteBiTuple are written with wrong IDs. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1359) Inject platform processor into Ignite lifecycle.
Vladimir Ozerov created IGNITE-1359: --- Summary: Inject platform processor into Ignite lifecycle. Key: IGNITE-1359 URL: https://issues.apache.org/jira/browse/IGNITE-1359 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 Processor creation sequence should be as follows: 1) Ask plugins for their processor. Stop in case of non-null result. 2) Check for PlatformConfiguration. If not null - create fully-fledged processor through reflection if it is present in classpath. Stop if created. 3) Return no-op processor. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1357) Move Java bootstrap logic to Ignite.
Vladimir Ozerov created IGNITE-1357: --- Summary: Move Java bootstrap logic to Ignite. Key: IGNITE-1357 URL: https://issues.apache.org/jira/browse/IGNITE-1357 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.5 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1396) Remove platforms from public API for ignite-1.4.
Vladimir Ozerov created IGNITE-1396: --- Summary: Remove platforms from public API for ignite-1.4. Key: IGNITE-1396 URL: https://issues.apache.org/jira/browse/IGNITE-1396 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Assignee: Vladimir Ozerov Priority: Critical Fix For: ignite-1.4 It appears that adding platforms in the current release will shift release date without real necessity. Lets hide platforms API from release for now and re-add it in 1.5. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1477) Hadoop file system must throw detailed error message if communication with IGFS failed.
Vladimir Ozerov created IGNITE-1477: --- Summary: Hadoop file system must throw detailed error message if communication with IGFS failed. Key: IGNITE-1477 URL: https://issues.apache.org/jira/browse/IGNITE-1477 Project: Ignite Issue Type: Task Components: hadoop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Fix For: ignite-1.4 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1422) .Net: Marshalling can be optimized for fixed-length objects.
Vladimir Ozerov created IGNITE-1422: --- Summary: .Net: Marshalling can be optimized for fixed-length objects. Key: IGNITE-1422 URL: https://issues.apache.org/jira/browse/IGNITE-1422 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Fix For: ignite-1.5 Sometimes we can guess user object length in advance: 1) Strict rule: it is "reflective" and contains only fixed-length fields. 2) Speculative rule: It is "marshal aware", contains only fixed-length fields and there is only one metadata "path". In these cases we can do the following: 1) No tracking of length and raw offset. 2) Header can be written as one memcpy() rather than as multiple int/byte/bool writes. We need to have a fallback strategy for a cases when new metadata path appears or user write raw data. It is very easy: if expected and actual lengths differ at the end, set proper values. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1421) .Net: Optimize writes of ultra-dense structures.
Vladimir Ozerov created IGNITE-1421: --- Summary: .Net: Optimize writes of ultra-dense structures. Key: IGNITE-1421 URL: https://issues.apache.org/jira/browse/IGNITE-1421 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Fix For: ignite-1.5 There is a case when we can dramatically increase marshal/unmarshal performance: 1) Type is a structure; 2) It contains only integer/float/double primitive types with well-defined; memory layout which is consistent with our serialization protocol; 3) We are sure that there are no gaps in it's memory layout. 4) User writes it as "marshal-aware" and fields write order is consistent with memory layout. In this case we can copy the whole structure into our stream with a single memcpy() operation. And we can read it from the stream as easy as [pointer dereference + position shift] (provided that target is on the stack). -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1410) .Net: Implement IEvents.RecordLocal.
Vladimir Ozerov created IGNITE-1410: --- Summary: .Net: Implement IEvents.RecordLocal. Key: IGNITE-1410 URL: https://issues.apache.org/jira/browse/IGNITE-1410 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Fix For: ignite-1.5 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1487) Exception is always thrown on normal code path when connecting to IGFS from file system.
Vladimir Ozerov created IGNITE-1487: --- Summary: Exception is always thrown on normal code path when connecting to IGFS from file system. Key: IGNITE-1487 URL: https://issues.apache.org/jira/browse/IGNITE-1487 Project: Ignite Issue Type: Task Components: hadoop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Fix For: ignite-1.5 See HadoopIgfsWrapper.delegate(). It first tries to get default Ignite instance. As it doesn't exist in the most cases, an exception is thrown. We catch and ignore it. As a result, we throw exception on normal and pretty hot code path. Proposed fix: check for grid existence using IgnitionEx.state(). -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1413) .Net: Get rid of set -> map conversion in PlatformDotNetCacheStore.writeAll
Vladimir Ozerov created IGNITE-1413: --- Summary: .Net: Get rid of set -> map conversion in PlatformDotNetCacheStore.writeAll Key: IGNITE-1413 URL: https://issues.apache.org/jira/browse/IGNITE-1413 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Fix For: ignite-1.5 This is a legacy artifact from a veeery old API which is currently removed. Just pass set without unnecessary conversions. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1414) .Net: support async/await in the API via extension methods
Vladimir Ozerov created IGNITE-1414: --- Summary: .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 Fix For: ignite-1.5 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] [Created] (IGNITE-1433) .Net: Add GridException.JavaStackTrace
Vladimir Ozerov created IGNITE-1433: --- Summary: .Net: Add GridException.JavaStackTrace Key: IGNITE-1433 URL: https://issues.apache.org/jira/browse/IGNITE-1433 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Fix For: ignite-1.5 Propagate java stack trace as a string in ExceptionUtils.GetException and write it to a new field in IgniteException class. This will simplify debugging for us both locally and when getting error reports from clients. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1441) CPP: Support filter in SCAN queries.
Vladimir Ozerov created IGNITE-1441: --- Summary: CPP: Support filter in SCAN queries. Key: IGNITE-1441 URL: https://issues.apache.org/jira/browse/IGNITE-1441 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1448) CPP: Implement cache iterators.
Vladimir Ozerov created IGNITE-1448: --- Summary: CPP: Implement cache iterators. Key: IGNITE-1448 URL: https://issues.apache.org/jira/browse/IGNITE-1448 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1424) .Net: Add tests for BIG_ENDIANs.
Vladimir Ozerov created IGNITE-1424: --- Summary: .Net: Add tests for BIG_ENDIANs. Key: IGNITE-1424 URL: https://issues.apache.org/jira/browse/IGNITE-1424 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Minor Fix For: ignite-1.5 As all our hardware uses LITTLE_ENDIAN byte order, BIG_ENDIAN was never tested properly. We do not know, whether it works. We do not know it's performance characteristics. Need to add ability to override endian final flags in both .Net and Java (e.g. through a system property or through "Ex" configuration) and then run unit tests with it. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1438) CPP: Implement transactions API.
Vladimir Ozerov created IGNITE-1438: --- Summary: CPP: Implement transactions API. Key: IGNITE-1438 URL: https://issues.apache.org/jira/browse/IGNITE-1438 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1444) CPP: Implement cache expiry policy.
Vladimir Ozerov created IGNITE-1444: --- Summary: CPP: Implement cache expiry policy. Key: IGNITE-1444 URL: https://issues.apache.org/jira/browse/IGNITE-1444 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Fix For: ignite-1.5 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1442) CPP: Implement cache async mode.
Vladimir Ozerov created IGNITE-1442: --- Summary: CPP: Implement cache async mode. Key: IGNITE-1442 URL: https://issues.apache.org/jira/browse/IGNITE-1442 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1426) .Net: Improve/add forked tests
Vladimir Ozerov created IGNITE-1426: --- Summary: .Net: Improve/add forked tests Key: IGNITE-1426 URL: https://issues.apache.org/jira/browse/IGNITE-1426 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Fix For: ignite-1.5 Run forked tests from a separate directory to better cover assembly loading code and examples scenarios. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1434) Platforms: Ensure that @IgniteInstanceResource is set only on setters, not fields.
Vladimir Ozerov created IGNITE-1434: --- Summary: Platforms: Ensure that @IgniteInstanceResource is set only on setters, not fields. Key: IGNITE-1434 URL: https://issues.apache.org/jira/browse/IGNITE-1434 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Fix For: ignite-1.5 Currently @IgniteInstanceResource is set on fields. And then we have to deal with complex initiailzation logic. Instead, we must set this annotation on setters which will perform initialization immediately. Furthermore, when possible we must avoid injection in favor of direct setter calls. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1437) CPP: Implement SQL fields query.
Vladimir Ozerov created IGNITE-1437: --- Summary: CPP: Implement SQL fields query. Key: IGNITE-1437 URL: https://issues.apache.org/jira/browse/IGNITE-1437 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1440) CPP: Implement cache store.
Vladimir Ozerov created IGNITE-1440: --- Summary: CPP: Implement cache store. Key: IGNITE-1440 URL: https://issues.apache.org/jira/browse/IGNITE-1440 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1439) CPP: Implement futures.
Vladimir Ozerov created IGNITE-1439: --- Summary: CPP: Implement futures. Key: IGNITE-1439 URL: https://issues.apache.org/jira/browse/IGNITE-1439 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1445) CPP: Implement cache invoke.
Vladimir Ozerov created IGNITE-1445: --- Summary: CPP: Implement cache invoke. Key: IGNITE-1445 URL: https://issues.apache.org/jira/browse/IGNITE-1445 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 This will require well-defined architecture for generic callback calls from Java core to CPP. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1466) CPP: Implement portable objects support.
Vladimir Ozerov created IGNITE-1466: --- Summary: CPP: Implement portable objects support. Key: IGNITE-1466 URL: https://issues.apache.org/jira/browse/IGNITE-1466 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 We need to support portable objects in the same way as it is done in .Net and Java: if some flag ("keepPortable") is set, then we should return not real object, but rather a wrapper around it. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1469) CPP: Support decimals in marshaller.
Vladimir Ozerov created IGNITE-1469: --- Summary: CPP: Support decimals in marshaller. Key: IGNITE-1469 URL: https://issues.apache.org/jira/browse/IGNITE-1469 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 We need to support decimals in CPP. Counterparts: Java -> BigDecimal .Net -> decimal -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1470) CPP: Support string arrays in marshaller.
Vladimir Ozerov created IGNITE-1470: --- Summary: CPP: Support string arrays in marshaller. Key: IGNITE-1470 URL: https://issues.apache.org/jira/browse/IGNITE-1470 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 String arrays are written in a special way in Java/.Net. We need to support them in CPP as well. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1473) CPP: Add failed keys for CachePartialUpdateException.
Vladimir Ozerov created IGNITE-1473: --- Summary: CPP: Add failed keys for CachePartialUpdateException. Key: IGNITE-1473 URL: https://issues.apache.org/jira/browse/IGNITE-1473 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1474) CPP: Support nested collection reads/writes.
Vladimir Ozerov created IGNITE-1474: --- Summary: CPP: Support nested collection reads/writes. Key: IGNITE-1474 URL: https://issues.apache.org/jira/browse/IGNITE-1474 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 Currently we do not support nested container writes. E.g. vector -> Person -> vector. We must get rid of this restriction. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1465) SecondaryFileSystemProvider must throw more informative exception if secondary cfg URL is not resolved.
Vladimir Ozerov created IGNITE-1465: --- Summary: SecondaryFileSystemProvider must throw more informative exception if secondary cfg URL is not resolved. Key: IGNITE-1465 URL: https://issues.apache.org/jira/browse/IGNITE-1465 Project: Ignite Issue Type: Task Components: hadoop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.4 If SecondaryFileSystemProvider failed to resolve secondary file system URI, the following exception is thrown: "java.lang.IllegalArgumentException: Failed to resolve secondary file system configuration path: [path]" We need to give user possible solutions: 1) Check if file exists (either absolute or relative to IGNITE_HOME) 2) Check if there is enough access rights. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1472) CPP: Support enums.
Vladimir Ozerov created IGNITE-1472: --- Summary: CPP: Support enums. Key: IGNITE-1472 URL: https://issues.apache.org/jira/browse/IGNITE-1472 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 Needed to be able to interact with Java/.Net enums. Probably this can be done with some extension structure which will provide type ID for the enum. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1475) CPP: Implement shortcuts for array/collection/dictionary methods in reader/writer.
Vladimir Ozerov created IGNITE-1475: --- Summary: CPP: Implement shortcuts for array/collection/dictionary methods in reader/writer. Key: IGNITE-1475 URL: https://issues.apache.org/jira/browse/IGNITE-1475 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 Currently user is forced to use our reader/writer wrappers for collections. While really required in general case, this is not needed for the most common data types: vectors, sets, maps, etc. We need to define shortcut methods in reader/writer .h files to support it. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1567) Optimize portable object fields read/write in .Net.
Vladimir Ozerov created IGNITE-1567: --- Summary: Optimize portable object fields read/write in .Net. Key: IGNITE-1567 URL: https://issues.apache.org/jira/browse/IGNITE-1567 Project: Ignite Issue Type: Sub-task Components: interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1572) .Net: Check if we can get rid of "WritePortableOrSerializable" method.
Vladimir Ozerov created IGNITE-1572: --- Summary: .Net: Check if we can get rid of "WritePortableOrSerializable" method. Key: IGNITE-1572 URL: https://issues.apache.org/jira/browse/IGNITE-1572 Project: Ignite Issue Type: Task Components: interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 We have lots of places where "WritePortableOrSerializable" routine is invoked. It is not clear why do we need it provided that we already handle [Serializable] classes properly. Looks like we are able to get rid of it safely, aren't we? Need to double-check. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1580) CPP: Review Ignition interface.
Vladimir Ozerov created IGNITE-1580: --- Summary: CPP: Review Ignition interface. Key: IGNITE-1580 URL: https://issues.apache.org/jira/browse/IGNITE-1580 Project: Ignite Issue Type: Task Components: interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 It is necessary to review Ignition interface and understand whether it is compliant with common CPP practices. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1581) Synchronous cache operation can deadlock on async semaphore.
Vladimir Ozerov created IGNITE-1581: --- Summary: Synchronous cache operation can deadlock on async semaphore. Key: IGNITE-1581 URL: https://issues.apache.org/jira/browse/IGNITE-1581 Project: Ignite Issue Type: Task Components: cache Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 Problem can be reproduced as follows: 1) Set CacheConfiguration.setMaxConcurrentAsyncOperations() to a very small value, e.g. 3. 2) T1: Start PESSIMISTIC/REPEATABLE_READ tx and call Cache.get(1); 3) Start 3 other threads, initiate PESSIMISTIC/REPEATABLE_READ tx and call Cache.get(1) on them. They will stuck as expected. 4) T1: Call Cache.get(1) again. Instead of getting already locked value, thread is stuck on async semaphore acquire: {code} at sun.misc.Unsafe.park(Unsafe.java:-1) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834) at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:994) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1303) at java.util.concurrent.Semaphore.acquire(Semaphore.java:317) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.asyncOpAcquire(GridCacheAdapter.java:4329) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.asyncOp(GridCacheAdapter.java:4203) at org.apache.ignite.internal.processors.cache.distributed.dht.colocated.GridDhtColocatedCache.getAllAsync(GridDhtColocatedCache.java:211) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.getAllAsync(GridCacheAdapter.java:4609) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.get(GridCacheAdapter.java:4556) at org.apache.ignite.internal.processors.cache.GridCacheAdapter.get(GridCacheAdapter.java:1569) {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1615) .Net: Perform AtomicLong.get() without JNI if possible.
Vladimir Ozerov created IGNITE-1615: --- Summary: .Net: Perform AtomicLong.get() without JNI if possible. Key: IGNITE-1615 URL: https://issues.apache.org/jira/browse/IGNITE-1615 Project: Ignite Issue Type: Task Components: interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Fix For: ignite-1.5 Variables with atomic/interlocked semantics are frequently used in mostly-read scenarios. E.g. in spin-loops, non-blocking alogrithms, as regular volatiles, etc.. With current implementation we perform JNI call on every read which is too expensive, especially with poor Java performance when performing (native -> JVM) transition. We can optimize it with the following non-blocking algorithm: 1) Add atomic "stamp" field. 2) Add atomic "cached" field. 3) On any update: - Do the update; - Atomically increment the stamp; 4) On any read: - Read stamp (oldStamp); - Read cached value; - Read stamp again (newStamp); - if (oldStamp == newStamp == cache.stamp()), return cached value. - Otherwise perform real read through JNI and update cached value with a pair of (readValue + oldStamp); -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1511) Revisit IGFS delete worker.
Vladimir Ozerov created IGNITE-1511: --- Summary: Revisit IGFS delete worker. Key: IGNITE-1511 URL: https://issues.apache.org/jira/browse/IGNITE-1511 Project: Ignite Issue Type: Task Components: hadoop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 Looks like our IGFS delete worker is broken: 1) It doesn't account of locked files 2) It first removes data and then removes meta. Looks like we should do that in the opposite order to prevent orphaned data blocks in case very close concurrent write. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1509) .Net: User must operate on IEnumerable in events API rather than on arrays.
Vladimir Ozerov created IGNITE-1509: --- Summary: .Net: User must operate on IEnumerable in events API rather than on arrays. Key: IGNITE-1509 URL: https://issues.apache.org/jira/browse/IGNITE-1509 Project: Ignite Issue Type: Task Components: interop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Blocker Fix For: ignite-1.5 Currently we expose arrays for event groups. As they are mutable, we have to copy them every time user use them. To avoid this we should switch to IEnumerables and leave shortcut methods with "params[]" for convenience. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1512) Rework IGFS remove operation.
Vladimir Ozerov created IGNITE-1512: --- Summary: Rework IGFS remove operation. Key: IGNITE-1512 URL: https://issues.apache.org/jira/browse/IGNITE-1512 Project: Ignite Issue Type: Task Components: hadoop Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 Currently it goes through "move" on it's final stage. This causes redundant code dependencies and unnecessary check. Let's implement it as a separate method. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1539) Marshaller performance micro-optimizations.
Vladimir Ozerov created IGNITE-1539: --- Summary: Marshaller performance micro-optimizations. Key: IGNITE-1539 URL: https://issues.apache.org/jira/browse/IGNITE-1539 Project: Ignite Issue Type: Task Components: general Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Fix For: ignite-1.5 The main goal of marshalling is to write an object to byte[]/ByteBuffer, or read from it. Currently each read/write is surrounded by quite a few additional actions which can be avoided either in general, or in some specific cases. Looks like we can apply lots of micro-optimizations to our marshallers: 1) Do not perform HashMap lookups for each field ID. 2) Pre-calculate field IDs for reflection-based types. 3) Pre-calculate metadata for reflection-based types and do not track it. 4) Avoid "raw" mode checks for reflection-based types. 5) Merge small writes into bigger ones where possible. E.g. WRITE_INT_FIELD_ID + WRITE_INT_FIELD_LEN can be replaced with a single WRITE_LONG when field length is constant. 6) Memory bounds checks can be avoided in lots cases if we read/write object part with pre-defined length. 7) For objects having only fixed-length fields, we can pre-calculate a kind of template seriously minimizing writes. 8) Anything else? Applying some of these optimizations in .Net shows very promising results with up to 40% throughput increase. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1549) Optimize portable object fields write in non-raw mode.
Vladimir Ozerov created IGNITE-1549: --- Summary: Optimize portable object fields write in non-raw mode. Key: IGNITE-1549 URL: https://issues.apache.org/jira/browse/IGNITE-1549 Project: Ignite Issue Type: Task Components: general Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Blocker Fix For: ignite-1.5 Currently we write user fields as follows: 0 ,, 3 - field ID; 4 - field type; 5 ..8 - field len; 9 .. - the field itself. It can be optimized as follows: 1) Field len usually can be inferred from type. E.g., for int it is 4. 2) Frequently used constants can be written as separate types. E.g. INT - normal int, INT_0 - zero, etc. 3) Last, but not least, values should be encoded using "variable bytes" (and possibly ZigZag) algorithm. This will give us 2 bytes economy for ints and longs on average (I assume here that longs are usually bigger than 4 bytes, e.g. timestamps). *New types will be introduced:* 1) Booleans: BOOL_FALSE, BOOL_TRUE; 2) Bytes: BYTE_C0 => zero, BYTE_C1 => 1, BYTE_C1N => -1; 3) Shorts, chars: SHORT_C0, SHORT_C1, SHORT_C1N; 4) Ints: INT_C0, INT_C1, INT_C1N, INT_1 - int which fits into 1 byte, INT_1N - same for negative value, INT_2, INT_2N, INT_3, INT_3N, INT_3, INT_3N, INT_4, INT_4N. 5) Longs: same as ints, but have only 2, 4, 6 and 8 byte count discriminators to avoid excessive calculations. It means that instead of 6 integer types previously, we will have 2 + 3 + 3 + 3 + 11 + 11 = 32 types. To avoid excessive switches or (even worse) array/map lookups to understand what the type is, we can divide all types space (256) into two parts: optimized and non-optimized. Optimized space will have the MSB set to 1, and mentioned ~30 optimized types (or some of them) are located there. For floats and doubles we simply infer length. For primitive arrays we do not write field length and then arrya length, but only array length. *Expected compaction*: bool: 10 -> 5 bytes (50%); byte: 10 -> 5-6 bytes (45%); short, char: 11 -> 5-7 bytes, 7 on average (35%); int: 13 -> 5-9 bytes, 7 on average (45%). long: 17 -> 5-13 bytes, 11 on average (35%). float: 13 -> 9 bytes (30%); double: 17 -> 13 bytes (25%); *Expected CPU overhead on writes:* Bool, float, double: - Byte, short, char: zero check, sign check; Int, long: two (shift + OR)s to understand bytes count, if small - "zero" and "one" checks, if big - sign check, *Expected CPU overhead on reads:* One additional branch between optimzied and non-optimized spaces. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1550) Optimize "direct" message serialization.
Vladimir Ozerov created IGNITE-1550: --- Summary: Optimize "direct" message serialization. Key: IGNITE-1550 URL: https://issues.apache.org/jira/browse/IGNITE-1550 Project: Ignite Issue Type: Task Components: general Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: ignite-1.5 *Overview* Ignite use "direct" serialization to speed up marshalling of internal classes avoiding byte array copying. This mechanism can be improved significantly on class-by-class basis reducing message size by 10-30% in different cases. *Implementation* 1) Definte the list of possible optimizations. At the very least it includes: - Var-length integer encoding; - Special cases (constants, positive-only values, low amount of significant bits, etc.); - Efficient writes of "nulls"; - Write groups of relates fields with boolean switch if they are either null or not-null at the same time. 2) Determine what to optimize. This can be done on class-by-class basis for each of ~180 messages. Better approach will be to enable tracking of written values inside DirectMessageWriter. Then we should run Ignite with differnet payloads and identify fields which are good candidates for optimization. 3) Implement each optimziation. *Risks* Backward compatibility will be broken. We must either inform users about it, or support ability to use old non-optimized protocol version somehow. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-1548) Optimize portable object header.
Vladimir Ozerov created IGNITE-1548: --- Summary: Optimize portable object header. Key: IGNITE-1548 URL: https://issues.apache.org/jira/browse/IGNITE-1548 Project: Ignite Issue Type: Task Components: general Affects Versions: 1.1.4 Reporter: Vladimir Ozerov Priority: Blocker Fix For: ignite-1.5 Currently portable object header takes 18 bytes: 1 - object type 1 - user flag 4 - type ID 4 - hash code 4 - length 4 - raw offset. The following optimizations can be applied: 1) User flag can be easilty merged into object type. (-1 byte) 2) In most cases only length or raw-offset exists, but not both. Remove one of them and encode state into the object type. (-4 bytes) 3) Length usually fit in 1-2 bytes. Encode it with "variable bytes" algo (-2-3 bytes). As a result we will shrink header size from 18 to 10-11 bytes. Encoded states will require 6 additional object types: 104 => system, with length 105 => system, with raw offset 106 => system, with both 107, 108, 109 - the same, but for user types. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-2102) .NET: Simplify query examples
Vladimir Ozerov created IGNITE-2102: --- Summary: .NET: Simplify query examples Key: IGNITE-2102 URL: https://issues.apache.org/jira/browse/IGNITE-2102 Project: Ignite Issue Type: Task Components: interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Fix For: 1.6 Simply move IGNITE-2097 to .NET once it is ready. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-2103) CPP: Simplify query examples.
Vladimir Ozerov created IGNITE-2103: --- Summary: CPP: Simplify query examples. Key: IGNITE-2103 URL: https://issues.apache.org/jira/browse/IGNITE-2103 Project: Ignite Issue Type: Task Components: interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Fix For: 1.6 Simply move IGNITE-2097 to .NET once it is ready. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-2101) NPE when trying to submit Hadoop job to a node where Hadoop module is not loaded.
Vladimir Ozerov created IGNITE-2101: --- Summary: NPE when trying to submit Hadoop job to a node where Hadoop module is not loaded. Key: IGNITE-2101 URL: https://issues.apache.org/jira/browse/IGNITE-2101 Project: Ignite Issue Type: Bug Components: hadoop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Fix For: 1.6 See http://apache-ignite-users.70518.x6.nabble.com/NPE-issue-with-trying-to-submit-Hadoop-MapReduce-td2146.html When Hadoop module is not loaded, HadoopNoopProcessor is started on the node. And it's method nextJobId() returns null. This null is then propagated to the client and NPE is raised. There is no way for users to underastand what is wrong. Solution should be fairly simple: just throw an exception with sensible message from HadoopNoopProcessor.nextJobId() method. It should be propagated smoothly to the client. Also we need to add tests for this scenario. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-2115) Improve "peerClassLoadingEnabled=true" handling in Hadoop module.
Vladimir Ozerov created IGNITE-2115: --- Summary: Improve "peerClassLoadingEnabled=true" handling in Hadoop module. Key: IGNITE-2115 URL: https://issues.apache.org/jira/browse/IGNITE-2115 Project: Ignite Issue Type: Task Components: hadoop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Fix For: 1.6 We have very subtle logic for Hadoop module loading. Even if it is in classpath, if "peerClassloadingEnabledFlag" is set, module is not loaded. No warning or errors appear. We should: 1) Print warning if this flag prevents loading of Hadoop module; 2) Remove "peerClassLoadingEnabled=true" from IGFS example. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-2122) .NET: Add generic Read/WriteCollection and Read/WriteDictionary methods.
Vladimir Ozerov created IGNITE-2122: --- Summary: .NET: Add generic Read/WriteCollection and Read/WriteDictionary methods. Key: IGNITE-2122 URL: https://issues.apache.org/jira/browse/IGNITE-2122 Project: Ignite Issue Type: Task Components: general, interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: 1.5 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-2121) .NET: Port correct collections handling logic.
Vladimir Ozerov created IGNITE-2121: --- Summary: .NET: Port correct collections handling logic. Key: IGNITE-2121 URL: https://issues.apache.org/jira/browse/IGNITE-2121 Project: Ignite Issue Type: Sub-task Components: interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: 1.5 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-2120) Rename Binarylizable -> Binarizable
Vladimir Ozerov created IGNITE-2120: --- Summary: Rename Binarylizable -> Binarizable Key: IGNITE-2120 URL: https://issues.apache.org/jira/browse/IGNITE-2120 Project: Ignite Issue Type: Task Components: general, interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Priority: Critical Fix For: 1.5 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-2153) .NET: Package descriptions are missing in doxygen-generated files.
Vladimir Ozerov created IGNITE-2153: --- Summary: .NET: Package descriptions are missing in doxygen-generated files. Key: IGNITE-2153 URL: https://issues.apache.org/jira/browse/IGNITE-2153 Project: Ignite Issue Type: Bug Components: interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Fix For: 1.5 -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (IGNITE-2152) .NET: Introduction page is missing.
Vladimir Ozerov created IGNITE-2152: --- Summary: .NET: Introduction page is missing. Key: IGNITE-2152 URL: https://issues.apache.org/jira/browse/IGNITE-2152 Project: Ignite Issue Type: Bug Components: interop Affects Versions: ignite-1.4 Reporter: Vladimir Ozerov Assignee: Vladimir Ozerov Fix For: 1.5 -- This message was sent by Atlassian JIRA (v6.3.4#6332)