[jboss-jira] [JBoss JIRA] (WFLY-3574) management API blocking write requests during initialization
Michael Mutschler (JIRA)
issues at jboss.org
Wed Jul 2 09:11:29 EDT 2014
[ https://issues.jboss.org/browse/WFLY-3574?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Mutschler updated WFLY-3574:
------------------------------------
Steps to Reproduce:
In this simple example I try to remove the default ExampleDS (it should fail, but the bug is, that I get no result)
Here is the Listener I use:
{code:title=ConfigListener.java|borderStyle=dashed}
@WebListener
public class ConfigListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
RemoveExampleDS.run();
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {}
}
{code}
RemoveExampleDS has the actual code to remove the Datasource:
{code:title=RemoveExampleDS.java|borderStyle=dashed}
public class RemoveExampleDS {
public static void run() {
try {
deleteDataSource("ExampleDS");
} catch (IOException e) { log(e); }
}
private static void deleteDataSource(String dsName) throws IOException {
log("removing datasource " + dsName);
final ModelNode request = new ModelNode();
request.get(ClientConstants.OP).set(ClientConstants.REMOVE_OPERATION);
request.get(ClientConstants.OP_ADDR).add("subsystem", "datasources");
request.get(ClientConstants.OP_ADDR).add("data-source", dsName);
execute(request);
log("datasource " + dsName + " removed");
}
private static void execute(ModelNode request) throws IOException {
log("connecting to management");
ModelControllerClient client = ModelControllerClient.Factory.create("localhost", 9990);
log("executing: " + request);
ModelNode response = client.execute(request);
log("response: " + response);
client.close();
log(response.get(ClientConstants.RESULT));
}
private static void log(Object o) { System.out.println(o); }
}
{code}
I packed this into a war, and it is the only war I am running in a default wildfly installation.
The log looks like this. Note: there is no response for the remove!
{noformat}
2014-07-02 14:26:54,280 INFO [stdout] (MSC service thread 1-12) removing datasource ExampleDS
2014-07-02 14:26:54,292 INFO [stdout] (MSC service thread 1-12) connecting to management
2014-07-02 14:26:54,317 INFO [stdout] (MSC service thread 1-12) executing: {
2014-07-02 14:26:54,318 INFO [stdout] (MSC service thread 1-12) "operation" => "remove",
2014-07-02 14:26:54,319 INFO [stdout] (MSC service thread 1-12) "address" => [
2014-07-02 14:26:54,319 INFO [stdout] (MSC service thread 1-12) ("subsystem" => "datasources"),
2014-07-02 14:26:54,319 INFO [stdout] (MSC service thread 1-12) ("data-source" => "ExampleDS")
2014-07-02 14:26:54,320 INFO [stdout] (MSC service thread 1-12) ]
2014-07-02 14:26:54,320 INFO [stdout] (MSC service thread 1-12) }
2014-07-02 14:26:54,344 INFO [org.xnio] (MSC service thread 1-12) XNIO version 3.2.2.Final
2014-07-02 14:26:54,359 INFO [org.xnio.nio] (MSC service thread 1-12) XNIO NIO Implementation Version 3.2.2.Final
{noformat}
was:
In this simple example I try to remove the default ExampleDS (it should fail, but the bug is, that I get no result)
Here is the Listener I use:
{code:title=ConfigListener.java|borderStyle=dashed}
@WebListener
public class ConfigListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
RemoveExampleDS.run();
}
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {}
}
{code}
RemoveExampleDS has the actual code to remove the Datasource:
{code:title=RemoveExampleDS.java|borderStyle=dashed}
public class RemoveExampleDS {
public static void run() {
try {
deleteDataSource("ExampleDS");
} catch (IOException e) { log(e); }
}
private static void deleteDataSource(String dsName) throws IOException {
log("removing datasource " + dsName);
final ModelNode request = new ModelNode();
request.get(ClientConstants.OP).set(ClientConstants.REMOVE_OPERATION);
request.get(ClientConstants.OP_ADDR).add("subsystem", "datasources");
request.get(ClientConstants.OP_ADDR).add("data-source", dsName);
execute(request);
log("datasource " + dsName + " removed");
}
private static void execute(ModelNode request) throws IOException {
log("connecting to management");
ModelControllerClient client = ModelControllerClient.Factory.create("localhost", 9990);
log("executing: " + request);
ModelNode response = client.execute(request);
log("response: " + response);
client.close();
log(response.get(ClientConstants.RESULT));
}
private static void log(Object o) { System.out.println(o); }
}
{code}
I packed this into a war, and it is the only war I am running in a default wildfly installation.
The log looks like this. Note: there is no response for the remove!
{{
2014-07-02 14:26:54,280 INFO [stdout] (MSC service thread 1-12) removing datasource ExampleDS
2014-07-02 14:26:54,292 INFO [stdout] (MSC service thread 1-12) connecting to management
2014-07-02 14:26:54,317 INFO [stdout] (MSC service thread 1-12) executing: {
2014-07-02 14:26:54,318 INFO [stdout] (MSC service thread 1-12) "operation" => "remove",
2014-07-02 14:26:54,319 INFO [stdout] (MSC service thread 1-12) "address" => [
2014-07-02 14:26:54,319 INFO [stdout] (MSC service thread 1-12) ("subsystem" => "datasources"),
2014-07-02 14:26:54,319 INFO [stdout] (MSC service thread 1-12) ("data-source" => "ExampleDS")
2014-07-02 14:26:54,320 INFO [stdout] (MSC service thread 1-12) ]
2014-07-02 14:26:54,320 INFO [stdout] (MSC service thread 1-12) }
2014-07-02 14:26:54,344 INFO [org.xnio] (MSC service thread 1-12) XNIO version 3.2.2.Final
2014-07-02 14:26:54,359 INFO [org.xnio.nio] (MSC service thread 1-12) XNIO NIO Implementation Version 3.2.2.Final
}}
> management API blocking write requests during initialization
> ------------------------------------------------------------
>
> Key: WFLY-3574
> URL: https://issues.jboss.org/browse/WFLY-3574
> Project: WildFly
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: CLI
> Affects Versions: 8.1.0.Final
> Environment: default configuration
> Reporter: Michael Mutschler
> Assignee: Alexey Loubyansky
> Priority: Critical
>
> I want to apply some configuration before the real application is starting. Mainly I want to update a datasource. Therefore I wrote a WebListener, and during the initialization I want to modify the wildfly configuration via management API.
> I can read the configuration, but when I want to execute a delete or add request, nothing happens; the command does not return! There seems to be a deadlock.
--
This message was sent by Atlassian JIRA
(v6.2.6#6264)
More information about the jboss-jira
mailing list