Opendaylight - Why does Future work in init method but not inside rpc?
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
add a comment |
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
What is the type (class name) of theFuture
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
add a comment |
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
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
java future java.util.concurrent opendaylight
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 theFuture
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
add a comment |
What is the type (class name) of theFuture
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
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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