Hi,
For Teiid Designer, I am trying to add our own extension nodes to the
tree in the Servers View, where the nodes display the details of the
Teiid Server deployed on jboss. This is working really well bar a couple
of threading problems.
My Eclipse IDE has a jboss 7.1 instance started so I run an RCP
application, which is a clone of the eclipse workbench, to display my
developed plugins (call this RCPAPP).
In RCPAPP, I have configured a jboss 7.1 runtime server that assumes its
started, pointing to the one in my IDE. I expand the tree view in the
Servers View and this displays the disconnected teiid server node correctly.
I click start in the Servers View and that is when RCPAPP freezes.
Looking at the threads,
main and worker-0 (decorator thread) both try to adapt the IServer for
different purposes and its a toss up which calls the adapter first. The
one that gets there first then tries to interrogate the IServer using
the following:
String requestString = request.toJSONString(true);
String resultString = JBoss7ManagerUtil.getService(server).execute(new
AS7ManagementDetails(server),
requestString);
return ModelNode.fromJSONString(resultString);
I have used this to detect whether the server has started so the request
string looks like this:
// Request that finds the name of the server
ModelNode request = new ModelNode();
request.get(OP).set(READ_ATTRIBUTE_OPERATION);
request.get(NAME).set(NAME);
If the request throws an exception that its not connected. This just
isnt working since this stalls at:
Object.wait(long) line: not available [native method]
FutureResult$1(AbstractIoFuture<T>).await(long, TimeUnit) line: 101
ProtocolChannelClient.connectSync(CallbackHandler, Map<String,String>,
SSLContext) line: 140
ManagementClientChannelStrategy$Establishing.getChannel() line: 166
RemotingModelControllerClient.getOrCreateChannel() line: 138
So can you help?
1) Any info as to why the request would be stalled even though the
server has been started in the IDE but not completely in RCPAPP.
2) Can you suggest a better way in java to conclude that the server (and
maybe the IServer) has been completely started. I have found [1] but not
quite sure whether this would be suitable for a jboss 7.1 that has
already started
Happy to provide further information (offlist or irc if preferred), as
required.
The thread dump of the RCPAPP at the point of freeze is attached.
* Worker-1 is the stalled thread while main is waiting on a sync lock
for worker-1 to complete its adaptation of the IServer to a TeiidServer
(POJO modelling the teiid server).
[1]
https://community.jboss.org/wiki/HowDoIGetRemoteAccessToMyMBean
Cheers
PGR
--
Paul Richardson
* p.g.richardson(a)redhat.com
* p.g.richardson(a)phantomjinx.co.uk