Opendaylight - Why does Future work in init method but not inside rpc?












0














I am developing an ODL application. This is an rpc in my yang.



rpc device-connection-establishment {
input {
list device-list {
leaf device-id {
type string;
mandatory true;
}
leaf device-ip {
type inet:ip-address;
mandatory true;
}
leaf port {
type uint32;
}
}
}

}


getSession is a function that I have written in Java, which will be used in the rpc.This function has a future object in it. doSomethingWith() is just a function where I am doing some operations on the arguments provided.



public void getSession(String deviceName, String ip, int port){
Config config = doSomethingwith(deviceName,ip,port);
io.netty.util.concurrent.Future<NetconfClientSession> clientFuture = netconfClientDispatcher.createClient(config);
NetconfClientSession clientSession = clientFuture.get();
System.out.println(clientSession);
}


I try to use the getSession function in the implementation of the rpc in the following way:



public java.util.concurrent.Future<RpcResult<DeviceConnectionEstablishmentOutput>> deviceConnectionEstablishment(
DeviceConnectionEstablishmentInput input) {
List<DeviceList> devices = input.getDeviceList();
for (DeviceList device : devices) {
String deviceName = device.getDeviceId();
IpAddress ip = device.getDeviceIp();
long port = input.getPort();
getSession(deviceName, ip.getIpv4Address().getValue(), (int) port);
}
return null;
}


I also have an init function which is called from the blueprint automatically when the bundle starts.



public void init() {
System.out.println("INIT STARTED");
getSession("device1", "1.1.1.1", 2022);
}


My problem is, the startNeConnect() inside init function works properly (ie) clientFuture.get() returns the result of the future. But the same function call inside the rpc does not work proerply. clientFuture.get() does not return anything and keeps blocking.



Why does this happen? I have even tried adding separate threads, timeouts. But it is not getting resolved.



UPDATE::: The two Future objects used in the above snippets are from different packages. The return type of the rpc is of type java.util.concurrent.Future. The future used in getSession is of type io.netty.util.concurrent.Future.










share|improve this question
























  • What is the type (class name) of the Future used?
    – Alexandre Dupriez
    Nov 18 '18 at 9:36










  • The Future return type of the rpc is java.util.concurrent.Future. The one used in the getSession function is of type io.netty.util.concurrent.Future. I will update this in my question.
    – Pravin Kumar
    Nov 18 '18 at 9:45
















0














I am developing an ODL application. This is an rpc in my yang.



rpc device-connection-establishment {
input {
list device-list {
leaf device-id {
type string;
mandatory true;
}
leaf device-ip {
type inet:ip-address;
mandatory true;
}
leaf port {
type uint32;
}
}
}

}


getSession is a function that I have written in Java, which will be used in the rpc.This function has a future object in it. doSomethingWith() is just a function where I am doing some operations on the arguments provided.



public void getSession(String deviceName, String ip, int port){
Config config = doSomethingwith(deviceName,ip,port);
io.netty.util.concurrent.Future<NetconfClientSession> clientFuture = netconfClientDispatcher.createClient(config);
NetconfClientSession clientSession = clientFuture.get();
System.out.println(clientSession);
}


I try to use the getSession function in the implementation of the rpc in the following way:



public java.util.concurrent.Future<RpcResult<DeviceConnectionEstablishmentOutput>> deviceConnectionEstablishment(
DeviceConnectionEstablishmentInput input) {
List<DeviceList> devices = input.getDeviceList();
for (DeviceList device : devices) {
String deviceName = device.getDeviceId();
IpAddress ip = device.getDeviceIp();
long port = input.getPort();
getSession(deviceName, ip.getIpv4Address().getValue(), (int) port);
}
return null;
}


I also have an init function which is called from the blueprint automatically when the bundle starts.



public void init() {
System.out.println("INIT STARTED");
getSession("device1", "1.1.1.1", 2022);
}


My problem is, the startNeConnect() inside init function works properly (ie) clientFuture.get() returns the result of the future. But the same function call inside the rpc does not work proerply. clientFuture.get() does not return anything and keeps blocking.



Why does this happen? I have even tried adding separate threads, timeouts. But it is not getting resolved.



UPDATE::: The two Future objects used in the above snippets are from different packages. The return type of the rpc is of type java.util.concurrent.Future. The future used in getSession is of type io.netty.util.concurrent.Future.










share|improve this question
























  • What is the type (class name) of the Future used?
    – Alexandre Dupriez
    Nov 18 '18 at 9:36










  • The Future return type of the rpc is java.util.concurrent.Future. The one used in the getSession function is of type io.netty.util.concurrent.Future. I will update this in my question.
    – Pravin Kumar
    Nov 18 '18 at 9:45














0












0








0







I am developing an ODL application. This is an rpc in my yang.



rpc device-connection-establishment {
input {
list device-list {
leaf device-id {
type string;
mandatory true;
}
leaf device-ip {
type inet:ip-address;
mandatory true;
}
leaf port {
type uint32;
}
}
}

}


getSession is a function that I have written in Java, which will be used in the rpc.This function has a future object in it. doSomethingWith() is just a function where I am doing some operations on the arguments provided.



public void getSession(String deviceName, String ip, int port){
Config config = doSomethingwith(deviceName,ip,port);
io.netty.util.concurrent.Future<NetconfClientSession> clientFuture = netconfClientDispatcher.createClient(config);
NetconfClientSession clientSession = clientFuture.get();
System.out.println(clientSession);
}


I try to use the getSession function in the implementation of the rpc in the following way:



public java.util.concurrent.Future<RpcResult<DeviceConnectionEstablishmentOutput>> deviceConnectionEstablishment(
DeviceConnectionEstablishmentInput input) {
List<DeviceList> devices = input.getDeviceList();
for (DeviceList device : devices) {
String deviceName = device.getDeviceId();
IpAddress ip = device.getDeviceIp();
long port = input.getPort();
getSession(deviceName, ip.getIpv4Address().getValue(), (int) port);
}
return null;
}


I also have an init function which is called from the blueprint automatically when the bundle starts.



public void init() {
System.out.println("INIT STARTED");
getSession("device1", "1.1.1.1", 2022);
}


My problem is, the startNeConnect() inside init function works properly (ie) clientFuture.get() returns the result of the future. But the same function call inside the rpc does not work proerply. clientFuture.get() does not return anything and keeps blocking.



Why does this happen? I have even tried adding separate threads, timeouts. But it is not getting resolved.



UPDATE::: The two Future objects used in the above snippets are from different packages. The return type of the rpc is of type java.util.concurrent.Future. The future used in getSession is of type io.netty.util.concurrent.Future.










share|improve this question















I am developing an ODL application. This is an rpc in my yang.



rpc device-connection-establishment {
input {
list device-list {
leaf device-id {
type string;
mandatory true;
}
leaf device-ip {
type inet:ip-address;
mandatory true;
}
leaf port {
type uint32;
}
}
}

}


getSession is a function that I have written in Java, which will be used in the rpc.This function has a future object in it. doSomethingWith() is just a function where I am doing some operations on the arguments provided.



public void getSession(String deviceName, String ip, int port){
Config config = doSomethingwith(deviceName,ip,port);
io.netty.util.concurrent.Future<NetconfClientSession> clientFuture = netconfClientDispatcher.createClient(config);
NetconfClientSession clientSession = clientFuture.get();
System.out.println(clientSession);
}


I try to use the getSession function in the implementation of the rpc in the following way:



public java.util.concurrent.Future<RpcResult<DeviceConnectionEstablishmentOutput>> deviceConnectionEstablishment(
DeviceConnectionEstablishmentInput input) {
List<DeviceList> devices = input.getDeviceList();
for (DeviceList device : devices) {
String deviceName = device.getDeviceId();
IpAddress ip = device.getDeviceIp();
long port = input.getPort();
getSession(deviceName, ip.getIpv4Address().getValue(), (int) port);
}
return null;
}


I also have an init function which is called from the blueprint automatically when the bundle starts.



public void init() {
System.out.println("INIT STARTED");
getSession("device1", "1.1.1.1", 2022);
}


My problem is, the startNeConnect() inside init function works properly (ie) clientFuture.get() returns the result of the future. But the same function call inside the rpc does not work proerply. clientFuture.get() does not return anything and keeps blocking.



Why does this happen? I have even tried adding separate threads, timeouts. But it is not getting resolved.



UPDATE::: The two Future objects used in the above snippets are from different packages. The return type of the rpc is of type java.util.concurrent.Future. The future used in getSession is of type io.netty.util.concurrent.Future.







java future java.util.concurrent opendaylight






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 18 '18 at 9:46







Pravin Kumar

















asked Nov 18 '18 at 8:09









Pravin KumarPravin Kumar

316




316












  • What is the type (class name) of the Future used?
    – Alexandre Dupriez
    Nov 18 '18 at 9:36










  • The Future return type of the rpc is java.util.concurrent.Future. The one used in the getSession function is of type io.netty.util.concurrent.Future. I will update this in my question.
    – Pravin Kumar
    Nov 18 '18 at 9:45


















  • What is the type (class name) of the Future used?
    – Alexandre Dupriez
    Nov 18 '18 at 9:36










  • The Future return type of the rpc is java.util.concurrent.Future. The one used in the getSession function is of type io.netty.util.concurrent.Future. I will update this in my question.
    – Pravin Kumar
    Nov 18 '18 at 9:45
















What is the type (class name) of the Future used?
– Alexandre Dupriez
Nov 18 '18 at 9:36




What is the type (class name) of the Future used?
– Alexandre Dupriez
Nov 18 '18 at 9:36












The Future return type of the rpc is java.util.concurrent.Future. The one used in the getSession function is of type io.netty.util.concurrent.Future. I will update this in my question.
– Pravin Kumar
Nov 18 '18 at 9:45




The Future return type of the rpc is java.util.concurrent.Future. The one used in the getSession function is of type io.netty.util.concurrent.Future. I will update this in my question.
– Pravin Kumar
Nov 18 '18 at 9:45












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53358992%2fopendaylight-why-does-future-work-in-init-method-but-not-inside-rpc%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.





Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


Please pay close attention to the following guidance:


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53358992%2fopendaylight-why-does-future-work-in-init-method-but-not-inside-rpc%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

How to change which sound is reproduced for terminal bell?

Title Spacing in Bjornstrup Chapter, Removing Chapter Number From Contents

Can I use Tabulator js library in my java Spring + Thymeleaf project?