[
https://issues.apache.org/jira/browse/AMQ-3077?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12972117#action_12972117
]
Eric commented on AMQ-3077:
---------------------------
mmmhhh.
I just added this into openwire/v6/BrokerInfoMarshaller.java
public void tightUnmarshal(OpenWireFormat wireFormat, Object o, DataInput
dataIn, BooleanStream bs) throws IOException {
super.tightUnmarshal(wireFormat, o, dataIn, bs);
BrokerInfo info = (BrokerInfo)o;
info.setBrokerId((org.apache.activemq.command.BrokerId)
tightUnmarsalCachedObject(wireFormat, dataIn, bs));
info.setBrokerURL(tightUnmarshalString(dataIn, bs));
if (bs.readBoolean()) {
short size = dataIn.readShort();
org.apache.activemq.command.BrokerInfo value[] = new
org.apache.activemq.command.BrokerInfo[size];
for( int i=0; i < size; i++ ) {
System.out.println("Nouveau sous-niveau : i = " + (i+1) +
"/(size = " + size + ")");
value[i] = (org.apache.activemq.command.BrokerInfo)
tightUnmarsalNestedObject(wireFormat,dataIn, bs);
System.out.println("Fin du sous-niveau : i = " + (i+1) +
"/(size = " + size + ")");
}
info.setPeerBrokerInfos(value);
}
else {
info.setPeerBrokerInfos(null);
}
/* Eric Vincent remplacement 3 lignes a la place de la ligne suivante */
String brokerName = tightUnmarshalString(dataIn, bs);
System.out.println("BrokerInfo / BrokerName = " + brokerName);
info.setBrokerName(brokerName);
/* Eric Vincent
info.setBrokerName(tightUnmarshalString(dataIn, bs));
*/
info.setSlaveBroker(bs.readBoolean());
info.setMasterBroker(bs.readBoolean());
info.setFaultTolerantConfiguration(bs.readBoolean());
info.setDuplexConnection(bs.readBoolean());
info.setNetworkConnection(bs.readBoolean());
info.setConnectionId(tightUnmarshalLong(wireFormat, dataIn, bs));
info.setBrokerUploadUrl(tightUnmarshalString(dataIn, bs));
info.setNetworkProperties(tightUnmarshalString(dataIn, bs));
}
And you will find in the log file I put into this thread, what I get with no
more than 9 embedded brokers (4 sibBusModule, 1 busSupervisor, 2 servers) on 4
servers (td0sib[01,02][s,v] that are connected togethers with different network
of brokers or direct connections.
I think that the current algorithm (without any level constraint) is not good
at all for ActiveMQ global scalability.
I will try to change something, but I don't know exactly why it is necessary
that each broker knows the global connection hierarchy beyond the first
level... And when there are loops, I don't know what could happen ....
Eric-AWL
> ArraysIndexOutOfBoundsException : -32768 in "BrokerService[xxx] Task" thread
> ----------------------------------------------------------------------------
>
> Key: AMQ-3077
> URL: https://issues.apache.org/jira/browse/AMQ-3077
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker
> Affects Versions: 5.4.0, 5.4.1
> Environment: Linux, Java 6, Fuse Message Brokers 5.4.0-1 or 5.4.1-1
> Reporter: Eric
>
> Exception in thread "BrokerService[SUP-tterdp31v] Task"
> java.lang.ArrayIndexOutOfBoundsException: -32767
> at
> org.apache.activemq.openwire.BooleanStream.writeBoolean(BooleanStream.java:54)
> at
> org.apache.activemq.openwire.OpenWireFormat.tightMarshalNestedObject1(OpenWireFormat.java:377)
> at
> org.apache.activemq.openwire.v6.BaseDataStreamMarshaller.tightMarshalNestedObject1(BaseDataStreamMarshaller.java:131)
> at
> org.apache.activemq.openwire.v6.BaseDataStreamMarshaller.tightMarshalObjectArray1(BaseDataStreamMarshaller.java:357)
> at
> org.apache.activemq.openwire.v6.BrokerInfoMarshaller.tightMarshal1(BrokerInfoMarshaller.java:106)
> at
> org.apache.activemq.openwire.OpenWireFormat.tightMarshalNestedObject1(OpenWireFormat.java:397)
> at
> org.apache.activemq.openwire.v6.BaseDataStreamMarshaller.tightMarshalNestedObject1(BaseDataStreamMarshaller.java:131)
> at
> org.apache.activemq.openwire.v6.BaseDataStreamMarshaller.tightMarshalObjectArray1(BaseDataStreamMarshaller.java:357)
> at
> org.apache.activemq.openwire.v6.BrokerInfoMarshaller.tightMarshal1(BrokerInfoMarshaller.java:106)
> at
> org.apache.activemq.openwire.OpenWireFormat.tightMarshalNestedObject1(OpenWireFormat.java:397)
> at
> org.apache.activemq.openwire.v6.BaseDataStreamMarshaller.tightMarshalNestedObject1(BaseDataStreamMarshaller.java:131)
> at
> org.apache.activemq.openwire.v6.BaseDataStreamMarshaller.tightMarshalObjectArray1(BaseDataStreamMarshaller.java:357)
> at
> org.apache.activemq.openwire.v6.BrokerInfoMarshaller.tightMarshal1(BrokerInfoMarshaller.java:106)
> at
> org.apache.activemq.openwire.OpenWireFormat.tightMarshalNestedObject1(OpenWireFormat.java:397)
> at
> org.apache.activemq.openwire.v6.BaseDataStreamMarshaller.tightMarshalNestedObject1(BaseDataStreamMarshaller.java:131)
> at
> org.apache.activemq.openwire.v6.BaseDataStreamMarshaller.tightMarshalObjectArray1(BaseDataStreamMarshaller.java:357)
> at
> org.apache.activemq.openwire.v6.BrokerInfoMarshaller.tightMarshal1(BrokerInfoMarshaller.java:106)
> at
> org.apache.activemq.openwire.OpenWireFormat.tightMarshalNestedObject1(OpenWireFormat.java:397)
> at
> org.apache.activemq.openwire.v6.BaseDataStreamMarshaller.tightMarshalNestedObject1(BaseDataStreamMarshaller.java:131)
> at
> org.apache.activemq.openwire.v6.BaseDataStreamMarshaller.tightMarshalObjectArray1(BaseDataStreamMarshaller.java:357)
> at
> org.apache.activemq.openwire.v6.BrokerInfoMarshaller.tightMarshal1(BrokerInfoMarshaller.java:106)
> at
> org.apache.activemq.openwire.OpenWireFormat.tightMarshalNestedObject1(OpenWireFormat.java:397)
> at
> org.apache.activemq.openwire.v6.BaseDataStreamMarshaller.tightMarshalNestedObject1(BaseDataStreamMarshaller.java:131)
> at
> org.apache.activemq.openwire.v6.BaseDataStreamMarshaller.tightMarshalObjectArray1(BaseDataStreamMarshaller.java:357)
> at
> org.apache.activemq.openwire.v6.BrokerInfoMarshaller.tightMarshal1(BrokerInfoMarshaller.java:106)
> at
> org.apache.activemq.openwire.OpenWireFormat.tightMarshalNestedObject1(OpenWireFormat.java:397)
> at
> org.apache.activemq.openwire.v6.BaseDataStreamMarshaller.tightMarshalNestedObject1(BaseDataStreamMarshaller.java:131)
> at
> org.apache.activemq.openwire.v6.BaseDataStreamMarshaller.tightMarshalObjectArray1(BaseDataStreamMarshaller.java:357)
> at
> org.apache.activemq.openwire.v6.BrokerInfoMarshaller.tightMarshal1(BrokerInfoMarshaller.java:106)
> at
> org.apache.activemq.openwire.OpenWireFormat.tightMarshalNestedObject1(OpenWireFormat.java:397)
> at
> org.apache.activemq.openwire.v6.BaseDataStreamMarshaller.tightMarshalNestedObject1(BaseDataStreamMarshaller.java:131)
> at
> org.apache.activemq.openwire.v6.BaseDataStreamMarshaller.tightMarshalObjectArray1(BaseDataStreamMarshaller.java:357)
> at
> org.apache.activemq.openwire.v6.BrokerInfoMarshaller.tightMarshal1(BrokerInfoMarshaller.java:106)
> at
> org.apache.activemq.openwire.OpenWireFormat.marshal(OpenWireFormat.java:228)
> at
> org.apache.activemq.transport.tcp.TcpTransport.oneway(TcpTransport.java:181)
> at
> org.apache.activemq.transport.InactivityMonitor.oneway(InactivityMonitor.java:255)
> at
> org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:85)
> at
> org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:104)
> at
> org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:40)
> at
> org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:1249)
> at
> org.apache.activemq.broker.TransportConnection.processDispatch(TransportConnection.java:810)
> at
> org.apache.activemq.broker.TransportConnection.iterate(TransportConnection.java:846)
> at
> org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
> at
> org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> at java.lang.Thread.run(Thread.java:619)
> Today this exception is not written in ActiveMQ logs but on the standard
> output.
> It seems that happens when network of brokers connections are stopped, but
> I'm not sure at all. (the number of "bridge to ... stopped" seems to be the
> same as the number of Exceptions detected)
> So I need to dig into this problem to be more precise.
> Eric-AWL
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.