ignite-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Raúl Kripalani (JIRA) <j...@apache.org>
Subject [jira] [Updated] (IGNITE-1237) IP Finders should have a lifecycle
Date Tue, 11 Aug 2015 23:40:49 GMT

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

Raúl Kripalani updated IGNITE-1237:
-----------------------------------
    Description: 
Currently TCP Discovery IP Finders do not have a lifecycle. As a consequence, in all existing
implementations, calls to the {{registerAddresses}}, {{unregisterAddresses}}, {{getRegisteredAddresses}}
end up performing lazy initialisation (via a private {{init}} method).

Unfortunately this design doesn't give an IP Finder a chance to destroy any resources cleanly.

I tried overriding the parent's {{onSpiContextInitialized}} and {{onSpiContextDestroyed}},
but unfortunately I did not get any callbacks. At least not when initializing the grid from
a JUnit test:

{code}
    public void testOneIgniteNodeIsAlone() throws Exception {
        TcpDiscoveryZookeeperIpFinder zkIpFinder = new TcpDiscoveryZookeeperIpFinder();
        zkIpFinder.setZkUrl(zkCluster.getConnectString());

        IgniteConfiguration config = newIgniteConfigWithZk(zkIpFinder);

        startGrid("zkgrid", config);

        Assert.assertEquals(1, grid().cluster().metrics().getTotalNodes());

    }

    private IgniteConfiguration newIgniteConfigWithZk(TcpDiscoveryZookeeperIpFinder zkIpFinder)
throws Exception {
        IgniteConfiguration configuration = super.getConfiguration();
        TcpDiscoverySpi tcpDisco = (TcpDiscoverySpi) configuration.getDiscoverySpi();
        tcpDisco.setIpFinder(zkIpFinder);
        return configuration;
    }
{code}

(just pasting my code here in case the culprit of not receiving callbacks is the way I start
the grid)

  was:
Currently TCP Discovery IP Finders do not have a lifecycle. As a consequence, in all existing
implementations, calls to the {{registerAddresses}}, {{unregisterAddresses}}, {{getRegisteredAddresses}}
end up performing lazy initialisation (via a private {{init}} method).

Unfortunately this design doesn't give an IP Finder a chance to destroy any resources cleanly.

I tried overriding the parent's {{onSpiContextInitialized}} and {{onSpiContextDestroyed}},
but unfortunately I did not get any callbacks. At least not when initializing the grid from
a JUnit test:

{code}
public void testOneIgniteNodeIsAlone() throws Exception {
        TcpDiscoveryZookeeperIpFinder zkIpFinder = new TcpDiscoveryZookeeperIpFinder();
        zkIpFinder.setZkUrl(zkCluster.getConnectString());

        IgniteConfiguration config = newIgniteConfigWithZk(zkIpFinder);

        startGrid("zkgrid", config);

        Assert.assertEquals(1, grid().cluster().metrics().getTotalNodes());


    }

    private IgniteConfiguration newIgniteConfigWithZk(TcpDiscoveryZookeeperIpFinder zkIpFinder)
throws Exception {
        IgniteConfiguration configuration = super.getConfiguration();
        TcpDiscoverySpi tcpDisco = (TcpDiscoverySpi) configuration.getDiscoverySpi();
        tcpDisco.setIpFinder(zkIpFinder);
        return configuration;
    }
{code}

(just pasting my code here in case the culprit of not receiving callbacks is the way I start
the grid)


> IP Finders should have a lifecycle
> ----------------------------------
>
>                 Key: IGNITE-1237
>                 URL: https://issues.apache.org/jira/browse/IGNITE-1237
>             Project: Ignite
>          Issue Type: Improvement
>          Components: general
>            Reporter: Raúl Kripalani
>            Assignee: Raúl Kripalani
>
> Currently TCP Discovery IP Finders do not have a lifecycle. As a consequence, in all
existing implementations, calls to the {{registerAddresses}}, {{unregisterAddresses}}, {{getRegisteredAddresses}}
end up performing lazy initialisation (via a private {{init}} method).
> Unfortunately this design doesn't give an IP Finder a chance to destroy any resources
cleanly.
> I tried overriding the parent's {{onSpiContextInitialized}} and {{onSpiContextDestroyed}},
but unfortunately I did not get any callbacks. At least not when initializing the grid from
a JUnit test:
> {code}
>     public void testOneIgniteNodeIsAlone() throws Exception {
>         TcpDiscoveryZookeeperIpFinder zkIpFinder = new TcpDiscoveryZookeeperIpFinder();
>         zkIpFinder.setZkUrl(zkCluster.getConnectString());
>         IgniteConfiguration config = newIgniteConfigWithZk(zkIpFinder);
>         startGrid("zkgrid", config);
>         Assert.assertEquals(1, grid().cluster().metrics().getTotalNodes());
>     }
>     private IgniteConfiguration newIgniteConfigWithZk(TcpDiscoveryZookeeperIpFinder zkIpFinder)
throws Exception {
>         IgniteConfiguration configuration = super.getConfiguration();
>         TcpDiscoverySpi tcpDisco = (TcpDiscoverySpi) configuration.getDiscoverySpi();
>         tcpDisco.setIpFinder(zkIpFinder);
>         return configuration;
>     }
> {code}
> (just pasting my code here in case the culprit of not receiving callbacks is the way
I start the grid)



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

Mime
View raw message