[jira] [Created] (IGNITE-9596) Web console: invisible checkbox is visible

2018-09-13 Thread Ilya Borisov (JIRA)
Ilya Borisov created IGNITE-9596:


 Summary: Web console: invisible checkbox is visible
 Key: IGNITE-9596
 URL: https://issues.apache.org/jira/browse/IGNITE-9596
 Project: Ignite
  Issue Type: Bug
  Components: wizards
 Environment: Firefox, Chrome (macOS), Safari
Reporter: Ilya Borisov
Assignee: Alexander Kalinin
 Attachments: image-2018-09-14-10-58-23-054.png

How it looks:
!image-2018-09-14-10-58-23-054.png!

How to reproduce:
1. Connect to a cluster
2. Open queries
3. Click "+Add scan"



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-9595) Web console: invisible checkbox is visible inqueries

2018-09-13 Thread Ilya Borisov (JIRA)
Ilya Borisov created IGNITE-9595:


 Summary: Web console: invisible checkbox is visible inqueries
 Key: IGNITE-9595
 URL: https://issues.apache.org/jira/browse/IGNITE-9595
 Project: Ignite
  Issue Type: Bug
  Components: wizards
Reporter: Ilya Borisov
Assignee: Alexander Kalinin


How to reproduce:
1. Connect to a cluster
2. Go to queries
3. Click on "+Add scan"



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-9594) Regression in release build for ignite-zookeeper module

2018-09-13 Thread Alexey Kuznetsov (JIRA)
Alexey Kuznetsov created IGNITE-9594:


 Summary: Regression in release build for ignite-zookeeper module
 Key: IGNITE-9594
 URL: https://issues.apache.org/jira/browse/IGNITE-9594
 Project: Ignite
  Issue Type: Bug
Reporter: Alexey Kuznetsov
Assignee: Alexey Kuznetsov
 Fix For: 2.7


In IGNITE-9073 from pom.xml of ignite-zookeeper jackson-core-asl & 
jackson-mapper-asl

were removed and that leads to ClassNotFound errors at runtime if ignite node 
uses  TcpDiscoveryZookeeperIpFinder and started from binary build.

 

We need to return that dependencies back, because Ignite binary build logic 
ignore transient dependencies.

 

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


Re: Ignite Spark Bugs

2018-09-13 Thread Nikolay Izhikov
Hello, Denis.

I've created a tests for Ignite codebase and attached it to the ticket [1].

[1] https://issues.apache.org/jira/browse/IGNITE-9593

В Вт, 11/09/2018 в 13:34 +0300, Nikolay Izhikov пишет:
> Hello, Denis.
> 
> Thanks for providing reproducers for bugs!
> 
> I taked a look at your project and be able to reproduce some of errors.
> I will create a ticket and start investigation in a next few days.
> 
> В Вт, 11/09/2018 в 12:28 +0300, Dmitriy Pavlov пишет:
> > Hi Denis,
> > 
> > Thank you for bringing this here and for your efforts to reproduce it.
> > Would you like to create an issue and contribute these test into Ignite
> > code base?
> > 
> > If you would like to proceed with the patch submission process, please
> > sign-in to Apache JIRA and share your JIRA username, I will add you as the
> > contributor.
> > 
> > You can count on my support.
> > 
> > Sincerely,
> > Dmitriy Pavlov
> > 
> > вт, 11 сент. 2018 г. в 10:51, Денис Костин :
> > 
> > > Hello everybody!
> > > 
> > > I found a few bugs in the actual version of Apache Ignite Spark (2.6.0)
> > > and described in my GitHub: https://github.com/x-x-z/IgniteSparkBugs
> > > 
> > > I wrote a test for each case:
> > > https://github.com/x-x-z/IgniteSparkBugs/blob/master/src/test/java/org/xxz/ignite_spark_bugs/IgniteSparkBugsApplicationTests.java
> > > 
> > > Check, please.
> > > 
> > > 
> > > Best regards,
> > > Denis Kostin

signature.asc
Description: This is a digitally signed message part


[jira] [Created] (IGNITE-9593) Spart Optimization fails to optimize statements

2018-09-13 Thread Nikolay Izhikov (JIRA)
Nikolay Izhikov created IGNITE-9593:
---

 Summary: Spart Optimization fails to optimize statements
 Key: IGNITE-9593
 URL: https://issues.apache.org/jira/browse/IGNITE-9593
 Project: Ignite
  Issue Type: Bug
  Components: spark
Affects Versions: 2.6
Reporter: Nikolay Izhikov
Assignee: Nikolay Izhikov
 Fix For: 2.7
 Attachments: Spark_optimization_bugs_reproducer.patch

In some cases, {{IgniteOptimization}} fails to optimize spark query. Reproducer 
attached.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


Re: Python thin client

2018-09-13 Thread Dmitry Melnichuk

Igor,

The commented code (lines 95-96) gives an error if executed. The error 
is stated just below, in lines 98-100. It is explained here:


https://apache-ignite-binary-protocol-client.readthedocs.io/en/latest/examples.html#create

I found out by trial and error that a cache, created with SQL DDL 
statement (`CREATE TABLE`), can be deleted only with SQL DDL statement 
(`DROP TABLE`), whereas a table, created with a binary protocol 
operation (`OP_CACHE_CREATE_*` or `OP_CACHE_GET_OR_CREATE_*`) can be 
deleted only with binary protocol operation (`OP_CACHE_DESTROY`). I miss 
this fact in Ignite documentation.


In this particular part of the example I try to stress this out with 
regard to the cache created in the beginning of the example. The cache 
behaves like an SQL table, but can not be dropped. You need to destroy 
it instead (line 102).


I would not go into such depths at all, but the examples are designed to 
be runnable in automated environments, and thus must have some cleanup 
code. And since the cleanup here is not absolutely trivial, I thought I 
must explain it.


I also could handle an error instead of commenting the erroneous code, like

```
any_error = None
try:
DROP_QUERY = 'DROP TABLE Student'
client.sql(DROP_QUERY)
except Exception as e:
any_error = e
print(any_error)

# pyignite.exceptions.SQLError: class 
org.apache.ignite.IgniteCheckedException:

# Only cache created with CREATE TABLE may be removed with DROP TABLE
# [cacheName=SQL_PUBLIC_STUDENT]

but it would complicate the cleanup part of the example to the point it 
is lost any exemplariness. So I decided to simply use comments.


On 9/14/18 2:48 AM, Igor Sapego wrote:

Ok, now everything's running.

API looks good to me. I have a single question about example code:
What these comments are for - [1]?

[1] -
https://github.com/nobitlost/ignite/blob/ignite-7782/modules/platforms/python/examples/create_binary.py#L95

Best Regards,
Igor


On Thu, Sep 13, 2018 at 12:52 AM Dmitry Melnichuk <
dmitry.melnic...@nobitlost.com> wrote:


Igor,

Yes, it's my bad, sorry. Just merged the Ignite master with my branch.

On 9/12/18 8:47 PM, Igor Sapego wrote:

Pavel,
Yes, I did. I tried completely clean environment, followed the same
steps and got the same error. Then I removed attr, and out of sudden
everything started working.

Dmitry,
Thanks, now it's more clear:
Handshake error: Unsupported version. Server expects binary protocol
version 1.1.0. Client provides 1.2.0.

Why do you use version 1.2.0, but have outdated server code? I
propose you to merge with or rebase onto Ignite's master branch.

Best Regards,
Igor


On Tue, Sep 11, 2018 at 11:21 PM Dmitry Melnichuk <
dmitry.melnic...@nobitlost.com> wrote:


Igor,

I have just commited an improvment to the HandshakeError message
generation algorithm. I hope it is now easier to understand what expects
what in case of binary protocol version mismatch.

Thank you for pointing this out.

On 9/12/18 2:13 AM, Igor Sapego wrote:

I managed to start tests, and now I'm getting the following message:

pyignite.exceptions.HandshakeError: Handshake error: Unsupported
version. Expected protocol version: 1.1.0.

It would be useful to print "Unexpected version" itself, because I can
not understand what is the issue.

Best Regards,
Igor













[jira] [Created] (IGNITE-9592) MVCC: Use linked lists to store multiple versions.

2018-09-13 Thread Roman Kondakov (JIRA)
Roman Kondakov created IGNITE-9592:
--

 Summary: MVCC: Use linked lists to store multiple versions.
 Key: IGNITE-9592
 URL: https://issues.apache.org/jira/browse/IGNITE-9592
 Project: Ignite
  Issue Type: Improvement
  Components: mvcc
Reporter: Roman Kondakov


Currently we store all versions of each row in primary index. It is not very 
efficient for several reasons:
 * We have to insert and remove tree item each time a new version is created or 
an old version deleted. This leads to a considerable tree operations number 
increasing as well as tree splits and merges operations.
 * Also this leads to a contention on leaf page write lock - each update 
operation has to obtain exclusive access to insert a new version of row. During 
this update no body on that leaf can not be able to update or even read data of 
neighbour keys.
 * Primary key tree consumes more space if it stores each version.
 * Other vendors do not store each version in primary indexes (as far as I 
know).

Possible solution - store only key and link to the newest version in the 
primary index. Instead of this {{CacheDataTree}} item
{{|   key part  |   | |}}
{{|-|  lockVer  |   link  |}}
{{| cache_id | hash |  mvccVer  |   | |}}
 we'll have:
{{|   key part      |   |  link to the   |}}
{{|-|  lockVer  |     newest     |}}
{{| cache_id | hash |   |version     |}}
Note, we do not have mvccVer in tree item. Link to the newer version leads to 
the most recent inserted data item. To find older versions, each DatRow is 
provided with "prevLink" - the link to previous version of row. DataRow layout 
can be changed from

| header | xid_max | xid_min | KV bytes |

to the next one:

| header | xid_max | xid_min | *PREV_LINK* | KV bytes |

Where *PREV_LINK* field points to the previous version of the row.  Traversing 
this prevRow links we can iterate over all available versions without affecting 
primary key tree.

When the new version is created we just insert the new row in datastore, then 
do CAS on the link to the newest version in primary key tree in order it points 
to the new row. PrevLink in the new row should point on the previous one. That 
is all. We've just inserted a new version just with a long field CAS in the 
CacheDataTree. Without obtaining write lock and other headache.

Secondary indexes are handled in the same manner as before.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-9591) MVCC: Do small write operations under the read lock.

2018-09-13 Thread Roman Kondakov (JIRA)
Roman Kondakov created IGNITE-9591:
--

 Summary: MVCC: Do small write operations under the read lock.
 Key: IGNITE-9591
 URL: https://issues.apache.org/jira/browse/IGNITE-9591
 Project: Ignite
  Issue Type: Improvement
  Components: mvcc
Reporter: Roman Kondakov


There are several operations in MVCC flow which can be done under the page read 
lock instead of write lock. For example, setting xid_max on a datarow. It is 
safe, because races are possible only between concurrent transactions, which 
are not visible to each other. 

See {{MvccMarkUpdatedHandler}} and other similar handlers in this class.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-9590) MVCC: Cleanup old rows in the vacuum thread.

2018-09-13 Thread Roman Kondakov (JIRA)
Roman Kondakov created IGNITE-9590:
--

 Summary: MVCC: Cleanup old rows in the vacuum thread.
 Key: IGNITE-9590
 URL: https://issues.apache.org/jira/browse/IGNITE-9590
 Project: Ignite
  Issue Type: Improvement
  Components: mvcc
Reporter: Roman Kondakov


When updating writer thread should iterate over the set of the last versions in 
order to find an appropriate version for its MVCC snapshot. During this 
iteration it collects invisible to anybody versions (their xid_max version is 
less than cleanup). When all outdated versions found, writer thread cleanups 
these rows - removes it from indexes and from pagestore.

It would be more efficient if writer thread does not cleanup old rows by 
itself, but rather delegate it to vacuum workers: instead of cleaning just put 
it to cleanup queue. 

in case of significant backpressure during active updates, when cleanup workers 
can't keep up with removing outdated rows and cleanup queue is too big, writer 
threads can cleanup this rows by itself to prevent memory and performance 
problems.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


Re: TeamCity Helper shows new failures in PRs

2018-09-13 Thread Nikolay Izhikov
Hello, Dmitrii.

Can you give a link to detailed description of this feature?

Actually, I wonder if someone except bit developers know how to use it

чт, 13 сент. 2018 г., 22:46 Dmitrii Ryabov :

> Hello, Igniters!
>
> We've improved tests analysis in the TeamCity Helper.
>
> Now, when you view PR analysis, you can see a table with possible blockers
> - failed tests and suites, that most likely appeared in the pull request.
>


Re: The future of Affinity / Topology concepts and possible PME optimizations.

2018-09-13 Thread Dmitriy Setrakyan
Ilya,

Thanks for the detailed explanation. Everything you suggested makes sense.
Needless to say, PME effect on the grid should be minimized. Let's start
with the simpler and less risky changes first.

D.

On Thu, Sep 13, 2018 at 5:58 AM Ilya Lantukh  wrote:

> Igniters,
>
> As most of you know, Ignite has a concept of AffinityTopologyVersion, which
> is associated with nodes that are currently present in topology and a
> global cluster state (active/inactive, baseline topology, started caches).
> Modification of either of them involves process called Partition Map
> Exchange (PME) and results in new AffinityTopologyVersion. At that moment
> all new cache and compute grid operations are globally "frozen". This might
> lead to indeterminate cache downtimes.
>
> However, our recent changes (esp. introduction of Baseline Topology) caused
> me to re-think those concept. Currently there are many cases when we
> trigger PME, but it isn't necessary. For example, adding/removing client
> node or server node not in BLT should never cause partition map
> modifications. Those events modify the *topology*, but *affinity* in
> unaffected. On the other hand, there are events that affect only *affinity*
> - most straightforward example is CacheAffinityChange event, which is
> triggered after rebalance is finished to assign new primary/backup nodes.
> So the term *AffinityTopologyVersion* now looks weird - it tries to "merge"
> two entities that aren't always related. To me it makes sense to introduce
> separate *AffinityVersion *and *TopologyVersion*, review all events that
> currently modify AffinityTopologyVersion and split them into 3 categories:
> those that modify only AffinityVersion, only TopologyVersion and both. It
> will allow us to process such events using different mechanics and avoid
> redundant steps, and also reconsider mapping of operations - some will be
> mapped to topology, others - to affinity.
>
> Here is my view about how different event types theoretically can be
> optimized:
> 1. Client node start / stop: as stated above, no PME is needed, ticket
> https://issues.apache.org/jira/browse/IGNITE-9558 is already in progress.
> 2. Server node start / stop not from baseline: should be similar to the
> previous case, since nodes outside of baseline cannot be partition owners.
> 3. Start node in baseline: both affinity and topology versions should be
> incremented, but it might be possible to optimize PME for such case and
> avoid cluster-wide freeze. Partition assignments for such node are already
> calculated, so we can simply put them all into MOVING state. However, it
> might take significant effort to avoid race conditions and redesign our
> architecture.
> 4. Cache start / stop: starting or stopping one cache doesn't modify
> partition maps for other caches. It should be possible to change this
> procedure to skip PME and perform all necessary actions (compute affinity,
> start/stop cache contexts on each node) in background, but it looks like a
> very complex modification too.
> 5. Rebalance finish: it seems possible to design a "lightweight" PME for
> this case as well. If there were no node failures (and if there were, PME
> should be triggered and rebalance should be cancelled anyways) all
> partition states are already known by coordinator. Furthermore, no new
> MOVING or OWNING node for any partition is introduced, so all previous
> mappings should still be valid.
>
> For the latter complex cases in might be necessary to introduce "is
> compatible" relationship between affinity versions. Operation needs to be
> remapped only if new version isn't compatible with the previous one.
>
> Please share your thoughts.
>
> --
> Best regards,
> Ilya
>


TeamCity Helper shows new failures in PRs

2018-09-13 Thread Dmitrii Ryabov
Hello, Igniters!

We've improved tests analysis in the TeamCity Helper.

Now, when you view PR analysis, you can see a table with possible blockers
- failed tests and suites, that most likely appeared in the pull request.


[GitHub] ignite pull request #4754: Ignite 9349

2018-09-13 Thread asfgit
Github user asfgit closed the pull request at:

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


---


[GitHub] ignite pull request #4700: IGNITE-9212 Uncomment or explain various commente...

2018-09-13 Thread asfgit
Github user asfgit closed the pull request at:

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


---


[GitHub] ignite pull request #4754: Ignite 9349

2018-09-13 Thread ignitetcbot
GitHub user ignitetcbot opened a pull request:

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

Ignite 9349



You can merge this pull request into a Git repository by running:

$ git pull https://github.com/apache/ignite ignite-9349

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/ignite/pull/4754.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #4754


commit 3fee44b0189e50a215e501cd7c7c43b08bf404a3
Author: Dmitriy Pavlov 
Date:   2018-08-22T15:05:39Z

IGNITE-9349 Spring Data 2x and 1x and Spring 5x and 4x versions were updated

commit ef963cc53d5575e5051accdfafe161d7f6636294
Author: Dmitriy Pavlov 
Date:   2018-09-12T18:28:53Z

IGNITE-9349 Spring Data 2x and 1x and Spring 5x and 4x versions were updated

commit 13cb990af44043ccb0e63fb848a84598e4c6ac90
Author: Dmitriy Pavlov 
Date:   2018-09-13T12:47:23Z

Merge branch 'master' into ignite-9349

commit 1b6cda4a142f89156b64a8d1a0f0dbdb91d23655
Author: Dmitriy Pavlov 
Date:   2018-09-13T16:10:21Z

IGNITE-9349 Spring Data 2x and 1x and Spring 5x and 4x versions were updated




---


[GitHub] ignite pull request #4753: IGNITE-9585 Error message sometimes refers nonexi...

2018-09-13 Thread oignatenko
GitHub user oignatenko opened a pull request:

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

IGNITE-9585 Error message sometimes refers nonexisting log file when remote 
node fails to start



You can merge this pull request into a Git repository by running:

$ git pull https://github.com/gridgain/apache-ignite ignite-9585

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/ignite/pull/4753.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #4753


commit 1eeca908a8076a8317947dac8a46845964d1d7ea
Author: Oleg Ignatenko 
Date:   2018-08-23T13:13:28Z

IGNITE-9348 ML examples improvements
- wip (logging improved)
-- verified with diffs overview, executing the examples and studying 
execution logs

commit e50b89c392568ba9b93935c4fa6c7f7f93f5ec6f
Author: Oleg Ignatenko 
Date:   2018-08-23T14:45:57Z

Revert "IGNITE-9348 ML examples improvements"

This reverts commit 1eeca908a8076a8317947dac8a46845964d1d7ea.

commit 474024b4c5bbdb3c0a4ed2f0a66238c8054c6674
Author: Oleg Ignatenko 
Date:   2018-08-23T14:57:34Z

Merge branch 'master' of https://github.com/apache/ignite into master-ml

commit 9642b233b5701bdad47ebea163079160227c582a
Author: Oleg Ignatenko 
Date:   2018-08-28T14:01:11Z

Merge branch 'master' of https://github.com/apache/ignite into master-ml

commit 7fc16d013ab725d2ff2e1a1b042c983f11d0c4d4
Author: Oleg Ignatenko 
Date:   2018-08-28T15:13:02Z

Merge branch 'master' of https://github.com/apache/ignite into master-ml

commit d2caba67b156674f051f50faebeafe0871bf0914
Author: Oleg Ignatenko 
Date:   2018-08-29T13:14:07Z

Merge branch 'master' of https://github.com/apache/ignite into master-ml

commit 16775dff51d71ea68b4a3dea98be552130c493ed
Author: Oleg Ignatenko 
Date:   2018-08-30T09:00:56Z

Merge branch 'master' of https://github.com/apache/ignite into master-ml

commit aedb59929974fe205b949225c1a338c68c60cfc8
Author: Oleg Ignatenko 
Date:   2018-08-30T09:42:38Z

Merge branch 'master' of https://github.com/apache/ignite into master-ml

commit 39c6482fcdca506aa33011ed21c98060b4a8c68b
Author: Oleg Ignatenko 
Date:   2018-08-30T11:28:05Z

Merge branch 'master' of https://github.com/apache/ignite into master-ml

commit 33b32a2760a6559c78283b927e3191180d8ed9e1
Author: Oleg Ignatenko 
Date:   2018-08-30T12:31:16Z

Merge branch 'master' of https://github.com/apache/ignite into master-ml

commit 9531028ddd1aef9e95f7e8c8b528086739bbb1b0
Author: Oleg Ignatenko 
Date:   2018-08-30T14:06:34Z

Merge branch 'master' of https://github.com/apache/ignite into master-ml

commit 28f22c6e2fffcb82717ba5da7be2cfd39715c4e3
Author: Oleg Ignatenko 
Date:   2018-08-30T16:41:51Z

Merge branch 'master' of https://github.com/apache/ignite into master-ml

commit aacac88db519187413b0fc5ff9d0e55b8f8cff22
Author: Oleg Ignatenko 
Date:   2018-08-31T10:12:32Z

Merge branch 'master' of https://github.com/apache/ignite into master-ml

commit 897f920dde46022849b13f9fb86dba8e54119a56
Author: Oleg Ignatenko 
Date:   2018-08-31T13:57:14Z

Merge branch 'master' of https://github.com/apache/ignite into master-ml

commit 114c79e54c1b316006ccc3ff22d20d902f9313df
Author: Oleg Ignatenko 
Date:   2018-08-31T17:39:16Z

Merge branch 'master' of https://github.com/apache/ignite into master-ml

commit fd6b659bb8be1992618ce4ce91f568a0988b3afa
Author: Oleg Ignatenko 
Date:   2018-09-02T06:11:42Z

Merge branch 'master' of https://github.com/apache/ignite into master-ml

commit 6ae6d1d3cf9743d8d466be0330511ddc8589e944
Author: Oleg Ignatenko 
Date:   2018-09-03T10:27:35Z

Merge branch 'master' of https://github.com/apache/ignite into master-ml

commit e8b27dbd3d0c1cbdb7a7659175f5c7bb447482bf
Author: Oleg Ignatenko 
Date:   2018-09-04T09:49:44Z

Merge branch 'master' of https://github.com/apache/ignite into master-ml

commit 622c82efdd0aa182fadea6b7ffa5d4615521a3f5
Author: Oleg Ignatenko 
Date:   2018-09-05T10:50:28Z

Merge branch 'master' of https://github.com/apache/ignite into master-ml

commit fb844fe3751e2e8ae87e6b8030b0e4bd659df9c2
Author: Oleg Ignatenko 
Date:   2018-09-05T11:45:58Z

Merge branch 'master' of https://github.com/apache/ignite into master-ml

commit 480ed78869277d7e32f725ab71bec9621f1ac03a
Author: Oleg Ignatenko 
Date:   2018-09-06T07:52:55Z

Merge branch 'master' of https://github.com/apache/ignite into master-ml

commit c99762498f617c0e98ea3062a43c0b30092166ef
Author: Oleg Ignatenko 
Date:   2018-09-06T14:45:04Z

Merge branch 'master' of https://github.com/apache/ignite into master-ml

commit 2e17175225c72f747d370b5fee96f8be69d6d2cb
Author: Oleg Ignatenko 
Date:   2018-09-06T17:33:54Z

Merge branch 'master' of https://github.com/apache/ignite into master-ml

commit 9ebcd9a2fe5966b0bf42a95484395867c15d863f
Author: Oleg Ignatenko 
Date:   2018-09-07T13:38:51Z

Merge 

[GitHub] zzzadruga opened a new pull request #9: IGNITE-9541 Add the comparison for two general statistics "RunAll" for master in the date interval

2018-09-13 Thread GitBox
zzzadruga opened a new pull request #9: IGNITE-9541 Add the comparison for two 
general statistics "RunAll" for master in the date interval
URL: https://github.com/apache/ignite-teamcity-bot/pull/9
 
 
   


This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services


[GitHub] ignite pull request #4752: IGNITE-8006 added parallel start of caches.

2018-09-13 Thread akalash
GitHub user akalash opened a pull request:

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

IGNITE-8006 added parallel start of caches.



You can merge this pull request into a Git repository by running:

$ git pull https://github.com/gridgain/apache-ignite ignite-8006

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/ignite/pull/4752.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #4752


commit a457c8b4c23be57cea11f7f7a49c5bc695adde9d
Author: Anton Kalashnikov 
Date:   2018-09-13T16:44:40Z

IGNITE-8006 added parallel start of caches.




---


Re: Python thin client

2018-09-13 Thread Igor Sapego
Ok, now everything's running.

API looks good to me. I have a single question about example code:
What these comments are for - [1]?

[1] -
https://github.com/nobitlost/ignite/blob/ignite-7782/modules/platforms/python/examples/create_binary.py#L95

Best Regards,
Igor


On Thu, Sep 13, 2018 at 12:52 AM Dmitry Melnichuk <
dmitry.melnic...@nobitlost.com> wrote:

> Igor,
>
> Yes, it's my bad, sorry. Just merged the Ignite master with my branch.
>
> On 9/12/18 8:47 PM, Igor Sapego wrote:
> > Pavel,
> > Yes, I did. I tried completely clean environment, followed the same
> > steps and got the same error. Then I removed attr, and out of sudden
> > everything started working.
> >
> > Dmitry,
> > Thanks, now it's more clear:
> > Handshake error: Unsupported version. Server expects binary protocol
> > version 1.1.0. Client provides 1.2.0.
> >
> > Why do you use version 1.2.0, but have outdated server code? I
> > propose you to merge with or rebase onto Ignite's master branch.
> >
> > Best Regards,
> > Igor
> >
> >
> > On Tue, Sep 11, 2018 at 11:21 PM Dmitry Melnichuk <
> > dmitry.melnic...@nobitlost.com> wrote:
> >
> >> Igor,
> >>
> >> I have just commited an improvment to the HandshakeError message
> >> generation algorithm. I hope it is now easier to understand what expects
> >> what in case of binary protocol version mismatch.
> >>
> >> Thank you for pointing this out.
> >>
> >> On 9/12/18 2:13 AM, Igor Sapego wrote:
> >>> I managed to start tests, and now I'm getting the following message:
> >>>
> >>> pyignite.exceptions.HandshakeError: Handshake error: Unsupported
> >>> version. Expected protocol version: 1.1.0.
> >>>
> >>> It would be useful to print "Unexpected version" itself, because I can
> >>> not understand what is the issue.
> >>>
> >>> Best Regards,
> >>> Igor
> >>
> >
>
>


[GitHub] ignite pull request #4751: IGNITE-9589

2018-09-13 Thread NSAmelchev
GitHub user NSAmelchev opened a pull request:

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

IGNITE-9589

For IGNITE-9589 GridTcpCommunicationSpiConfigSelfTest.testLocalPortRange

You can merge this pull request into a Git repository by running:

$ git pull https://github.com/NSAmelchev/ignite ignite-9589

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/ignite/pull/4751.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #4751


commit f6f75ae26f744cd9ac2a376c1f5735b1016f
Author: NSAmelchev 
Date:   2018-09-13T16:40:12Z

Check that test fails on mass runs




---


[jira] [Created] (IGNITE-9589) GridTcpCommunicationSpiConfigSelfTest.testLocalPortRange is flaky in master

2018-09-13 Thread Amelchev Nikita (JIRA)
Amelchev Nikita created IGNITE-9589:
---

 Summary: GridTcpCommunicationSpiConfigSelfTest.testLocalPortRange 
is flaky in master
 Key: IGNITE-9589
 URL: https://issues.apache.org/jira/browse/IGNITE-9589
 Project: Ignite
  Issue Type: Bug
Reporter: Amelchev Nikita
Assignee: Amelchev Nikita


The test GridTcpCommunicationSpiConfigSelfTest.testLocalPortRange fails 
periodicaly.
>From the logs, I see that the failure is caused by BindException. It causes 
>node start fails because the test port range is 0.

{noformat}
[2018-09-13 
04:06:20,060][ERROR][test-runner-#225862%tcp.GridTcpCommunicationSpiConfigSelfTest%][GridTcpCommunicationSpiConfigSelfTest]
 Failed to start manager: GridManagerAdapter [enabled=true, 
name=o.a.i.i.managers.communication.GridIoManager]
class org.apache.ignite.IgniteCheckedException: Failed to get SPI attributes.
at 
org.apache.ignite.internal.managers.GridManagerAdapter.startSpi(GridManagerAdapter.java:278)
at 
org.apache.ignite.internal.managers.communication.GridIoManager.start(GridIoManager.java:262)
at 
org.apache.ignite.internal.IgniteKernal.startManager(IgniteKernal.java:1755)
at org.apache.ignite.internal.IgniteKernal.start(IgniteKernal.java:975)
at 
org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start0(IgnitionEx.java:2020)
at 
org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance.start(IgnitionEx.java:1725)
at org.apache.ignite.internal.IgnitionEx.start0(IgnitionEx.java:1153)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:673)
at org.apache.ignite.internal.IgnitionEx.start(IgnitionEx.java:598)
at org.apache.ignite.Ignition.start(Ignition.java:323)
at 
org.apache.ignite.testframework.junits.GridAbstractTest.startGrid(GridAbstractTest.java:1370)
at 
org.apache.ignite.spi.communication.tcp.GridTcpCommunicationSpiConfigSelfTest.testLocalPortRange(GridTcpCommunicationSpiConfigSelfTest.java:65)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at junit.framework.TestCase.runTest(TestCase.java:176)
at 
org.apache.ignite.testframework.junits.GridAbstractTest.runTestInternal(GridAbstractTest.java:2177)
at 
org.apache.ignite.testframework.junits.GridAbstractTest.access$000(GridAbstractTest.java:143)
at 
org.apache.ignite.testframework.junits.GridAbstractTest$5.run(GridAbstractTest.java:2092)
at java.lang.Thread.run(Thread.java:748)
Caused by: class org.apache.ignite.spi.IgniteSpiException: Failed to initialize 
TCP server: 0.0.0.0/0.0.0.0
at 
org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi.getNodeAttributes(TcpCommunicationSpi.java:2137)
at 
org.apache.ignite.internal.managers.GridManagerAdapter.startSpi(GridManagerAdapter.java:261)
... 20 more
Caused by: class org.apache.ignite.IgniteCheckedException: Failed to bind to 
any port within range [startPort=47100, portRange=0, locHost=0.0.0.0/0.0.0.0]
at 
org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi.resetNioServer(TcpCommunicationSpi.java:2450)
at 
org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi.getNodeAttributes(TcpCommunicationSpi.java:2134)
... 21 more
Caused by: class org.apache.ignite.IgniteCheckedException: Failed to initialize 
NIO selector.
at 
org.apache.ignite.internal.util.nio.GridNioServer.createSelector(GridNioServer.java:988)
at 
org.apache.ignite.internal.util.nio.GridNioServer.(GridNioServer.java:342)
at 
org.apache.ignite.internal.util.nio.GridNioServer.(GridNioServer.java:97)
at 
org.apache.ignite.internal.util.nio.GridNioServer$Builder.build(GridNioServer.java:3669)
at 
org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi.resetNioServer(TcpCommunicationSpi.java:2415)
... 22 more
Caused by: java.net.BindException: Address already in use
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:67)
at 
org.apache.ignite.internal.util.nio.GridNioServer.createSelector(GridNioServer.java:972)
... 26 more
{noformat}




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-9588) Separate page for JIRA, GitHub actions

2018-09-13 Thread Ryabov Dmitrii (JIRA)
Ryabov Dmitrii created IGNITE-9588:
--

 Summary: Separate page for JIRA, GitHub actions
 Key: IGNITE-9588
 URL: https://issues.apache.org/jira/browse/IGNITE-9588
 Project: Ignite
  Issue Type: Sub-task
Reporter: Ryabov Dmitrii
Assignee: Ryabov Dmitrii


To separate JIRA and GitHub actions from other action on index page we need to 
create an additional page, opened by tab on the panel with Home and Compare 
Builds.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


Re: Workflow improvement

2018-09-13 Thread Dmitrii Ryabov
Yep, it's working. Thank you.

2018-09-13 19:09 GMT+03:00 Dmitriy Pavlov :

> Hi Dmitriy,
>
> Sure, I agree with extra permissions assignment. Done.
>
> Could you please check if you can manage your builds now?
>
> Sincerely,
> Dmitriy Pavlov
>
> чт, 13 сент. 2018 г. в 16:05, Dmitrii Ryabov :
>
> > Hi, Dmitriy,
> >
> > Can you give me rights to stop my builds on TeamCity? Working on the
> TCH, I
> > run a lot of builds, and I don't like to ask other people to stop builds
> > too often.
> >
> > 2018-09-10 23:53 GMT+03:00 Dmitrii Ryabov :
> >
> > > Hi, Dmitriy,
> > >
> > > I made PRs in my fork for test purposes. Real PRs were made to the
> GitHub
> > > mirror, and one of them is already merged by D. Govorukhin. PR with
> > GitHub
> > > statuses [1] is ready for review. PR with JIRA comment will be ready
> in a
> > > few days.
> > >
> > > [1] https://github.com/apache/ignite-teamcity-bot/pull/5
> > >
> > > 2018-09-10 23:00 GMT+03:00 Dmitriy Pavlov :
> > >
> > >> Hi Dmitrii,
> > >>
> > >> I deployed change with blockers summary of failures at the top of PR
> > >> result
> > >> page. The Bot is migrating entries now, I hope it will be done in 1-4
> > >> hours.
> > >>
> > >> I noticed your PRs are created in your own fork, not in
> > >> https://github.com/apache/ignite-teamcity-bot
> > >> Could you please create unmerged PR in GitHub mirror so it could be
> > merged
> > >> after reviewing by the apply-pr script.
> > >>
> > >> Sincerely,
> > >> Dmitriy Pavlov
> > >>
> > >> пн, 3 сент. 2018 г. в 18:20, Dmitrii Ryabov :
> > >>
> > >> > Hi, Dmitriy,
> > >> >
> > >> > I created a table with possible blockers [1] for the page with the
> > >> latest
> > >> > build analysis. Anton K. has reviewed it. Can you check and merge
> it?
> > >> >
> > >> > Also, I created a button to notify PR about analisis results [2]. I
> > used
> > >> > GitHub statuses (example [3]), but to work it needs a token with
> push
> > >> > permission. As Apache PMC, can you acquire such token? I think
> > statuses
> > >> are
> > >> > much more notable than comments.
> > >> >
> > >> > [1] https://issues.apache.org/jira/browse/IGNITE-9376
> > >> > [2] https://issues.apache.org/jira/browse/IGNITE-9377
> > >> > [3] https://github.com/SomeFire/ignite-teamcity-bot/pulls
> > >> >
> > >> > 2018-08-25 1:04 GMT+03:00 Dmitriy Pavlov :
> > >> >
> > >> > > Not sure I understood what bot statistic reduction means.
> > >> > >
> > >> > > As far as I understood, you also mean locating failure
> automatically
> > >> with
> > >> > > re-runs on specific git revisions (hashes). I found it will be a
> > good
> > >> > > contribution to TC Bot for both flaky and non-flaky failures
> > >> detection.
> > >> > E.g
> > >> > > failure occurred after 10 commits merged to master. How to find
> out
> > >> bad
> > >> > > commit? Automatic location (analog of bisecting, but using TC
> test)
> > >> will
> > >> > be
> > >> > > really helpful. But it is not a simple contribution.
> > >> > >
> > >> > > пт, 24 авг. 2018 г. в 18:35, Dmitrii Ryabov <
> somefire...@gmail.com
> > >:
> > >> > >
> > >> > > > Hi, Dmitriy,
> > >> > > >
> > >> > > > Good, I'll create tickets for this steps.
> > >> > > >
> > >> > > > Stable suites are a good idea, but also we need to do some
> actions
> > >> > when a
> > >> > > > flaky test will appear in stable suite of master branch run. To
> > find
> > >> > out
> > >> > > a
> > >> > > > guilty commit, we should run previous commits on empty
> TeamCity's
> > >> > queue.
> > >> > > > This runs will reduce bot's statistics for the latest commits.
> > >> > > >
> > >> > > > 2018-08-24 16:32 GMT+03:00 Dmitriy Pavlov <
> dpavlov@gmail.com
> > >:
> > >> > > >
> > >> > > > > Hi Dmitriy,
> > >> > > > >
> > >> > > > > Sounds like a plan ;) I totally agree.
> > >> > > > > Just one proposal: I would like to avoid hiding any test
> > >> failures. 2
> > >> > > > > separate tables named 'Possible Blockers' and 'Other failures'
> > >> should
> > >> > > be
> > >> > > > > completely clear. Comment to PR can contain only first
> category.
> > >> > > > >
> > >> > > > > We had a private discussion with Anton K. and he proposed a
> very
> > >> > > > > interesting thing, I would like to bring it here. We can add
> > >> > > > configuration
> > >> > > > > into TC bot and mark some tests and some suites as 'Known
> > Stable'
> > >> It
> > >> > > > means
> > >> > > > > that suite or test failure should be considered as a blocker
> for
> > >> > merge
> > >> > > > > every time it fails, even if fail rate is non-zero. Very first
> > >> list
> > >> > of
> > >> > > > such
> > >> > > > > suites are
> > >> > > > >  - Build Apache Ignite
> > >> > > > >  - License check
> > >> > > > > And tests:
> > >> > > > >  - .Net API Parity check
> > >> > > > > Please share your vision.
> > >> > > > >
> > >> > > > > Meanwhile, I've updated the TC bot.
> > >> > > > > - Underlying Apache Ignite DB was refactored to use lower
> > >> partitions
> > >> > > > count,
> > >> > > > > so restart should be 

[GitHub] ignite pull request #4750: IGNITE-8770: OutOfMemory in Queries1 suite in mas...

2018-09-13 Thread avplatonov
GitHub user avplatonov opened a pull request:

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

IGNITE-8770: OutOfMemory in Queries1 suite in master branch on TC



You can merge this pull request into a Git repository by running:

$ git pull https://github.com/gridgain/apache-ignite ignite-8770

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/ignite/pull/4750.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #4750


commit 72994e61f554b67c01ad3439af95e263e8b75cab
Author: Alexey Platonov 
Date:   2018-09-13T16:08:12Z

limit partitions count




---


Re: Workflow improvement

2018-09-13 Thread Dmitriy Pavlov
Hi Dmitriy,

Sure, I agree with extra permissions assignment. Done.

Could you please check if you can manage your builds now?

Sincerely,
Dmitriy Pavlov

чт, 13 сент. 2018 г. в 16:05, Dmitrii Ryabov :

> Hi, Dmitriy,
>
> Can you give me rights to stop my builds on TeamCity? Working on the TCH, I
> run a lot of builds, and I don't like to ask other people to stop builds
> too often.
>
> 2018-09-10 23:53 GMT+03:00 Dmitrii Ryabov :
>
> > Hi, Dmitriy,
> >
> > I made PRs in my fork for test purposes. Real PRs were made to the GitHub
> > mirror, and one of them is already merged by D. Govorukhin. PR with
> GitHub
> > statuses [1] is ready for review. PR with JIRA comment will be ready in a
> > few days.
> >
> > [1] https://github.com/apache/ignite-teamcity-bot/pull/5
> >
> > 2018-09-10 23:00 GMT+03:00 Dmitriy Pavlov :
> >
> >> Hi Dmitrii,
> >>
> >> I deployed change with blockers summary of failures at the top of PR
> >> result
> >> page. The Bot is migrating entries now, I hope it will be done in 1-4
> >> hours.
> >>
> >> I noticed your PRs are created in your own fork, not in
> >> https://github.com/apache/ignite-teamcity-bot
> >> Could you please create unmerged PR in GitHub mirror so it could be
> merged
> >> after reviewing by the apply-pr script.
> >>
> >> Sincerely,
> >> Dmitriy Pavlov
> >>
> >> пн, 3 сент. 2018 г. в 18:20, Dmitrii Ryabov :
> >>
> >> > Hi, Dmitriy,
> >> >
> >> > I created a table with possible blockers [1] for the page with the
> >> latest
> >> > build analysis. Anton K. has reviewed it. Can you check and merge it?
> >> >
> >> > Also, I created a button to notify PR about analisis results [2]. I
> used
> >> > GitHub statuses (example [3]), but to work it needs a token with push
> >> > permission. As Apache PMC, can you acquire such token? I think
> statuses
> >> are
> >> > much more notable than comments.
> >> >
> >> > [1] https://issues.apache.org/jira/browse/IGNITE-9376
> >> > [2] https://issues.apache.org/jira/browse/IGNITE-9377
> >> > [3] https://github.com/SomeFire/ignite-teamcity-bot/pulls
> >> >
> >> > 2018-08-25 1:04 GMT+03:00 Dmitriy Pavlov :
> >> >
> >> > > Not sure I understood what bot statistic reduction means.
> >> > >
> >> > > As far as I understood, you also mean locating failure automatically
> >> with
> >> > > re-runs on specific git revisions (hashes). I found it will be a
> good
> >> > > contribution to TC Bot for both flaky and non-flaky failures
> >> detection.
> >> > E.g
> >> > > failure occurred after 10 commits merged to master. How to find out
> >> bad
> >> > > commit? Automatic location (analog of bisecting, but using TC test)
> >> will
> >> > be
> >> > > really helpful. But it is not a simple contribution.
> >> > >
> >> > > пт, 24 авг. 2018 г. в 18:35, Dmitrii Ryabov  >:
> >> > >
> >> > > > Hi, Dmitriy,
> >> > > >
> >> > > > Good, I'll create tickets for this steps.
> >> > > >
> >> > > > Stable suites are a good idea, but also we need to do some actions
> >> > when a
> >> > > > flaky test will appear in stable suite of master branch run. To
> find
> >> > out
> >> > > a
> >> > > > guilty commit, we should run previous commits on empty TeamCity's
> >> > queue.
> >> > > > This runs will reduce bot's statistics for the latest commits.
> >> > > >
> >> > > > 2018-08-24 16:32 GMT+03:00 Dmitriy Pavlov  >:
> >> > > >
> >> > > > > Hi Dmitriy,
> >> > > > >
> >> > > > > Sounds like a plan ;) I totally agree.
> >> > > > > Just one proposal: I would like to avoid hiding any test
> >> failures. 2
> >> > > > > separate tables named 'Possible Blockers' and 'Other failures'
> >> should
> >> > > be
> >> > > > > completely clear. Comment to PR can contain only first category.
> >> > > > >
> >> > > > > We had a private discussion with Anton K. and he proposed a very
> >> > > > > interesting thing, I would like to bring it here. We can add
> >> > > > configuration
> >> > > > > into TC bot and mark some tests and some suites as 'Known
> Stable'
> >> It
> >> > > > means
> >> > > > > that suite or test failure should be considered as a blocker for
> >> > merge
> >> > > > > every time it fails, even if fail rate is non-zero. Very first
> >> list
> >> > of
> >> > > > such
> >> > > > > suites are
> >> > > > >  - Build Apache Ignite
> >> > > > >  - License check
> >> > > > > And tests:
> >> > > > >  - .Net API Parity check
> >> > > > > Please share your vision.
> >> > > > >
> >> > > > > Meanwhile, I've updated the TC bot.
> >> > > > > - Underlying Apache Ignite DB was refactored to use lower
> >> partitions
> >> > > > count,
> >> > > > > so restart should be faster.
> >> > > > > - Now 100 builds are saved as our failure rate statistics basis.
> >> > > > Flakiness
> >> > > > > border was not changed, so more test now will be considered as
> >> flaky.
> >> > > > > - Now 4 builds required to be failed or timed out in a row
> before
> >> > > > > notification is sent.
> >> > > > >
> >> > > > > Sincerely,
> >> > > > > Dmitriy Pavlov
> >> > > > >
> >> > > > > чт, 23 авг. 2018 г. в 17:09, 

[ML] [New Feature] Handle different labels in training data and handle unknown labels in test or updated training data correctly

2018-09-13 Thread Alexey Zinoviev
Hi, Igniters

Welcome to the discussion about labels handling during ML training.

The problem is that all algorithms of binary classification are ready to
handle the datasets marked with 0/1 labels and predict 0/1 labels without
especial mapping.

Also the algorithms don't handle situation with unknown labels during the
updating and testing phases

Umbrella ticket is created here

https://issues.apache.org/jira/browse/IGNITE-9587

Also, I'd invite you to discuss

1) list of trainers to upgrade with this feature

2) how to handle unknown labels during the prediction/test phase

3) how to handle unknown labels during the update model phase (new data is
coming during the next training and the results of next training should be
merged with the results of the previous training)

4) Where to store metadata about labels during training phases

Glad to hear your ideas


[jira] [Created] (IGNITE-9587) [ML] Umbrella ticket: Handle different labels in training data and handle unknown labels in test or updated training data correctly

2018-09-13 Thread Aleksey Zinoviev (JIRA)
Aleksey Zinoviev created IGNITE-9587:


 Summary: [ML] Umbrella ticket: Handle different labels in training 
data and handle unknown labels in test or updated training data correctly
 Key: IGNITE-9587
 URL: https://issues.apache.org/jira/browse/IGNITE-9587
 Project: Ignite
  Issue Type: New Feature
Reporter: Aleksey Zinoviev
Assignee: Aleksey Zinoviev


The problem is that all algorithms of binary classification are ready to handle 
the datasets marked with 0/1 labels and predict 0/1 labels without especial 
mapping.

Also the algorithms don't handle situation with unknown labels during the 
updating and testing phases

Possible solution: it could be stored in context of ML training



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


Re: IoC/DI support in Apache Ignite.NEt

2018-09-13 Thread Pavel Tupitsyn
Looks good to me in general.

But we should add IDependencyResolver {get;set} to IgniteConfiguration
class instead of changing IIgnite interface.
We need the resolver at startup before IIgnite instance is created, to
resolve user-defined cache stores and so on.

And we should make sure to add tests for all kinds of user-defined classes
that are instantiated by Ignite:
Compute jobs, actions, services, cache stores, ICacheEntryFilter,
ICacheEntryProcessor, etc.

Thanks,
Pavel

On Thu, Sep 13, 2018 at 4:03 PM Artyom Sokolov  wrote:

> Hello,
>
> I propose the following.
>
> *Development*
>
> 1. Define *IDependencyResolver* in *Apache.Ignite.Core* under
> *DependencyInjection* folder that contains at least 2 methods:
>
> *T Resolve(object arguments = null);*
> *object Resolve(Type type, object arguments = null);*
>
> 2. Create *InjectResolvableAttribute* in Apache.Ignite.Core under
> *DependencyInjection* folder marked with
> *[AttributeUsage(AttributeTargets.Field
> | AttributeTargets.Property)]*
> 3. Create internal static class *DependencyInjector* with at least one
> internal static method that will inject required dependencies in service
> implementations like this one (exception checking is omitted currently and
> has to be added)
>
> *namespace Apache.Ignite.Core.DependencyInjection*
> *{*
> *using System.Linq;*
> *using System.Reflection;*
> *using Apache.Ignite.Core.Services;*
>
> *internal static class DependencyInjector*
> *{*
> *internal static void Inject(IService svc, IIgnite ignite)*
> *{*
> *var dependencyResolver = ignite.GetDependencyResolver();*
>
> *if (dependencyResolver == null)*
> *{*
> *return;*
> *}*
>
> *foreach (var property in svc.GetType()*
> *.GetProperties(BindingFlags.Public |
> BindingFlags.NonPublic | BindingFlags.Instance))*
> *{*
> *if
> (!property.GetCustomAttributes(typeof(InjectResolvableAttribute),
> true).Any())*
> *{*
> *continue;*
> *}*
>
> *if (!property.CanWrite)*
> *{*
> *continue;*
> *}*
>
> *var resolvedDependency =
> dependencyResolver.Resolve(property.PropertyType);*
> *property.SetValue(svc, resolvedDependency, null);*
> *}*
>
> *foreach (var field in svc.GetType()*
> *.GetFields(BindingFlags.Public | BindingFlags.NonPublic |
> BindingFlags.Instance))*
> *{*
> *if
> (!field.GetCustomAttributes(typeof(InjectResolvableAttribute),
> true).Any())*
> *{*
> *continue;*
> *}*
>
> *var resolvedDependency =
> dependencyResolver.Resolve(field.FieldType);*
>
> *field.SetValue(svc, resolvedDependency);*
> *}*
> *}*
> *}*
> *}*
>
> 4. Add* DependencyInjector.Inject(svc, _ignite);* call to
> *UnmanagedCallbacks.cs* right after *ResourceProcessor.Inject(svc,
> _ignite)*
> .
> 5. Add 2 methods to *Ignite* class and it's interface *IIgnite*:
>
> *public IDependencyResolver GetDependencyResolver();*
> *public IIgnite SetDependencyResolver(IDependencyResolver
> dependencyResolver);*
>
> 6. Create *Apache.Ignite.DependencyInjection.CastleWindsor* project and
> implement *IDependencyResolver* with *CastleWindsorDependencyResolver*
> class.
>
> *namespace Apache.Ignite.DependencyInjection.CastleWindsor*
> *{*
> *using System;*
> *using Castle.MicroKernel;*
> *using IDependencyResolver =
> Core.DependencyInjection.IDependencyResolver;*
>
> *public class CastleWindsorDependencyResolver : IDependencyResolver*
> *{*
> *private IKernel Kernel { get; set; }*
>
> *public CastleWindsorDependencyResolver(IKernel kernel)*
> *{*
> *Kernel = kernel;*
> *}*
>
> *public T Resolve(object arguments = null)*
> *{*
> *return arguments == null ? Kernel.Resolve() :
> Kernel.Resolve(arguments);*
> *}*
>
> *public object Resolve(Type type, object arguments = null)*
> *{*
> *return arguments == null ? Kernel.Resolve(type) :
> Kernel.Resolve(type, arguments);*
> *}*
> *}*
> *}*
>
> 7. Create extension like this one
>
> namespace Apache.Ignite.DependencyInjection.CastleWindsor
> {
> using Apache.Ignite.Core;
> using Castle.MicroKernel;
>
> public static class IgniteExtensions
> {
> public static IIgnite UseCastleWindsorResolver(this IIgnite ignite,
> IKernel kernel)
> {
> return ignite.SetDependencyResolver(new
> CastleWindsorDependencyResolver(kernel));
> }
> }
> }
>
> 8. Write test.
>
>
> *Usage*
>
> var grid = Ignition.Start();
>
> using (var container = new WindsorContainer())
> {
>
> 

[jira] [Created] (IGNITE-9586) Treat 172.17.0.1 as localhost address and only use it as last resort

2018-09-13 Thread Ilya Kasnacheev (JIRA)
Ilya Kasnacheev created IGNITE-9586:
---

 Summary: Treat 172.17.0.1 as localhost address and only use it as 
last resort
 Key: IGNITE-9586
 URL: https://issues.apache.org/jira/browse/IGNITE-9586
 Project: Ignite
  Issue Type: Improvement
Reporter: Ilya Kasnacheev


As far as my understanding goes, it is a Docker gateway address.

Nodes see that they have this address in common, and try to use it for 
Communication, which leads to confusing results since 172.17.0.1 is not 
actually shared between them.

I think we should regard it as localhost or outright ignore it when picking 
address to connect to in Communication.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[GitHub] ignite pull request #4749: IGNITE-9022: Changed class label output in SVM

2018-09-13 Thread zaleslaw
GitHub user zaleslaw opened a pull request:

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

IGNITE-9022: Changed class label output in SVM



You can merge this pull request into a Git repository by running:

$ git pull https://github.com/gridgain/apache-ignite ignite-9022

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/ignite/pull/4749.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #4749


commit e1dd11ec45d088c42c1a4d3025f0b3e7f9b3ce73
Author: zaleslaw 
Date:   2018-09-13T15:14:27Z

IGNITE-9022: Changed class label output in SVM




---


Re: Table Names in Spark Catalog

2018-09-13 Thread Nikolay Izhikov
Hello, Stuart.

Do you need any assistance with this task from me or other community member?

В Вт, 04/09/2018 в 19:03 +0300, Nikolay Izhikov пишет:
> Hello, Stuart.
> 
> Sorry for the silence.
> 
> I was swamped the last couple of days.
> 
> I think you can go forward and implement suggested solution.
> I'm -0 with it.
> So no block from my side, but I'm still no happy with abstractions :).
> 
> В Пн, 03/09/2018 в 09:35 +0100, Stuart Macdonald пишет:
> > Nikolay, Val, it would be good if we could reach agreement here so that I
> > can make the necessary modifications before the 2.7 cutoff.
> > 
> > Nikolay - would you be comfortable if I went ahead and made database=schema?
> > 
> > Stuart.
> > 
> > On Mon, Aug 27, 2018 at 10:22 PM Valentin Kulichenko <
> > valentin.kuliche...@gmail.com> wrote:
> > 
> > > Hi Nikolay,
> > > 
> > > I think it's actually pretty unfortunate that Spark uses term "database"
> > > here, as it essentially refers to a schema in my view. Usually, database 
> > > is
> > > something you create a physical connection to, and connection is bind to
> > > that database. To connect to another database you need to create a new
> > > connection. In Spark, however, you can switch between "databases" within a
> > > single session, which looks really weird to me because it's usually a
> > > characteristic of a schema. Having said that, I understand your concern,
> > > but I don't think there is an ideal solution.
> > > 
> > > As for your approach, I still don't understand how it will allow to fully
> > > support schemas in catalog.
> > > - How will you get a list of tables within a particular schema? In other
> > > words, what would listTables() method return?
> > > - How will you switch between the schemas?
> > > - Etc.
> > > 
> > > I still think assuming database=schema is the best we can do here, but I
> > > would be happy to hear another opinions from other community members.
> > > 
> > > OPTION_SCHEMA should definitely be introduced though (I thought we already
> > > did, no?). CREATE TABLE will be supported with this ticket:
> > > https://issues.apache.org/jira/browse/IGNITE-5780. For now we will have to
> > > throw an exception if custom schema name is provided when creating a Spark
> > > session, but table does not exist yet.
> > > 
> > > -Val
> > > 
> > > On Sun, Aug 26, 2018 at 7:56 AM Nikolay Izhikov 
> > > wrote:
> > > 
> > > > Igniters,
> > > > 
> > > > Personally, I don't like the solution with database == schema name.
> > > > 
> > > > 1. I think we should try to use the right abstractions.
> > > > schema == database doesn't sound right for me.
> > > > 
> > > > Do you want to answer to all of our users something like that:
> > > > 
> > > > - "How I can change Ignite SQL schema?"
> > > > - "This is obvious, just use setDatabase("MY_SCHEMA_NAME")".
> > > > 
> > > > 2. I think we restrict whole solution with that decision.
> > > > If Ignite will support multiple databases in the future we just don't
> > > 
> > > have
> > > > a place for it.
> > > > 
> > > > I think we should do the following:
> > > > 
> > > > 1. IgniteExternalCatalog should be able to return *ALL* tables
> > > > within Ignite instance.
> > > > We shouldn't restrict tables list by schema by default.
> > > > We should return tables with schema name - `schema.table`
> > > > 
> > > > 2. We should introduce `OPTION_SCHEMA` for a dataframe to 
> > > > specify
> > > > a schema.
> > > > 
> > > > There is an issue with the second step: We can't use schema name
> > > > in `CREATE TABLE` clause.
> > > > This is restriction of current Ignite SQL.
> > > > 
> > > > I propose to make the following:
> > > > 
> > > > 1. For all write modes that requires the creation of table we
> > > > should disallow usage of table outside of `SQL_PUBLIC`
> > > > or usage of `OPTION_SCHEMA`. We should throw proper exception 
> > > > for
> > > > this case.
> > > > 
> > > > 2. Create a ticket to support `CREATE TABLE` with custom schema
> > > > name.
> > > > 
> > > > 3. After resolving ticket from step 2 we can add full support of
> > > > custom schema to Spark integration.
> > > > 
> > > > 4. We should throw an exception if user try to use setDatabase.
> > > > 
> > > > Is that makes sense for you?
> > > > 
> > > > В Вс, 26/08/2018 в 14:09 +0100, Stuart Macdonald пишет:
> > > > > I'll go ahead and make the changes to represent the schema name as the
> > > > > database name for the purposes of the Spark catalog.
> > > > > 
> > > > > If anyone knows of an existing way to list all available schemata
> > > 
> > > within
> > > > an
> > > > > Ignite instance please let me know, otherwise the first task will be
> > > > > creating that mechanism.
> > > > > 
> > > > > Stuart.
> > > > > 
> > > > > On Fri, Aug 24, 2018 at 6:23 PM Valentin Kulichenko <
> > > > > valentin.kuliche...@gmail.com> wrote:
> > > > > 
> > > > > > Nikolay,
> > > > > > 
> > > > > > If there are 

[jira] [Created] (IGNITE-9585) Error message sometimes refers nonexisting log file when remote node fails to start

2018-09-13 Thread Oleg Ignatenko (JIRA)
Oleg Ignatenko created IGNITE-9585:
--

 Summary: Error message sometimes refers nonexisting log file when 
remote node fails to start
 Key: IGNITE-9585
 URL: https://issues.apache.org/jira/browse/IGNITE-9585
 Project: Ignite
  Issue Type: Bug
Affects Versions: 2.6
Reporter: Oleg Ignatenko


Teamcity build logs sometimes refer to remote node log files that aren't 
present in build artifacts 
([example|https://ci.ignite.apache.org/viewLog.html?buildTypeId=IgniteTests24Java8_StartNodes=1849937_IgniteTests24Java8_StartNodes=%3Cdefault%3E]).

I managed to reproduce this on my machine (details below) and it looks like 
typically the root cause of this is error message from 
[StartNodeCallableImpl|https://github.com/apache/ignite/blob/master/modules/ssh/src/main/java/org/apache/ignite/internal/util/nodestart/StartNodeCallableImpl.java]
 referring readers to file that doesn't exist (and it wasn't even created to 
start with).
{code:java}
return new ClusterStartNodeResultImpl(spec.host(), false, "Remote 
node could not start. " +
"See log for details: " + scriptOutputPath);
{code}
This is quite painful when one tries to investigate node launching failures 
because the misleading message causes one to waste time investigating the 
problem that doesn't exist (it appears as if log file was there but somehow 
disappeared for some mysterious reason).

To reproduce the issue locally one can do as follows: first, modify file 
[start-nodes-custom.sh|https://github.com/apache/ignite/blob/master/modules/core/src/test/bin/start-nodes-custom.sh]
 by replacing {{ignite.sh}} with the name of script that doesn't exist, eg 
{{noignite.sh}}. After that, execute unit test 
[IgniteProjectionStartStopRestartSelfTest|https://github.com/apache/ignite/blob/master/modules/ssh/src/test/java/org/apache/ignite/internal/IgniteProjectionStartStopRestartSelfTest.java]
 and study its results and logs.

You will find that {{testCustomScript}} fails - which is expected because name 
of the script intended to be executed has changed to one that doesn't exist. 
Also you will find that log file for respective node hasn't been created - 
which is also expected because shell command fails before creating it. But in 
the same time test log will refer to mentioned file as if it exists.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[GitHub] ignite pull request #4748: Ignite 2.5.1 master

2018-09-13 Thread macrergate
GitHub user macrergate opened a pull request:

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

Ignite 2.5.1 master



You can merge this pull request into a Git repository by running:

$ git pull https://github.com/gridgain/apache-ignite ignite-2.5.1-master

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/ignite/pull/4748.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #4748


commit 0ad44bc27bc79630b03748b060aa2503e0830d31
Author: Alexey Goncharuk 
Date:   2018-04-24T10:26:12Z

IGNITE-8369 Fixed ZkCommunicationErrorProcessFuture to use 
j.u.c.ConcurrentHashMap

commit 198d6d2a6c66100a38212373e61014e746b364e3
Author: Pavel Kovalenko 
Date:   2018-04-24T13:08:21Z

IGNITE-8339 Fixed partition state detection on activation - Fixes #3885.

Signed-off-by: Alexey Goncharuk 

commit b4bf53f81a4ed06b61ca207ce33ba5e859e6ce40
Author: Alexey Goncharuk 
Date:   2018-04-24T17:57:56Z

IGNITE-8082 Fixed build (added javadoc)

commit b96445247a547e538d923f6898b85bde1b8b17b9
Author: Alexey Goncharuk 
Date:   2018-04-25T09:30:09Z

ignite-2.5.1 Fixed version for backward compatibility

commit f6cb457a713bd482b202f98a795f711aa9243638
Author: Alexey Goncharuk 
Date:   2018-04-25T11:57:15Z

ignite-2.5.1 Fixed version for backward compatibility

commit 6c87080156c39f7dd70692df2f46eff8b9846a8e
Author: Pavel Kovalenko 
Date:   2018-04-25T14:39:02Z

IGNITE-8358 Destroy partition inside evictor to prevent possible deadlock. 
This closes #3911.

commit 3b93a70025f0295f1d016b981603592d3ba7a404
Author: Aleksey Plekhanov 
Date:   2018-04-25T15:40:46Z

IGNITE-8374 Fixed hanging of state transition completeion on 
cluster().activate()

Signed-off-by: Andrey Gura 

commit bae07ead40dea7f1a44688f0567f265ca6b20294
Author: Sergey Chugunov 
Date:   2018-04-25T17:59:25Z

IGNITE-8372 ZookeeperClusterNode was made Externalizable to preserve 
serializing local node's metrics - Fixes #3907.

Signed-off-by: Alexey Goncharuk 

commit 3f62a454a27588b49983c6e00a17568d7a2db634
Author: Pavel Kovalenko 
Date:   2018-04-26T13:06:52Z

IGNITE-8390 Correct assertion for historical rebalance - Fixes #3917.

Signed-off-by: Alexey Goncharuk 

commit 2f2ad0fd35c2928fb117ad8f0b0b5e05ff8a9074
Author: Ivan Rakov 
Date:   2018-04-26T15:57:38Z

IGNITE-8277 Added utilities to check and display cache info

commit 19fd136338a6571ae352df424fa7a06e8c537312
Author: Alexey Goncharuk 
Date:   2018-04-26T16:38:03Z

IGNITE-8404 Fixed NPE in MappedFileMemoryProvider

commit 1676560a844402348ee4882e8c9f9d798866697e
Author: Alexey Goncharuk 
Date:   2018-04-27T10:08:03Z

IGNITE-8408 Fixed IgniteUtils.invoke

commit e10baa510c8855bbe6344c24b4f8c6db5fc086f4
Author: Evgeny Stanilovskiy 
Date:   2018-04-25T17:46:47Z

IGNITE-8066 AssertionError while trying to archive wal segment. - Fixes 
#3837.

Signed-off-by: dpavlov 

(cherry picked from commit 1fb2369)

commit 48601cbd224e89e8396e53b4406f7a65e6fc6d9d
Author: Ivan Rakov 
Date:   2018-04-27T12:06:08Z

IGNITE-8393 Unexpected error during WAL compression fixed

Signed-off-by: Andrey Gura 

commit 23e802e5b8146677a8e05767d3db93991fb0831a
Author: Ivan Rakov 
Date:   2018-04-27T19:15:15Z

IGNITE-8416 CommandHandlerParsingTest stably fails with parsing error

Signed-off-by: Andrey Gura 

commit 7412288aa5f00533b2b1ece07b245a0029242add
Author: Ivan Rakov 
Date:   2018-05-08T12:03:00Z

IGNITE-8429 Unexpected error during incorrect WAL segment decompression, 
causes node termination

Signed-off-by: Andrey Gura 

(cherry picked from commit f3a61e4)

(cherry picked from commit 104b771)

commit 6c44ebc51b31d04f392b7248ea479bfd12af06cd
Author: Ivan Rakov 
Date:   2018-05-08T12:49:59Z

IGNITE-8429 Unexpected error during incorrect WAL segment decompression, 
causes node termination + synchronized block

(cherry picked from commit 99a07ed)

commit 561e7fafa34b638b95f6007c259436a6183f0c47
Author: Anton Kalashnikov 
Date:   2018-05-08T13:35:05Z

IGNITE-8435 StorageException is handled like NodeStoppingException during 
failing transaction commit

Signed-off-by: Andrey Gura 

(cherry picked from commit e8b846b)

commit b3ca15c36765652d311502f9e2d0ddb83ef4fc9d
Author: Anton Kalashnikov 
Date:   2018-05-08T14:10:53Z

IGNITE-8430 implemented getCurrentCoordinatorFormatted method in 
IgniteMXBean - Fixes #3957.

Signed-off-by: dpavlov 

(cherry picked from commit 666f220)

commit 383c0de3c92003650c59b20246f82df89f098c79
Author: ascherbakoff 
Date:   2018-05-10T09:08:17Z

IGNITE-8437: Control utility fails to connect to cluster if zookeeper 
discovery used. This closes #3950.

(cherry picked from commit 3cdee53)

commit 0fa7e8de720c813a2152dfa7526f5234a658e01a
Author: Pavel 

[jira] [Created] (IGNITE-9584) .NET DataStorageMetricsTest is flaky in master

2018-09-13 Thread Alexey Goncharuk (JIRA)
Alexey Goncharuk created IGNITE-9584:


 Summary: .NET DataStorageMetricsTest is flaky in master
 Key: IGNITE-9584
 URL: https://issues.apache.org/jira/browse/IGNITE-9584
 Project: Ignite
  Issue Type: Test
Reporter: Alexey Goncharuk






--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


Re: PHP thin client

2018-09-13 Thread Igor Sapego
Good.

5) I've filed a separate ticket, so it can be taken by a someone,
who is familiar with our build system: [1]

[1] - https://issues.apache.org/jira/browse/IGNITE-9465

Best Regards,
Igor


On Thu, Sep 13, 2018 at 5:07 PM Alexey Kosenchuk <
alexey.kosenc...@nobitlost.com> wrote:

> 11.09.2018 14:46, Igor Sapego пишет:
> > 1) I meant auto-generated doc, this page: [1]. By the way,
> >  many methods do not have any description as well.
>
> Updated - introduction sentences placed on the main page of the
> autogenerated API spec.
> All public methods have description, except setters for cache
> configuration which do not need it.
>
> > 2) You can, for example, print object as you generate and
> >  then get them from cache.
>
> Done.
>
> > 3) Yes, 10800 should be the default port.
>
> Done.
>
> All changes are in the updated PR.
>
> > 4) You are right, I've just used server with SSL enabled.
> >  Everything works now.
>
> Good.
>
> > 5) Ok, can you just provide a list of directories/files, that
> >  should be copied to binary release?
>
> ignite/modules/platforms/php/composer.json
> ignite/modules/platforms/php/src
> ignite/modules/platforms/php/examples
>
> If cfg file to generate the API spec should be in the release
> ignite/modules/platforms/php/api_docs/Doxyfile
>
> If tests should be in the release
> ignite/modules/platforms/php/tests
>
> Regards,
> -Alexey
>
> >
> > [1] -
> >
> https://rawgit.com/nobitlost/ignite/ignite-7783-docs/modules/platforms/php/api_docs/html/index.html
> >
> > Best Regards,
> > Igor
> >
> >
> > On Tue, Sep 11, 2018 at 1:31 AM Alexey Kosenchuk <
> > alexey.kosenc...@nobitlost.com> wrote:
> >
> >> Hi Igor,
> >>
> >> thanks for the review.
> >>
> >> Pls see below...
> >>
> >>   >> 1. Main page for documentation is empty.
> >>
> >> What is the main page for documentation?
> >>
> >> As wrote,
> >> the auto-generated API spec is here:
> >>
> >>
> https://rawgit.com/nobitlost/ignite/ignite-7783-docs/modules/platforms/php/api_docs/html/index.html
> >>
> >> All other docs are here:
> >>
> >>
> https://github.com/nobitlost/ignite/blob/ignite-7783-docs/modules/platforms/php/README.md
> >> Going to be placed on readme.io by Prachi (thanks!)
> >> https://issues.apache.org/jira/browse/IGNITE-9523
> >>
> >>   >> 2. More output for Auth example is needed. This is not a test,
> after
> >> all, but example.
> >>
> >> Will add a log when a connection happens with the details of the
> >> connection. Nothing else to output in this trivial example.
> >> In fact, the real profit for a user here is the source code with an
> >> example of TLS/auth cfg for the client.
> >>
> >>   >> 3. If I try run test with APACHE_IGNITE_CLIENT_ENDPOINTS=127.0.0.1,
> >> they fail
> >>
> >> Do you mean 10800 should be the default port when not specified by a
> user?
> >> Will add.
> >>
> >>   >> 4. If I try run test with
> >> APACHE_IGNITE_CLIENT_ENDPOINTS=127.0.0.1:10800, they fail
> >>
> >> Double checked exactly in the same environment you have. It works.
> >>
> >> Please try again.
> >> Do you use a server with all default settings? Did not you try with the
> >> server after the Auth example?
> >> Do other examples work with the same server?
> >> If you still see the problem with the tests, please send the server's
> >> log to us. And/or switch the client's debug on - call setDebug(true) -
> >> and share the client's output.
> >>
> >>   >> 5. When "maven package" command is executed on Ignite, no php
> >> directory appears
> >>
> >> Need a help from experts / release engineer.
> >>
> >> Thanks,
> >> -Alexey
> >>
> >> 10.09.2018 15:34, Igor Sapego пишет:
> >>> By the way, I used Ubuntu 18.04, PHP 7.2.7 and what seems
> >>> to be PhpUnit 7.3 (not sure here).
> >>>
> >>> Best Regards,
> >>> Igor
> >>>
> >>>
> >>> On Mon, Sep 10, 2018 at 3:28 PM Igor Sapego 
> wrote:
> >>>
>  Guys, I've reviewed the API (which looks good), run tests and examples
> >> and
>  here are my commments:
> 
>  1. Main page for documentation is empty.
> 
>  2. More output for Auth example is needed. This is not a test, after
> >> all,
>  but example.
> 
>  3. If I try run test with APACHE_IGNITE_CLIENT_ENDPOINTS=127.0.0.1,
> they
>  fail with the following message:
>  Apache\Ignite\Exception\NoConnectionException: [127.0.0.1] Failed to
> >> parse
>  address "127.0.0.1" in
> 
> >>
> /home/isapego/work/ignite/modules/platforms/php/src/Apache/Ignite/Internal/Connection/ClientFailoverSocket.php:107
>  Stack trace:
>  #0
> 
> >>
> /home/isapego/work/ignite/modules/platforms/php/src/Apache/Ignite/Internal/Connection/ClientFailoverSocket.php(54):
> 
> >>
> Apache\Ignite\Internal\Connection\ClientFailoverSocket->failoverConnect()
>  #1
> 
> >>
> /home/isapego/work/ignite/modules/platforms/php/src/Apache/Ignite/Client.php(61):
> 
> >>
> Apache\Ignite\Internal\Connection\ClientFailoverSocket->connect(Object(Apache\Ignite\ClientConfiguration))
>  #2
> 

[jira] [Created] (IGNITE-9583) PHP thin: php directory should be included in binary release

2018-09-13 Thread Igor Sapego (JIRA)
Igor Sapego created IGNITE-9583:
---

 Summary: PHP thin: php directory should be included in binary 
release
 Key: IGNITE-9583
 URL: https://issues.apache.org/jira/browse/IGNITE-9583
 Project: Ignite
  Issue Type: Improvement
  Components: build, thin client
Reporter: Igor Sapego
 Fix For: 2.7


Currently, php directory is not generated by the {{maven install}} command. 
Need to add appropriate copy steps to {{assembly/release-fabric-base.xml}} file.

The following components should be copied:
{noformat}
ignite/modules/platforms/php/composer.json
ignite/modules/platforms/php/src
ignite/modules/platforms/php/examples
{noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


Re: PHP thin client

2018-09-13 Thread Alexey Kosenchuk

11.09.2018 14:46, Igor Sapego пишет:

1) I meant auto-generated doc, this page: [1]. By the way,
 many methods do not have any description as well.


Updated - introduction sentences placed on the main page of the 
autogenerated API spec.
All public methods have description, except setters for cache 
configuration which do not need it.



2) You can, for example, print object as you generate and
 then get them from cache.


Done.


3) Yes, 10800 should be the default port.


Done.

All changes are in the updated PR.


4) You are right, I've just used server with SSL enabled.
 Everything works now.


Good.


5) Ok, can you just provide a list of directories/files, that
 should be copied to binary release?


ignite/modules/platforms/php/composer.json
ignite/modules/platforms/php/src
ignite/modules/platforms/php/examples

If cfg file to generate the API spec should be in the release
ignite/modules/platforms/php/api_docs/Doxyfile

If tests should be in the release
ignite/modules/platforms/php/tests

Regards,
-Alexey



[1] -
https://rawgit.com/nobitlost/ignite/ignite-7783-docs/modules/platforms/php/api_docs/html/index.html

Best Regards,
Igor


On Tue, Sep 11, 2018 at 1:31 AM Alexey Kosenchuk <
alexey.kosenc...@nobitlost.com> wrote:


Hi Igor,

thanks for the review.

Pls see below...

  >> 1. Main page for documentation is empty.

What is the main page for documentation?

As wrote,
the auto-generated API spec is here:

https://rawgit.com/nobitlost/ignite/ignite-7783-docs/modules/platforms/php/api_docs/html/index.html

All other docs are here:

https://github.com/nobitlost/ignite/blob/ignite-7783-docs/modules/platforms/php/README.md
Going to be placed on readme.io by Prachi (thanks!)
https://issues.apache.org/jira/browse/IGNITE-9523

  >> 2. More output for Auth example is needed. This is not a test, after
all, but example.

Will add a log when a connection happens with the details of the
connection. Nothing else to output in this trivial example.
In fact, the real profit for a user here is the source code with an
example of TLS/auth cfg for the client.

  >> 3. If I try run test with APACHE_IGNITE_CLIENT_ENDPOINTS=127.0.0.1,
they fail

Do you mean 10800 should be the default port when not specified by a user?
Will add.

  >> 4. If I try run test with
APACHE_IGNITE_CLIENT_ENDPOINTS=127.0.0.1:10800, they fail

Double checked exactly in the same environment you have. It works.

Please try again.
Do you use a server with all default settings? Did not you try with the
server after the Auth example?
Do other examples work with the same server?
If you still see the problem with the tests, please send the server's
log to us. And/or switch the client's debug on - call setDebug(true) -
and share the client's output.

  >> 5. When "maven package" command is executed on Ignite, no php
directory appears

Need a help from experts / release engineer.

Thanks,
-Alexey

10.09.2018 15:34, Igor Sapego пишет:

By the way, I used Ubuntu 18.04, PHP 7.2.7 and what seems
to be PhpUnit 7.3 (not sure here).

Best Regards,
Igor


On Mon, Sep 10, 2018 at 3:28 PM Igor Sapego  wrote:


Guys, I've reviewed the API (which looks good), run tests and examples

and

here are my commments:

1. Main page for documentation is empty.

2. More output for Auth example is needed. This is not a test, after

all,

but example.

3. If I try run test with APACHE_IGNITE_CLIENT_ENDPOINTS=127.0.0.1, they
fail with the following message:
Apache\Ignite\Exception\NoConnectionException: [127.0.0.1] Failed to

parse

address "127.0.0.1" in


/home/isapego/work/ignite/modules/platforms/php/src/Apache/Ignite/Internal/Connection/ClientFailoverSocket.php:107

Stack trace:
#0


/home/isapego/work/ignite/modules/platforms/php/src/Apache/Ignite/Internal/Connection/ClientFailoverSocket.php(54):



Apache\Ignite\Internal\Connection\ClientFailoverSocket->failoverConnect()

#1


/home/isapego/work/ignite/modules/platforms/php/src/Apache/Ignite/Client.php(61):



Apache\Ignite\Internal\Connection\ClientFailoverSocket->connect(Object(Apache\Ignite\ClientConfiguration))

#2


/home/isapego/work/ignite/modules/platforms/php/tests/TestingHelper.php(52):

Apache\Ignite\Client->connect(Object(Apache\Ignite\ClientConfiguration))
#3


/home/isapego/work/ignite/modules/platforms/php/tests/SqlQueryTest.php(49):

Apache\Ignite\Tests\TestingHelper::init()
#4


/home/isapego/work/ignite/modules/platforms/php/vendor/phpunit/phpunit/src/Framework/TestSuite.php(703):

Apache\Ignite\Tests\SqlQueryTestCase::setUpBeforeClass()
#5


/home/isapego/work/ignite/modules/platforms/php/vendor/phpunit/phpunit/src/Framework/TestSuite.php(750):

PHPUnit\Framework\TestSuite->run(Object(PHPUnit\Framework\TestResult))
#6


/home/isapego/work/ignite/modules/platforms/php/vendor/phpunit/phpunit/src/TextUI/TestRunner.php(587):

PHPUnit\Framework\TestSuite->run(Object(PHPUnit\Framework\TestResult))
#7



Re: Class field ThreadLocal. Why not static?

2018-09-13 Thread Павлухин Иван
Dmitry,

Thanks for your example! The approach looks similar to "problematic" on
used in jdk described in [1]. Fortunately, in our case buffer is quite
limited. On the other hand we always should be cautious because Ignite code
frequently is running on user threads (e.g. it is typical for SQL).

[1] http://www.evanjones.ca/java-bytebuffer-leak.html

2018-09-13 9:28 GMT+03:00 Alexey Goncharuk :

> Maxim,
>
> If multiple instances of Ignite is started in the same JVM and a user
> thread will access first one instance of Ignite, then another, you will end
> up with the static thread local holding the last WAL pointer from the
> second grid. This is possible, for example, when a user thread commits a
> transaction or runs an atomic update on a data node. Any access of the
> first Ignite instance will have an invalid thread-local value.
>
> вт, 11 сент. 2018 г. в 13:29, Maxim Muzafarov :
>
> > Alexey, Ivan,
> >
> > Agree. Keeping strong references to the Thread object is the source of
> > memory leak with ThreadLocals variables
> > and the values that it stores. ThreadLocalMap is bound to the Thread
> > lifespan [1], so I think when we are using
> > everything right all will be GC'ed correctly.
> > Is this memory leaks with ThreadLocal's you mean, Alexey? If not, please,
> > share your example.
> >
> > Also, agree that these usages should be bound to the component lifespan.
> > But for `FileWriteAheadLogManager`
> > I think this variable used not semantically right. I've dumped all
> threads
> > (total ~49 threads)
> > that are using `lastWalPtr` in `FileWriteAheadLogManager`. For instance,
> >  * exchange-worker-#40%wal.IgniteWalRecoveryTest0%
> >  * sys-#148%wal.IgniteWalRecoveryTest1%
> >  * db-checkpoint-thread-#129%wal.IgniteWalRecoveryTest2%
> > Suppose everything would be OK here for `static` and `non-static` case of
> > ThreadLocal.
> >
> > [1]
> >
> > http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/tip/src/
> share/classes/java/lang/Thread.java#l760
> >
> > On Tue, 11 Sep 2018 at 13:05 Павлухин Иван  wrote:
> >
> > > Dmitriy,
> > >
> > > Could you point to some piece of code implementing described pattern?
> > >
> > > 2018-09-11 13:02 GMT+03:00 Павлухин Иван :
> > >
> > > > Alex,
> > > >
> > > > ThreadLocal subclass is used in IgniteH2Indexing for simple access to
> > H2
> > > > Connection from current thread. Such subclass has a capability to
> > create
> > > > connection if one does not exist, so obtaining connection is merely
> > > > ThreadLocal.get. Also there are scheduled routines to cleanup
> > connections
> > > > and associated with them statement cache after some expiration time.
> > For
> > > > that reason Map is maintained. As query
> > can
> > > > run on user thread we need to cleanup mentioned map to avoid a leak
> > when
> > > > Thread is terminated. So we need to check thread status in cleanup
> > > routines
> > > > and remove entries for terminated Threads. And historically there was
> > no
> > > > cleanup for terminated threads and leak was possible. And also great
> > care
> > > > must be taken in order to avoid cyclic reference between ThreadLocal
> > > > instance and a stored value. Which easily could occur if the stored
> > value
> > > > is covered by multiple layers of abstraction.
> > > >
> > > > And I am describing some historical state. Now machinery in
> > > IgniteH2Indexing
> > > > is even more complex (I hope we will have a chance to improve it).
> > > >
> > > > 2018-09-11 11:00 GMT+03:00 Alexey Goncharuk <
> > alexey.goncha...@gmail.com
> > > >:
> > > >
> > > >> Ivan,
> > > >>
> > > >> Can you elaborate on the issue with the thread local cleanup you've
> > > faced?
> > > >>
> > > >> вт, 11 сент. 2018 г. в 9:13, Павлухин Иван :
> > > >>
> > > >> > Guys,
> > > >> >
> > > >> > As we know ThreadLocal is an instrument which should be used with
> > > great
> > > >> > care. And I recently faced with problems related to proper cleanup
> > of
> > > >> > ThreadLocal which is not needed anymore. In my opinion the best
> > thing
> > > >> (in
> > > >> > ideal world) is to get rid of ThreadLocal where possible, but I
> > guess
> > > >> that
> > > >> > it is quite hard (in real world).
> > > >> >
> > > >> > Also, a question comes to my mind. As ThreadLocal is so common in
> > our
> > > >> code,
> > > >> > could you suggest some guidance or code fragments which address
> > proper
> > > >> > ThreadLocal
> > > >> >  lifecycle control and especially cleanup?
> > > >> >
> > > >> > 2018-09-10 12:46 GMT+03:00 Alexey Goncharuk <
> > > alexey.goncha...@gmail.com
> > > >> >:
> > > >> >
> > > >> > > Maxim,
> > > >> > >
> > > >> > > Ignite supports starting multiple instances of Ignite in the
> same
> > > VM,
> > > >> so
> > > >> > > having static thread locals for the fields you mentioned does
> not
> > > >> work.
> > > >> > >
> > > >> > > Generally, I think thread-local should be bound to the lifespan
> of
> > > the
> > > >> > > component it describes. Static thread-locals are hard to
> clean-up
> > 

[GitHub] asfgit closed pull request #8: Trigger build bugfix

2018-09-13 Thread GitBox
asfgit closed pull request #8: Trigger build bugfix
URL: https://github.com/apache/ignite-teamcity-bot/pull/8
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/util/HttpUtil.java 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/util/HttpUtil.java
index 1184869..4730606 100644
--- a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/util/HttpUtil.java
+++ b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/util/HttpUtil.java
@@ -93,8 +93,10 @@ public static InputStream sendGetToGit(String githubAuthTok, 
String url) throws
 URL obj = new URL(url);
 HttpURLConnection con = (HttpURLConnection)obj.openConnection();
 
+if (githubAuthTok != null)
+con.setRequestProperty("Authorization", "token " + githubAuthTok);
+
 con.setRequestProperty("accept-charset", 
StandardCharsets.UTF_8.toString());
-con.setRequestProperty("Authorization", "token " + githubAuthTok);
 con.setRequestProperty("Connection", "Keep-Alive");
 con.setRequestProperty("Keep-Alive", "header");
 
diff --git 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuild.java
 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuild.java
index 2148a35..9269cbe 100644
--- 
a/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuild.java
+++ 
b/ignite-tc-helper-web/src/main/java/org/apache/ignite/ci/web/rest/TriggerBuild.java
@@ -32,6 +32,7 @@
 import org.apache.ignite.ci.github.PullRequest;
 import org.apache.ignite.ci.tcmodel.result.Build;
 import org.apache.ignite.ci.user.ICredentialsProv;
+import org.apache.ignite.ci.util.XmlUtil;
 import org.apache.ignite.ci.web.CtxListener;
 import org.apache.ignite.ci.web.rest.login.ServiceUnauthorizedException;
 import org.apache.ignite.ci.web.model.SimpleResult;
@@ -56,6 +57,7 @@ public SimpleResult triggerBuild(
 @Nullable @QueryParam("top") Boolean top,
 @Nullable @QueryParam("observe") Boolean observe
 ) {
+String errors = "";
 final ICredentialsProv prov = ICredentialsProv.get(req);
 
 if (!prov.hasAccess(srvId))
@@ -64,33 +66,37 @@ public SimpleResult triggerBuild(
 ITcHelper helper = CtxListener.getTcHelper(context);
 
 try (final ITeamcity teamcity = helper.server(srvId, prov)) {
-PullRequest pr = teamcity.getPullRequest(branchName);
-
-String ticketId = "";
+Build build = teamcity.triggerBuild(suiteId, branchName, false, 
top != null && top);
 
-if (pr.getTitle().startsWith("IGNITE-")) {
-int beginIdx = 7;
-int endIdx = 7;
+if (observe != null && observe) {
+PullRequest pr = teamcity.getPullRequest(branchName);
 
-while (endIdx < pr.getTitle().length() && 
Character.isDigit(pr.getTitle().charAt(endIdx)))
-endIdx++;
+String ticketId = "";
 
-ticketId = pr.getTitle().substring(beginIdx, endIdx);
-}
+if (pr.getTitle().startsWith("IGNITE-")) {
+int beginIdx = 7;
+int endIdx = 7;
 
-if (ticketId.equals(""))
-return new SimpleResult("PR title \"" + pr.getTitle() + "\" 
should starts with \"IGNITE-\"." +
-" Please, rename PR according to the" +
-" contributing 
guide.");
+while (endIdx < pr.getTitle().length() && 
Character.isDigit(pr.getTitle().charAt(endIdx)))
+endIdx++;
 
-Build build = teamcity.triggerBuild(suiteId, branchName, false, 
top != null && top);
+ticketId = pr.getTitle().substring(beginIdx, endIdx);
+}
 
-if (observe != null && observe)
-helper.buildObserver().observe(build, srvId, prov, "ignite-" + 
ticketId);
+if (!ticketId.equals(""))
+helper.buildObserver().observe(build, srvId, prov, 
"ignite-" + ticketId);
+else {
+errors += "" +
+"JIRA ticket will not be notified after the tests are 
completed - " +
+"PR title \"" + pr.getTitle() + "\" should starts with 
\"IGNITE-\"." +
+" Please, rename PR according to the" +
+" contributing guide.";
+}
+}
 }
 
-return new SimpleResult("OK");
+return new SimpleResult("Tests started." + errors);
 }
 
 @GET
diff --git a/ignite-tc-helper-web/src/main/webapp/index.html 

Re: Workflow improvement

2018-09-13 Thread Dmitrii Ryabov
Hi, Dmitriy,

Can you give me rights to stop my builds on TeamCity? Working on the TCH, I
run a lot of builds, and I don't like to ask other people to stop builds
too often.

2018-09-10 23:53 GMT+03:00 Dmitrii Ryabov :

> Hi, Dmitriy,
>
> I made PRs in my fork for test purposes. Real PRs were made to the GitHub
> mirror, and one of them is already merged by D. Govorukhin. PR with GitHub
> statuses [1] is ready for review. PR with JIRA comment will be ready in a
> few days.
>
> [1] https://github.com/apache/ignite-teamcity-bot/pull/5
>
> 2018-09-10 23:00 GMT+03:00 Dmitriy Pavlov :
>
>> Hi Dmitrii,
>>
>> I deployed change with blockers summary of failures at the top of PR
>> result
>> page. The Bot is migrating entries now, I hope it will be done in 1-4
>> hours.
>>
>> I noticed your PRs are created in your own fork, not in
>> https://github.com/apache/ignite-teamcity-bot
>> Could you please create unmerged PR in GitHub mirror so it could be merged
>> after reviewing by the apply-pr script.
>>
>> Sincerely,
>> Dmitriy Pavlov
>>
>> пн, 3 сент. 2018 г. в 18:20, Dmitrii Ryabov :
>>
>> > Hi, Dmitriy,
>> >
>> > I created a table with possible blockers [1] for the page with the
>> latest
>> > build analysis. Anton K. has reviewed it. Can you check and merge it?
>> >
>> > Also, I created a button to notify PR about analisis results [2]. I used
>> > GitHub statuses (example [3]), but to work it needs a token with push
>> > permission. As Apache PMC, can you acquire such token? I think statuses
>> are
>> > much more notable than comments.
>> >
>> > [1] https://issues.apache.org/jira/browse/IGNITE-9376
>> > [2] https://issues.apache.org/jira/browse/IGNITE-9377
>> > [3] https://github.com/SomeFire/ignite-teamcity-bot/pulls
>> >
>> > 2018-08-25 1:04 GMT+03:00 Dmitriy Pavlov :
>> >
>> > > Not sure I understood what bot statistic reduction means.
>> > >
>> > > As far as I understood, you also mean locating failure automatically
>> with
>> > > re-runs on specific git revisions (hashes). I found it will be a good
>> > > contribution to TC Bot for both flaky and non-flaky failures
>> detection.
>> > E.g
>> > > failure occurred after 10 commits merged to master. How to find out
>> bad
>> > > commit? Automatic location (analog of bisecting, but using TC test)
>> will
>> > be
>> > > really helpful. But it is not a simple contribution.
>> > >
>> > > пт, 24 авг. 2018 г. в 18:35, Dmitrii Ryabov :
>> > >
>> > > > Hi, Dmitriy,
>> > > >
>> > > > Good, I'll create tickets for this steps.
>> > > >
>> > > > Stable suites are a good idea, but also we need to do some actions
>> > when a
>> > > > flaky test will appear in stable suite of master branch run. To find
>> > out
>> > > a
>> > > > guilty commit, we should run previous commits on empty TeamCity's
>> > queue.
>> > > > This runs will reduce bot's statistics for the latest commits.
>> > > >
>> > > > 2018-08-24 16:32 GMT+03:00 Dmitriy Pavlov :
>> > > >
>> > > > > Hi Dmitriy,
>> > > > >
>> > > > > Sounds like a plan ;) I totally agree.
>> > > > > Just one proposal: I would like to avoid hiding any test
>> failures. 2
>> > > > > separate tables named 'Possible Blockers' and 'Other failures'
>> should
>> > > be
>> > > > > completely clear. Comment to PR can contain only first category.
>> > > > >
>> > > > > We had a private discussion with Anton K. and he proposed a very
>> > > > > interesting thing, I would like to bring it here. We can add
>> > > > configuration
>> > > > > into TC bot and mark some tests and some suites as 'Known Stable'
>> It
>> > > > means
>> > > > > that suite or test failure should be considered as a blocker for
>> > merge
>> > > > > every time it fails, even if fail rate is non-zero. Very first
>> list
>> > of
>> > > > such
>> > > > > suites are
>> > > > >  - Build Apache Ignite
>> > > > >  - License check
>> > > > > And tests:
>> > > > >  - .Net API Parity check
>> > > > > Please share your vision.
>> > > > >
>> > > > > Meanwhile, I've updated the TC bot.
>> > > > > - Underlying Apache Ignite DB was refactored to use lower
>> partitions
>> > > > count,
>> > > > > so restart should be faster.
>> > > > > - Now 100 builds are saved as our failure rate statistics basis.
>> > > > Flakiness
>> > > > > border was not changed, so more test now will be considered as
>> flaky.
>> > > > > - Now 4 builds required to be failed or timed out in a row before
>> > > > > notification is sent.
>> > > > >
>> > > > > Sincerely,
>> > > > > Dmitriy Pavlov
>> > > > >
>> > > > > чт, 23 авг. 2018 г. в 17:09, Dmitrii Ryabov <
>> somefire...@gmail.com>:
>> > > > >
>> > > > > > Hi, Dmitriy,
>> > > > > >
>> > > > > > I propose the next steps:
>> > > > > >
>> > > > > > 1. Show current 0% tests in a separate table at the top of the
>> > > analysis
>> > > > > > results page. Thus, we'll see most suspicious (new or very
>> flaky)
>> > > tests
>> > > > > > firstly. Or we can hide other tests under "More >>" button, like
>> > top
>> > > > long
>> > > > > > running tests.
>> > > > > > 2. Create a 

[jira] [Created] (IGNITE-9582) Document Model Updating

2018-09-13 Thread Aleksey Zinoviev (JIRA)
Aleksey Zinoviev created IGNITE-9582:


 Summary: Document Model Updating
 Key: IGNITE-9582
 URL: https://issues.apache.org/jira/browse/IGNITE-9582
 Project: Ignite
  Issue Type: Task
  Components: documentation, ml
Reporter: Aleksey Zinoviev
Assignee: Alexey Platonov






--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


Re: IoC/DI support in Apache Ignite.NEt

2018-09-13 Thread Artyom Sokolov
Hello,

I propose the following.

*Development*

1. Define *IDependencyResolver* in *Apache.Ignite.Core* under
*DependencyInjection* folder that contains at least 2 methods:

*T Resolve(object arguments = null);*
*object Resolve(Type type, object arguments = null);*

2. Create *InjectResolvableAttribute* in Apache.Ignite.Core under
*DependencyInjection* folder marked with
*[AttributeUsage(AttributeTargets.Field
| AttributeTargets.Property)]*
3. Create internal static class *DependencyInjector* with at least one
internal static method that will inject required dependencies in service
implementations like this one (exception checking is omitted currently and
has to be added)

*namespace Apache.Ignite.Core.DependencyInjection*
*{*
*using System.Linq;*
*using System.Reflection;*
*using Apache.Ignite.Core.Services;*

*internal static class DependencyInjector*
*{*
*internal static void Inject(IService svc, IIgnite ignite)*
*{*
*var dependencyResolver = ignite.GetDependencyResolver();*

*if (dependencyResolver == null)*
*{*
*return;*
*}*

*foreach (var property in svc.GetType()*
*.GetProperties(BindingFlags.Public |
BindingFlags.NonPublic | BindingFlags.Instance))*
*{*
*if
(!property.GetCustomAttributes(typeof(InjectResolvableAttribute),
true).Any())*
*{*
*continue;*
*}*

*if (!property.CanWrite)*
*{*
*continue;*
*}*

*var resolvedDependency =
dependencyResolver.Resolve(property.PropertyType);*
*property.SetValue(svc, resolvedDependency, null);*
*}*

*foreach (var field in svc.GetType()*
*.GetFields(BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance))*
*{*
*if
(!field.GetCustomAttributes(typeof(InjectResolvableAttribute), true).Any())*
*{*
*continue;*
*}*

*var resolvedDependency =
dependencyResolver.Resolve(field.FieldType);*

*field.SetValue(svc, resolvedDependency);*
*}*
*}*
*}*
*}*

4. Add* DependencyInjector.Inject(svc, _ignite);* call to
*UnmanagedCallbacks.cs* right after *ResourceProcessor.Inject(svc, _ignite)*
.
5. Add 2 methods to *Ignite* class and it's interface *IIgnite*:

*public IDependencyResolver GetDependencyResolver();*
*public IIgnite SetDependencyResolver(IDependencyResolver
dependencyResolver);*

6. Create *Apache.Ignite.DependencyInjection.CastleWindsor* project and
implement *IDependencyResolver* with *CastleWindsorDependencyResolver*
class.

*namespace Apache.Ignite.DependencyInjection.CastleWindsor*
*{*
*using System;*
*using Castle.MicroKernel;*
*using IDependencyResolver =
Core.DependencyInjection.IDependencyResolver;*

*public class CastleWindsorDependencyResolver : IDependencyResolver*
*{*
*private IKernel Kernel { get; set; }*

*public CastleWindsorDependencyResolver(IKernel kernel)*
*{*
*Kernel = kernel;*
*}*

*public T Resolve(object arguments = null)*
*{*
*return arguments == null ? Kernel.Resolve() :
Kernel.Resolve(arguments);*
*}*

*public object Resolve(Type type, object arguments = null)*
*{*
*return arguments == null ? Kernel.Resolve(type) :
Kernel.Resolve(type, arguments);*
*}*
*}*
*}*

7. Create extension like this one

namespace Apache.Ignite.DependencyInjection.CastleWindsor
{
using Apache.Ignite.Core;
using Castle.MicroKernel;

public static class IgniteExtensions
{
public static IIgnite UseCastleWindsorResolver(this IIgnite ignite,
IKernel kernel)
{
return ignite.SetDependencyResolver(new
CastleWindsorDependencyResolver(kernel));
}
}
}

8. Write test.


*Usage*

var grid = Ignition.Start();

using (var container = new WindsorContainer())
{
container.Register(Component.For().ImplementedBy());

grid.UseCastleWindsorResolver(container.Kernel);
grid.GetServices().DeployClusterSingleton("FooService", new FooService());
}


What do you think?

Cheers,
Artyom.

On Mon, Sep 10, 2018 at 5:23 PM Pavel Tupitsyn  wrote:

> Hi Artyom,
>
> Ticket already exists: https://issues.apache.org/jira/browse/IGNITE-9299
> Feel free to grab it.
>
> But before diving deep into coding, can you please provide a short overview
> of the proposed implementation?
> Either on dev list or in JIRA ticket directly.
>
> Thanks,
> Pavel
>
> On Mon, Sep 10, 2018 at 11:29 AM Alexey Goncharuk <
> alexey.goncha...@gmail.com> wrote:
>
> > Hello Artyom,
> >
> > Welcome to the Apache Ignite community! I've added you to the list of
> > contributors, you should now be able to assign tickets to yourself.
> >
> > Get familiar with 

[jira] [Created] (IGNITE-9581) Document ANN algorithm based on ACD concept

2018-09-13 Thread Aleksey Zinoviev (JIRA)
Aleksey Zinoviev created IGNITE-9581:


 Summary: Document ANN algorithm based on ACD concept
 Key: IGNITE-9581
 URL: https://issues.apache.org/jira/browse/IGNITE-9581
 Project: Ignite
  Issue Type: Task
  Components: documentation, ml
Reporter: Aleksey Zinoviev
Assignee: Aleksey Zinoviev
 Fix For: 2.7






--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[GitHub] ignite pull request #4747: IGNITE-9580: Added setMaxSize for ignite configur...

2018-09-13 Thread avplatonov
GitHub user avplatonov opened a pull request:

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

IGNITE-9580: Added setMaxSize for ignite configuration in test



You can merge this pull request into a Git repository by running:

$ git pull https://github.com/gridgain/apache-ignite ignite-9580

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/ignite/pull/4747.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #4747


commit d0a14f0de913a977363ed21bb3c8bf54b35b388a
Author: Alexey Platonov 
Date:   2018-09-13T13:01:02Z

added setMaxSize for ignite configuration in test




---


[jira] [Created] (IGNITE-9580) Fix exit code 137 in Query 1 Suite

2018-09-13 Thread Alexey Platonov (JIRA)
Alexey Platonov created IGNITE-9580:
---

 Summary: Fix exit code 137 in Query 1 Suite
 Key: IGNITE-9580
 URL: https://issues.apache.org/jira/browse/IGNITE-9580
 Project: Ignite
  Issue Type: Bug
Reporter: Alexey Platonov
Assignee: Alexey Platonov






--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


The future of Affinity / Topology concepts and possible PME optimizations.

2018-09-13 Thread Ilya Lantukh
Igniters,

As most of you know, Ignite has a concept of AffinityTopologyVersion, which
is associated with nodes that are currently present in topology and a
global cluster state (active/inactive, baseline topology, started caches).
Modification of either of them involves process called Partition Map
Exchange (PME) and results in new AffinityTopologyVersion. At that moment
all new cache and compute grid operations are globally "frozen". This might
lead to indeterminate cache downtimes.

However, our recent changes (esp. introduction of Baseline Topology) caused
me to re-think those concept. Currently there are many cases when we
trigger PME, but it isn't necessary. For example, adding/removing client
node or server node not in BLT should never cause partition map
modifications. Those events modify the *topology*, but *affinity* in
unaffected. On the other hand, there are events that affect only *affinity*
- most straightforward example is CacheAffinityChange event, which is
triggered after rebalance is finished to assign new primary/backup nodes.
So the term *AffinityTopologyVersion* now looks weird - it tries to "merge"
two entities that aren't always related. To me it makes sense to introduce
separate *AffinityVersion *and *TopologyVersion*, review all events that
currently modify AffinityTopologyVersion and split them into 3 categories:
those that modify only AffinityVersion, only TopologyVersion and both. It
will allow us to process such events using different mechanics and avoid
redundant steps, and also reconsider mapping of operations - some will be
mapped to topology, others - to affinity.

Here is my view about how different event types theoretically can be
optimized:
1. Client node start / stop: as stated above, no PME is needed, ticket
https://issues.apache.org/jira/browse/IGNITE-9558 is already in progress.
2. Server node start / stop not from baseline: should be similar to the
previous case, since nodes outside of baseline cannot be partition owners.
3. Start node in baseline: both affinity and topology versions should be
incremented, but it might be possible to optimize PME for such case and
avoid cluster-wide freeze. Partition assignments for such node are already
calculated, so we can simply put them all into MOVING state. However, it
might take significant effort to avoid race conditions and redesign our
architecture.
4. Cache start / stop: starting or stopping one cache doesn't modify
partition maps for other caches. It should be possible to change this
procedure to skip PME and perform all necessary actions (compute affinity,
start/stop cache contexts on each node) in background, but it looks like a
very complex modification too.
5. Rebalance finish: it seems possible to design a "lightweight" PME for
this case as well. If there were no node failures (and if there were, PME
should be triggered and rebalance should be cancelled anyways) all
partition states are already known by coordinator. Furthermore, no new
MOVING or OWNING node for any partition is introduced, so all previous
mappings should still be valid.

For the latter complex cases in might be necessary to introduce "is
compatible" relationship between affinity versions. Operation needs to be
remapped only if new version isn't compatible with the previous one.

Please share your thoughts.

-- 
Best regards,
Ilya


[jira] [Created] (IGNITE-9579) Document Random Forest

2018-09-13 Thread Aleksey Zinoviev (JIRA)
Aleksey Zinoviev created IGNITE-9579:


 Summary: Document Random Forest
 Key: IGNITE-9579
 URL: https://issues.apache.org/jira/browse/IGNITE-9579
 Project: Ignite
  Issue Type: Task
  Components: documentation, ml
Reporter: Aleksey Zinoviev
Assignee: Alexey Platonov
 Fix For: 2.7






--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-9578) Document K-fold cross validation of models

2018-09-13 Thread Aleksey Zinoviev (JIRA)
Aleksey Zinoviev created IGNITE-9578:


 Summary: Document K-fold cross validation of models
 Key: IGNITE-9578
 URL: https://issues.apache.org/jira/browse/IGNITE-9578
 Project: Ignite
  Issue Type: Task
  Components: documentation, ml
Reporter: Aleksey Zinoviev
Assignee: Anton Dmitriev






--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-9577) Document Preprocessing

2018-09-13 Thread Aleksey Zinoviev (JIRA)
Aleksey Zinoviev created IGNITE-9577:


 Summary: Document Preprocessing
 Key: IGNITE-9577
 URL: https://issues.apache.org/jira/browse/IGNITE-9577
 Project: Ignite
  Issue Type: Task
  Components: documentation, ml
Reporter: Aleksey Zinoviev
Assignee: Aleksey Zinoviev
 Fix For: 2.7






--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-9576) Document Multi-Class Logistic Regression

2018-09-13 Thread Aleksey Zinoviev (JIRA)
Aleksey Zinoviev created IGNITE-9576:


 Summary: Document Multi-Class Logistic Regression
 Key: IGNITE-9576
 URL: https://issues.apache.org/jira/browse/IGNITE-9576
 Project: Ignite
  Issue Type: Task
  Components: documentation, ml
Reporter: Aleksey Zinoviev
Assignee: Aleksey Zinoviev
 Fix For: 2.7






--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-9575) Document Binary Logistic Regression

2018-09-13 Thread Aleksey Zinoviev (JIRA)
Aleksey Zinoviev created IGNITE-9575:


 Summary: Document Binary Logistic Regression
 Key: IGNITE-9575
 URL: https://issues.apache.org/jira/browse/IGNITE-9575
 Project: Ignite
  Issue Type: Task
  Components: documentation, ml
Reporter: Aleksey Zinoviev
Assignee: Aleksey Zinoviev
 Fix For: 2.7






--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-9574) Document Gradient boosting

2018-09-13 Thread Aleksey Zinoviev (JIRA)
Aleksey Zinoviev created IGNITE-9574:


 Summary: Document Gradient boosting
 Key: IGNITE-9574
 URL: https://issues.apache.org/jira/browse/IGNITE-9574
 Project: Ignite
  Issue Type: Task
  Components: documentation, ml
Reporter: Aleksey Zinoviev
Assignee: Alexey Platonov
 Fix For: 2.7






--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[GitHub] SomeFire opened a new pull request #8: Trigger build bugfix

2018-09-13 Thread GitBox
SomeFire opened a new pull request #8: Trigger build bugfix
URL: https://github.com/apache/ignite-teamcity-bot/pull/8
 
 
   


This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services


[GitHub] ignite pull request #4746: Ignite 1.9.14

2018-09-13 Thread mcherkasov
GitHub user mcherkasov opened a pull request:

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

Ignite 1.9.14



You can merge this pull request into a Git repository by running:

$ git pull https://github.com/gridgain/apache-ignite ignite-1.9.14

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/ignite/pull/4746.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #4746


commit 37535634ef3325aaf9923fd17d24038dfd5cee38
Author: agura 
Date:   2017-07-11T13:24:54Z

ignite-5722 Cache entries stay in onheap after scan query execution for 
OFFHEAP_TIRED cache with expiry policy

commit c3e2eebeccbdc4bb3a7a0a70d09a8a7b63399c2c
Author: Evgenii Zhuravlev 
Date:   2017-07-18T15:50:48Z

IGNITE 5776 Add option to turn on filter reachable addresses in 
TcpCommunicationSpi

commit 97d3f42c1c95a6aafce1d0c300ccfe6708398c17
Author: shtykh_roman 
Date:   2016-09-07T05:35:31Z

IGNITE-3809: Fix for ArrayIndexOutOfBoundsException in GridUnsafeLru.

(cherry picked from commit 31b9bb8)

commit c2062d52a227dda5afee560d80c3bb4dd2ce09eb
Author: dkarachentsev 
Date:   2017-07-19T05:41:46Z

Remove empty test_utils.cpp

commit 45cbba4853bab1ba4ffe2ea0d3add99a9d454aab
Author: dkarachentsev 
Date:   2017-07-19T07:44:04Z

IGNITE-5768 - Retry resolving class name from marshaller cache and 
.classname file.

commit f24969f7e908645444df622642967a5f7fd3db23
Author: Evgenii Zhuravlev 
Date:   2017-07-19T16:30:07Z

IGNITE 5775 JobsProcessor fix bug with delay in compute

commit e5aab82f5629c2705e9bc82a7676f63c7c77062a
Author: dkarachentsev 
Date:   2017-07-20T07:37:08Z

Merge branch 'ignite-1.7.13' into ignite-1.8.9

# Conflicts:
#   
modules/core/src/main/java/org/apache/ignite/internal/jdbc2/JdbcPreparedStatement.java
#   
modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java

commit 1544d3b63974ef8a96694cfc0681548fb4625a59
Author: Evgenii Zhuravlev 
Date:   2017-07-24T07:18:59Z

Merge branch 'ignite-1.7.4-p2' into ignite-1.7.14

commit 7e5b479a9c48a6e272f8883f16d0ffa454e44046
Author: Andrey V. Mashenkov 
Date:   2017-07-24T10:27:52Z

Merge remote-tracking branch 'origin/ignite-1.7.12-p1' into ignite-1.7.14

commit cc89a6a224ade08c92f44211dc144dc806c2b400
Author: dkarachentsev 
Date:   2017-07-26T08:19:19Z

Merge branch 'ignite-1.8.9' into ignite-1.9.5

# Conflicts:
#   
modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java
#   
modules/core/src/test/java/org/apache/ignite/internal/processors/datastreamer/DataStreamerImplSelfTest.java
#   
modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite2.java
#   modules/platforms/cpp/core-test/src/test_utils.cpp

commit f3adb9559b42698771b0b9b5116dd535446d2bef
Author: vsisko 
Date:   2017-07-26T08:40:19Z

IGNITE-5781 Visor throws ClassCastException if cache store implementation 
is other than CacheJdbcPojoStore.

commit a58688f6cc6c5b114dcdd1b2fde43b7e1e5e0732
Author: vsisko 
Date:   2017-07-26T08:40:19Z

IGNITE-5781 Visor throws ClassCastException if cache store implementation 
is other than CacheJdbcPojoStore.
(cherry picked from commit f3adb95)

commit 5b8963e38254fcac3bdd255a95adf9f733ce08f2
Author: vsisko 
Date:   2017-07-26T08:40:19Z

IGNITE-5781 Visor throws ClassCastException if cache store implementation 
is other than CacheJdbcPojoStore.
(cherry picked from commit f3adb95)

commit 6c6264e93c378ff3f083528b46e673fefc76f471
Author: vsisko 
Date:   2017-07-26T08:48:27Z

Merge remote-tracking branch 'community/ignite-1.9.5' into ignite-1.9.5

commit b7d1fb25ceba20b82631bb2e926a0ad52bf19e9d
Author: sboikov 
Date:   2017-07-20T14:43:17Z

Do not process partition exchange messages in striped pool.

(cherry picked from commit 3a33706)

commit c338bb9f5ac8f34dccbac1f7058765c5ce4549a4
Author: sboikov 
Date:   2017-07-20T14:49:55Z

Removed unnecessary discoCache.updateAlives.

(cherry picked from commit 07a0698)

commit e7fbe8fba6bcd427bebf6ab6fa8746bc47b0d42f
Author: Andrey V. Mashenkov 
Date:   2017-07-31T14:20:29Z

IGNITE-4800: Lucene query may fails with NPE.

commit 8c992fb8ba33a0c0ac5c0fb741ee8ffd515c0f31
Author: Evgenii Zhuravlev 
Date:   2017-08-01T14:46:27Z

IGNITE-5775 Fix removing jobs from activeJobs for jobAlwaysActivate

commit 114f10a243e41ef1dec0f35bef92cbf6a9a4f161
Author: Evgenii Zhuravlev 
Date:   2017-08-01T14:47:25Z

Merge branch 'ignite-1.7.14' of https://github.com/gridgain/apache-ignite 
into ignite-1.7.14

commit eb3471075035d4d6ed3f54b3c26e929a6a097262
Author: Igor Sapego 
Date:   2017-08-01T15:30:54Z

Fix for C++ tests

commit 9f12a2d4bf333840df50d2a56478349f530b65c8
Author: Andrey V. Mashenkov 
Date:   2017-08-02T11:23:26Z

IGNITE-4800: Test fixed.

commit 

[GitHub] ignite pull request #4745: IGNITE-9411: mvcc timeouts

2018-09-13 Thread pavlukhin
GitHub user pavlukhin opened a pull request:

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

IGNITE-9411: mvcc timeouts



You can merge this pull request into a Git repository by running:

$ git pull https://github.com/gridgain/apache-ignite ignite-9411

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/ignite/pull/4745.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #4745


commit db172dfc174614af7cbac8b5cecb2707b49e1bdc
Author: ipavlukhin 
Date:   2018-09-04T10:53:41Z

minors in CacheMvccSelectForUpdateQueryAbstractTest

commit c288988dd4f3622c8539ab7f6f3f84b5c08b7a0c
Author: ipavlukhin 
Date:   2018-09-04T11:13:01Z

use timeout modes in deadlock tests

commit e4bf4ae3bdcd8b049e66a90f30fb5720b34fd36c
Author: ipavlukhin 
Date:   2018-09-12T10:10:50Z

CacheMvccSqlLockTimeoutTest checking that waiting locks are timed out

commit 3ad0289ade9964e8a9ec74e10f3f05ed96d72bfc
Author: ipavlukhin 
Date:   2018-09-12T12:27:55Z

translate to timeout exception in reducer

commit 9d70e0ff36546ae05230481688b9a5f3b7bd7311
Author: ipavlukhin 
Date:   2018-09-12T12:29:53Z

translate to timeout exception in DmlStatementsProcessor

commit d34b1b88a498dd090efad058292f0ea19bbd5bef
Author: ipavlukhin 
Date:   2018-09-12T13:31:58Z

Merge branch 'master' into mvcc-lock-timeouts

commit 0bb7981f9459a797cde4aa97fa200b3502b6b923
Author: ipavlukhin 
Date:   2018-09-12T14:28:06Z

dirty conversion of remote timeout to TransactionTimeoutException, check 
new exception structure in test

commit 9539ef913a8bdd364d8a449c3b4e8aecaace57ef
Author: ipavlukhin 
Date:   2018-09-13T08:57:21Z

establish first design for timeout exceptions propagation, put missing 
timeouts in place

commit c7eea3664dec1aa09facee14ce24941dfa39b180
Author: ipavlukhin 
Date:   2018-09-13T09:59:34Z

remove extra stack trace garbage from test

commit 197f3e37c0cb2fa0337c880f2e66d55a878ce809
Author: ipavlukhin 
Date:   2018-09-13T10:31:22Z

use common method for timeout calculation in DmlStatementsProcessor

commit 980d43dcee8e8a540788c7305ad53280c88269c9
Author: ipavlukhin 
Date:   2018-09-13T12:06:58Z

fix forgotten tx variable initialization in IgniteH2Indexing

commit 75ba8821d844c8e7d250154b3fb68adaae842902
Author: ipavlukhin 
Date:   2018-09-13T12:15:51Z

remove duplicated tests from suite




---


[GitHub] ignite pull request #4743: IGNITE-8149: fix for CI

2018-09-13 Thread pavlukhin
Github user pavlukhin closed the pull request at:

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


---


[GitHub] ignite pull request #4744: IGNITE-6454 reproducer fast finish

2018-09-13 Thread dgarus
GitHub user dgarus opened a pull request:

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

IGNITE-6454 reproducer fast finish



You can merge this pull request into a Git repository by running:

$ git pull https://github.com/dgarus/ignite IGNITE-6454_fix

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/ignite/pull/4744.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #4744


commit 25b2834ec58283e42801acc0ec98a7e530cc9d86
Author: dgarus 
Date:   2018-09-13T12:07:47Z

IGNITE-6454 reproducer fast finish




---


[jira] [Created] (IGNITE-9573) ZookeeperDiscoverySpiSaslFailedAuthTest fails after added to suite

2018-09-13 Thread Ilya Kasnacheev (JIRA)
Ilya Kasnacheev created IGNITE-9573:
---

 Summary: ZookeeperDiscoverySpiSaslFailedAuthTest fails after added 
to suite
 Key: IGNITE-9573
 URL: https://issues.apache.org/jira/browse/IGNITE-9573
 Project: Ignite
  Issue Type: Bug
Reporter: Ilya Kasnacheev
Assignee: Ilya Kasnacheev


Due to proliferation of static fields in Zk and Security code it fails when a 
part of suite and/or will cause other tests to fail. Needs to be fixed.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[GitHub] ignite pull request #4743: IGNITE-8149: fix for CI

2018-09-13 Thread pavlukhin
GitHub user pavlukhin opened a pull request:

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

IGNITE-8149: fix for CI

Fail DataStreamProcessorMvccSeflTest referring to IGNITE-9451 and mention 
same ticket in GridDhtPartitionsStateValidator.

You can merge this pull request into a Git repository by running:

$ git pull https://github.com/gridgain/apache-ignite ignite-8149-fix

Alternatively you can review and apply these changes as the patch at:

https://github.com/apache/ignite/pull/4743.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

This closes #4743


commit 1fecf7bf7360f231778bb91a4d49b90693167119
Author: ipavlukhin 
Date:   2018-09-13T09:46:33Z

fail DataStreamProcessorMvccSeflTest referring to IGNITE-9451 and mention 
same ticket in GridDhtPartitionsStateValidator




---


[jira] [Created] (IGNITE-9572) Web console: broken in Edge 17

2018-09-13 Thread Ilya Borisov (JIRA)
Ilya Borisov created IGNITE-9572:


 Summary: Web console: broken in Edge 17
 Key: IGNITE-9572
 URL: https://issues.apache.org/jira/browse/IGNITE-9572
 Project: Ignite
  Issue Type: Bug
Reporter: Ilya Borisov
Assignee: Ilya Borisov


What happens:
Edge 17 throws "{{Error: Expected ':'" and the web console does not work at 
all.}}

{{What to do:}}
{{1. Investigate why this happens.}}
{{2. Fix the issue.}}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


Re: Exchange stucks while node restoring state from WAL

2018-09-13 Thread Maxim Muzafarov
Igniters,

I need your help with the review of this patch. In general, it will help to
reduce PME duration. I've moved binary
memory recovery at the moment of node startup as we've discussed it with
Pavel previously this topic.

Changes are relatively small (+299 −95) and they are ready. I've left a
comment in JIRA with high-level
implementation details. Hope, this will help with the review [1].

Please, take a look.
PR: https://github.com/apache/ignite/pull/4520/files
Upsource: https://reviews.ignite.apache.org/ignite/review/IGNT-CR-727
JIRA: https://issues.apache.org/jira/browse/IGNITE-7196
TC Run All: [2]


[1]
https://issues.apache.org/jira/browse/IGNITE-7196?focusedCommentId=16613175=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-16613175
[2]
https://ci.ignite.apache.org/viewLog.html?buildId=1835822=buildResultsDiv=IgniteTests24Java8_RunAll


On Tue, 28 Aug 2018 at 17:59 Pavel Kovalenko  wrote:

> Hello Maxim,
>
> I think you're going in the right direction, but why you perform binary
> recovery only in the case when a node in the baseline?
> I think that node can also perform binary recovery before the first
> exchange is started in case of
> 1) First activation
> 2) Baseline change
>
> In all of these cases, you need just local available CacheDescriptors to
> restore binary state from WAL.
> I would like also see a test when Ignite is stopped in the middle of a
> checkpoint and binary recovery succeed before PME in that case also.
>
>
> ср, 22 авг. 2018 г. в 15:31, Pavel Kovalenko :
>
> > Hello Maxim,
> >
> > Thank you for your work. I will review your changes within the next
> > several days.
> >
> > 2018-08-22 11:12 GMT+03:00 Maxim Muzafarov :
> >
> >> Pavel,
> >>
> >> Thank you for so detailed introduction into the root of the problem of
> >> ticket IGNITE-7196.
> >> As you mentioned before, we can divide this ticket into two sub-tasks.
> So,
> >> I will
> >> file new issue for `Logical consistency recovery`. I think it's more
> >> convenient way
> >> for reviewing and merging each of these high level Steps (PRs).
> >>
> >> Currently, let's focus on `Physical(binary) consistency recovery` as the
> >> most critical
> >> part of this issue and synchronize our vision and vision of other
> >> community
> >> members
> >> on implementation details of Step 1. From this point everything what I'm
> >> saying is about
> >> only binary recovery.
> >>
> >>
> >> I think PR is almost ready (I need to check TC carefully).
> >> Can you look at my changes? Am I going the right way?
> >>
> >> PR: https://github.com/apache/ignite/pull/4520
> >> Upsource: https://reviews.ignite.apache.org/ignite/review/IGNT-CR-727
> >> JIRA: https://issues.apache.org/jira/browse/IGNITE-7196
> >>
> >>
> >> These are my milestones which I've tried to solve:
> >> 1. On first time cluster activation no changes required. We should keep
> >> this behavior.
> >>
> >> 2. `startMemoryPolicies` earlier if need.
> >> Now at the master branch data regions starts at onActivate method
> called.
> >> If we are  trying
> >> to restore binary state on node reconnects to cluster we should start
> >> regions earlier.
> >>
> >> 3. `suspendLogging` method added to switch off handlers.
> >> Keep fast PDS cleanup when joining is not in BLT (or belongs to another
> >> BLT).
> >> Restore memory and metastorage initialization required `WALWriter` and
> >> `FileWriteHandle`
> >> to be started. They can lock directory\files and block cleanups.
> >>
> >> 4. `isBaselineNode` check before resumming logging.
> >> The same as point 3. Local node gets discovery data and determines
> >> #isLocalNodeNotInBaseline.
> >> If node not in current baseline it performs cleanup local PDS and we
> >> should
> >> reset state of
> >> previously initialized at startup metastorage instance.
> >>
> >> 5. `cacheProcessorStarted` callback added to restore memory at startup.
> >> We can restore memory only after having info about all
> >> `CacheGroupDescriptor`. To achieve this
> >> we should do restoring at the moment `GridCacheProcessor` started.
> >>
> >> 6. Move `fsync` for `MemoryRecoveryRecord` at node startup.
> >> We are fsync'ing it inside running PME. Suppose, it used for recovery
> >> actions and\or control
> >> cluster state outside Ignite project (methods `nodeStart` and
> >> `nodeStartedPointers` of this
> >> are not used at Ignite project code). I've moved them at the node
> startup,
> >> but may be we should
> >> dumping timestamp only at the time of node activation. Not sure.
> >>
> >> 7. `testBinaryRecoverBeforeExchange` test added to check restore before
> >> PME.
> >> Not sure that we should repeat wal reading logic as it was in
> >> `testApplyDeltaRecords` test for
> >> checking memory restoring. Suppose, minimally necessary condition is to
> >> check `lastRestored` and
> >> `checkpointHistory` states of database manager's (they should happend
> >> before node joins to cluster).
> >>
> >> I will create separate ticket and refactor 

[jira] [Created] (IGNITE-9571) Web console: update Project Structure UI to a new style

2018-09-13 Thread Pavel Konstantinov (JIRA)
Pavel Konstantinov created IGNITE-9571:
--

 Summary: Web console: update Project Structure UI to a new style
 Key: IGNITE-9571
 URL: https://issues.apache.org/jira/browse/IGNITE-9571
 Project: Ignite
  Issue Type: Bug
Reporter: Pavel Konstantinov
 Attachments: screenshot-1.png





--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-9570) Fix failures in CacheMvccSelectForUpdateQueryAbstractTest

2018-09-13 Thread Vladimir Ozerov (JIRA)
Vladimir Ozerov created IGNITE-9570:
---

 Summary: Fix failures in CacheMvccSelectForUpdateQueryAbstractTest
 Key: IGNITE-9570
 URL: https://issues.apache.org/jira/browse/IGNITE-9570
 Project: Ignite
  Issue Type: Task
  Components: mvcc
Reporter: Vladimir Ozerov
Assignee: Vladimir Ozerov
 Fix For: 2.7


Caused by badly formed test itself.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-9569) Web console: use $inject for DI instead of arrays

2018-09-13 Thread Ilya Borisov (JIRA)
Ilya Borisov created IGNITE-9569:


 Summary: Web console: use $inject for DI instead of arrays
 Key: IGNITE-9569
 URL: https://issues.apache.org/jira/browse/IGNITE-9569
 Project: Ignite
  Issue Type: Improvement
  Components: wizards
Reporter: Ilya Borisov
Assignee: Ilya Borisov


To do:
1. Remove provider registration by array spread, like this:
{code:java}
.service(...serviceArray){code}
 

Instead, use the canonical AngularJS approach:
{code:java}
.service('SeriveName', Service){code}
 

2. Do not use array Di syntax for exported symbols:
{code:java}
export ['IgniteVersion', 'Confirm', function directive (version, 
confirm){}]{code}
 

Instead, use $inject property:
{code:java}
export function directive(version, confirm) {}
directive.$inject = ['IgniteVersion', 'Confirm']{code}

Motivation:
The changes above will make older providers accessible to TypeScript, which in 
turn will allow to increase type coverage.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


[jira] [Created] (IGNITE-9568) Web console: fields are not visible under Firefox

2018-09-13 Thread Pavel Konstantinov (JIRA)
Pavel Konstantinov created IGNITE-9568:
--

 Summary: Web console: fields are not visible under Firefox
 Key: IGNITE-9568
 URL: https://issues.apache.org/jira/browse/IGNITE-9568
 Project: Ignite
  Issue Type: Bug
Reporter: Pavel Konstantinov
 Attachments: screenshot-1.png





--
This message was sent by Atlassian JIRA
(v7.6.3#76005)


Re: Class field ThreadLocal. Why not static?

2018-09-13 Thread Alexey Goncharuk
Maxim,

If multiple instances of Ignite is started in the same JVM and a user
thread will access first one instance of Ignite, then another, you will end
up with the static thread local holding the last WAL pointer from the
second grid. This is possible, for example, when a user thread commits a
transaction or runs an atomic update on a data node. Any access of the
first Ignite instance will have an invalid thread-local value.

вт, 11 сент. 2018 г. в 13:29, Maxim Muzafarov :

> Alexey, Ivan,
>
> Agree. Keeping strong references to the Thread object is the source of
> memory leak with ThreadLocals variables
> and the values that it stores. ThreadLocalMap is bound to the Thread
> lifespan [1], so I think when we are using
> everything right all will be GC'ed correctly.
> Is this memory leaks with ThreadLocal's you mean, Alexey? If not, please,
> share your example.
>
> Also, agree that these usages should be bound to the component lifespan.
> But for `FileWriteAheadLogManager`
> I think this variable used not semantically right. I've dumped all threads
> (total ~49 threads)
> that are using `lastWalPtr` in `FileWriteAheadLogManager`. For instance,
>  * exchange-worker-#40%wal.IgniteWalRecoveryTest0%
>  * sys-#148%wal.IgniteWalRecoveryTest1%
>  * db-checkpoint-thread-#129%wal.IgniteWalRecoveryTest2%
> Suppose everything would be OK here for `static` and `non-static` case of
> ThreadLocal.
>
> [1]
>
> http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/tip/src/share/classes/java/lang/Thread.java#l760
>
> On Tue, 11 Sep 2018 at 13:05 Павлухин Иван  wrote:
>
> > Dmitriy,
> >
> > Could you point to some piece of code implementing described pattern?
> >
> > 2018-09-11 13:02 GMT+03:00 Павлухин Иван :
> >
> > > Alex,
> > >
> > > ThreadLocal subclass is used in IgniteH2Indexing for simple access to
> H2
> > > Connection from current thread. Such subclass has a capability to
> create
> > > connection if one does not exist, so obtaining connection is merely
> > > ThreadLocal.get. Also there are scheduled routines to cleanup
> connections
> > > and associated with them statement cache after some expiration time.
> For
> > > that reason Map is maintained. As query
> can
> > > run on user thread we need to cleanup mentioned map to avoid a leak
> when
> > > Thread is terminated. So we need to check thread status in cleanup
> > routines
> > > and remove entries for terminated Threads. And historically there was
> no
> > > cleanup for terminated threads and leak was possible. And also great
> care
> > > must be taken in order to avoid cyclic reference between ThreadLocal
> > > instance and a stored value. Which easily could occur if the stored
> value
> > > is covered by multiple layers of abstraction.
> > >
> > > And I am describing some historical state. Now machinery in
> > IgniteH2Indexing
> > > is even more complex (I hope we will have a chance to improve it).
> > >
> > > 2018-09-11 11:00 GMT+03:00 Alexey Goncharuk <
> alexey.goncha...@gmail.com
> > >:
> > >
> > >> Ivan,
> > >>
> > >> Can you elaborate on the issue with the thread local cleanup you've
> > faced?
> > >>
> > >> вт, 11 сент. 2018 г. в 9:13, Павлухин Иван :
> > >>
> > >> > Guys,
> > >> >
> > >> > As we know ThreadLocal is an instrument which should be used with
> > great
> > >> > care. And I recently faced with problems related to proper cleanup
> of
> > >> > ThreadLocal which is not needed anymore. In my opinion the best
> thing
> > >> (in
> > >> > ideal world) is to get rid of ThreadLocal where possible, but I
> guess
> > >> that
> > >> > it is quite hard (in real world).
> > >> >
> > >> > Also, a question comes to my mind. As ThreadLocal is so common in
> our
> > >> code,
> > >> > could you suggest some guidance or code fragments which address
> proper
> > >> > ThreadLocal
> > >> >  lifecycle control and especially cleanup?
> > >> >
> > >> > 2018-09-10 12:46 GMT+03:00 Alexey Goncharuk <
> > alexey.goncha...@gmail.com
> > >> >:
> > >> >
> > >> > > Maxim,
> > >> > >
> > >> > > Ignite supports starting multiple instances of Ignite in the same
> > VM,
> > >> so
> > >> > > having static thread locals for the fields you mentioned does not
> > >> work.
> > >> > >
> > >> > > Generally, I think thread-local should be bound to the lifespan of
> > the
> > >> > > component it describes. Static thread-locals are hard to clean-up
> > and
> > >> > they
> > >> > > often lead to leaks, so I would rather changed existing static
> > >> > > thread-locals to be non-static.
> > >> > >
> > >> > > --AG
> > >> > >
> > >> > > пн, 10 сент. 2018 г. в 11:54, Maxim Muzafarov  >:
> > >> > >
> > >> > > > Igniters,
> > >> > > >
> > >> > > > According to javadoc [1] class ThreadLocal:
> > >> > > > `ThreadLocal instances are typically private *static* fields in
> > >> classes
> > >> > > > that wish to associate state with a thread (e.g., a user ID or
> > >> > > Transaction
> > >> > > > ID).`
> > >> > > >
> > >> > > > So, AFAIK non-static ThreadLocal usage means as `per thread -
> per
> > >>