Announcement

Collapse
No announcement yet.

Tomcat 5.0.x - Cluster und NoSuchElementException

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tomcat 5.0.x - Cluster und NoSuchElementException

    Guten Morgen,

    ich habe kürzlich einen Cluster mit 2 Workern und einem Apachen 2.x aufgesetzt. Nach dem was ich in beobachten kann und was die User berichten scheint auch alles ganz schick zu funktionieren.
    .
    stickysession = true
    distributable = true
    .
    Nur häufen sich folgende Exceptions in meinen Logs
    .
    SEVERE: Unable to perform replication request.
    java.util.NoSuchElementException
    at java.util.LinkedList.remove(LinkedList.java:579)
    at java.util.LinkedList.removeFirst(LinkedList.java:1 31)
    at (DeltaRequest.java:153)
    at (DeltaSession.java:938)
    at (DeltaManager.java:786)
    at (ReplicationValve.java:203)
    at (StandardValveContext.java:102)
    at (ErrorReportValve.java:118)
    at (StandardValveContext.java:102)
    at (StandardPipeline.java:520)
    at (StandardEngineValve.java:109)
    at (StandardValveContext.java:104)
    at (StandardPipeline.java:520)
    at (ContainerBase.java:929)
    at (CoyoteAdapter.java:160)
    at (JkCoyoteHandler.java:300)
    at (HandlerRequest.java:374)
    at (ChannelSocket.java:743)
    at (ChannelSocket.java:675)
    at (ChannelSocket.java:866)
    at $ControlRunnable.run(ThreadPool.java:683)
    at java.lang.Thread.run(Thread.java:534)
    .
    SEVERE: Unable to receive message through TCP channel
    java.util.NoSuchElementException
    at java.util.LinkedList.remove(LinkedList.java:579)
    at java.util.LinkedList.removeFirst(LinkedList.java:1 31)
    at (DeltaRequest.java:153)
    at (DeltaRequest.java:184)
    at (DeltaManager.java:385)
    at (DeltaManager.java:898)
    at (DeltaManager.java:762)
    at (SimpleTcpCluster.java:576)
    at (ObjectReader.java:70)
    at (TcpReplicationThread.java:129)
    at (TcpReplicationThread.java:67)
    .
    Dies passiert "manchmal" (und wie immer nicht bewusst reproduzierbar), wenn ich versuche Values in der Session zu speichern bzw. aus dieser zu entfernen. Anhand des DeltaManager.java im Stacktrace scheint da bei der Session-Replizierung zwischen den Tomcats was schief zu gehen.
    .
    Nun die Frage: Ist das grundlegend schlimm? Ist das nur eine Warnung? Wie sollte ich mich verhalten?!
    .
    Danke für Hinweise

    T.

  • #2
    moin, ich habe mein "altes" Problem immer noch, mich aber diesmal etwas intensiver damit auseinandergesetzt.

    ErrorHandlerServlet - Exception: java.util.NoSuchElementException
    at java.util.LinkedList.remove(LinkedList.java:644)
    at java.util.LinkedList.removeFirst(LinkedList.java:1 34)
    at org.apache.catalina.cluster.session.DeltaRequest.a ddAction(DeltaRequest.java:102)
    at org.apache.catalina.cluster.session.DeltaRequest.s etAttribute(DeltaRequest.java:69)
    at org.apache.catalina.cluster.session.DeltaSession.s etAttribute(DeltaSession.java:1265)
    at org.apache.catalina.cluster.session.DeltaSession.s etAttribute(DeltaSession.java:1246)
    at org.apache.catalina.cluster.session.DeltaSessionFa cade.setAttribute(DeltaSessionFacade.java:130)
    at de.commsult.cafe.web.SessionHandler.<init>(Session Handler.java:167)

    Dieser Fehler tritt (nicht reproduzierbar) bei uns auf, wenn wir versuchen ein attribute (String - HashMap - Wertepaar) in die Session zu setzen.
    ...
    session.setAttribute(browserId, sessionHashMap);
    ...
    Das removeFirst auf der LinkedList (actionPool) wirft die NoSuchElementException, wenn diese leer ist, aber eigentlich nicht leer sein dürfte.
    Klasse DeltaRequest:101
    ...
    if ( this.actionPool.size() > 0 ) {
    info = (AttributeInfo)actionPool.removeFirst();
    info.init(type,action,name,value);
    } else {
    info = new AttributeInfo(type, action, name, value);
    }
    ...

    Laut JavaDoc ist die LinkedList nicht synchronisiert, so dass scheinbar ein anderer Thread das Item schon herausgenommen hat.

    Kennt jemand dieses Problem und konnte es beheben?

    PS: Ich habe 2 Tomcat 5.0.28 Nodes im Cluster.

    Dank

    Comment


    • #3
      Das Tomcat Clustering funktioniert erst wirklich mit dem Tomcat
      5.5.17

      Sorry, einen Backport werden wir nicht mehr machen...
      Pete

      Comment

      Working...
      X