-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
bugSomething isn't workingSomething isn't working
Description
A simple syncRequest like the code provided below fails with:
[INFO ] 2025-07-15 17:34:09.159 [pool-2-thread-3] Manager - Linking consumer topic://eu.nebulouscloud.cfsb.get_node_candidates_multi.reply
java.lang.NullPointerException: Cannot invoke "com.fasterxml.jackson.databind.node.ObjectNode.withArray(String, com.fasterxml.jackson.databind.JsonNode$OverwriteMode, boolean)" because "jsonBody" is null
at eut.nebulouscloud.tests.internal.TestSyncRequest.<init>(TestSyncRequest.java:70)
at eut.nebulouscloud.tests.internal.TestSyncRequest.main(TestSyncRequest.java:92)
[WARN ] 2025-07-15 17:34:15.512 [pool-2-thread-3] Manager - Seems the consumer has been stopped
This only happens with the "new" version of the Java exn library, dependency:
<groupId>io.github.eu-nebulous</groupId>
<artifactId>exn-connector-java</artifactId>
<version>1.0-SNAPSHOT</version>
Old version of the dependency works fine:
<groupId>eu.nebulouscloud</groupId>
<artifactId>exn-connector-java</artifactId>
<version>1.0-SNAPSHOT</version>
Sample code:
package eut.nebulouscloud.tests.internal;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import eu.nebulouscloud.exn.Connector;
import eu.nebulouscloud.exn.core.Context;
import eu.nebulouscloud.exn.core.SyncedPublisher;
import eu.nebulouscloud.exn.handlers.ConnectorHandler;
import eu.nebulouscloud.exn.settings.StaticExnConfig;
public class TestSyncRequest {
static Logger LOGGER = LoggerFactory.getLogger(TestSyncRequest.class);
protected ObjectMapper om = new ObjectMapper();
private Connector myEXNClient;
static Context context;
String applicationId = UUID.randomUUID().toString();
private TestSyncRequest() throws InterruptedException {
myEXNClient = new Connector(
"thisINotImportant",
new ConnectorHandler() {
public void onReady(Context context) {
TestSyncRequest.context = context;
LOGGER.info("Optimiser-controller connected to ActiveMQ, got connection context {}", context);
}
},
List.of(),
List.of(),
true,
true,
new StaticExnConfig("localhost", 5672, "admin", "nebulous", 15, "eu.nebulouscloud")
);
myEXNClient.start();
LOGGER.info("Starting test");
String queryBody = "[[{\"type\":\"AttributeRequirement\",\"requirementClass\":\"hardware\",\"requirementAttribute\":\"ram\",\"requirementOperator\":\"GEQ\",\"value\":\"8192\"},{\"type\":\"AttributeRequirement\",\"requirementClass\":\"hardware\",\"requirementAttribute\":\"cores\",\"requirementOperator\":\"GEQ\",\"value\":\"4\"},{\"type\":\"NodeTypeRequirement\",\"nodeTypes\":[\"IAAS\"],\"jobIdForBYON\":\"\",\"jobIdForEDGE\":\"\"},{\"type\":\"AttributeRequirement\",\"requirementClass\":\"cloud\",\"requirementAttribute\":\"id\",\"requirementOperator\":\"EQ\",\"value\":\"669b7f95-08cb-4f6a-a830-2b7ab366194f\"}]]";
String appID = UUID.randomUUID().toString();
ObjectMapper mapper = new ObjectMapper();
int publisherNameCounter = 0;
while (true) {
SyncedPublisher findBrokerNodeCandidatesMultiple = null;
try {
findBrokerNodeCandidatesMultiple = new SyncedPublisher(
"findBrokerNodeCandidatesMultiple" + publisherNameCounter++,
"eu.nebulouscloud.cfsb.get_node_candidates_multi",
true,
true
);
Context context = TestSyncRequest.context;
context.registerPublisher(findBrokerNodeCandidatesMultiple);
Map<String, Object> msg = Map.of("body", queryBody);
Map<String, Object> response = findBrokerNodeCandidatesMultiple.sendSync(msg, appID, null, false);
ObjectNode jsonBody = mapper.convertValue(response, ObjectNode.class);
List<JsonNode> result = Arrays.asList(
mapper.convertValue(
jsonBody.withArray("/body", JsonNode.OverwriteMode.ALL, true),
JsonNode[].class
)
);
LOGGER.info(appID + "->" + result.size());
} catch (Exception e) {
e.printStackTrace();
} finally {
if (findBrokerNodeCandidatesMultiple != null) {
context.unregisterPublisher(findBrokerNodeCandidatesMultiple.key());
}
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws IOException, InterruptedException {
new TestSyncRequest();
}
}
```
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working