Tjänst under avveckling

Dessa sidor kommer att tas bort 2023-01-01

1. Allmänt

Detta dokument vänder sig till systemtekniker som upplever problem med atomikos i lokala Säkerhetstjänster. Det kan exempelvis handla om loggar som säger att en transaktion har avbrutits och att rollback inte är möjlig. Problemet kan lösas genom att återställa atomikos, vilket även innebär att loggningen för händelsen slutar.

Beskrivningarna är framtagna för Säkerhetstjänster 2.11, men fungerar även för tidigare versioner av systemet (angivna sökvägar/kataloger kan behöva justeras).


1.1. Symptom

Vid omstart av Säkerhetstjänsters applikationsserver eller MySQL, kan i vissa fall en eller flera transaktioner som atomikos hanterar hänga sig. Detta är mycket ovanligt, men när det händer brukar återkommande audit loggar produceras för händelsen. En sådan logg kan se ut som följande exempel visar:


Exempel på audit log
log {
      timestamp   : 2015-12-17 12:00:00:000
      server      : example_server_1
      bundle      : slf4j_logica_osgi
      version     : 1.6.2.20111006
      thread      : 319
      level       : WARN
      logger      : com.atomikos.datasource.xa.XAResourceTransaction
      message     : XA resource 'mySqlXaDataSource1': commit for XID '333151665359356877585A666F6A636276366642335465656746675530313835343030303430:333151665359356823232323236A636276366643546F726E466755393534333536'
                    raised -7: the XA resource has become unavailable mySqlXaDataSource1: resource no longer available - recovery
                    might be at risk!
                    javax.transaction.xa.XAException: mySqlXaDataSource2: resource no longer available - recovery might be
                    at risk!
                        at com.atomikos.datasource.xa.XAResourceTransaction.throwXAExceptionForUnavailableResource(XAResourceTransaction.java:313)
                        at com.atomikos.datasource.xa.XAResourceTransaction.testOrRefreshXAResourceFor2PC(XAResourceTransaction.java:285)
                        at com.atomikos.datasource.xa.XAResourceTransaction.commit(XAResourceTransaction.java:793)
                        at com.atomikos.icatch.imp.CommitMessage.send(CommitMessage.java:72)
                        at com.atomikos.icatch.imp.PropagationMessage.submit(PropagationMessage.java:109)
                        at com.atomikos.icatch.imp.Propagator$PropagatorThread.run(Propagator.java:87)
                        at com.atomikos.icatch.imp.Propagator.submitPropagationMessage(Propagator.java:66)
                        at com.atomikos.icatch.imp.HeurHazardStateHandler.onTimeout(HeurHazardStateHandler.java:122)
                        at com.atomikos.icatch.imp.CoordinatorImp.alarm(CoordinatorImp.java:929)
                        at com.atomikos.timing.PooledAlarmTimer.notifyListeners(PooledAlarmTimer.java:112)
                        at com.atomikos.timing.PooledAlarmTimer.run(PooledAlarmTimer.java:99)
                        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
                        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
                        at java.lang.Thread.run(Thread.java:745)

}


1.2. Förutsättningar

Behörighet att ansluta till Säkerhetstjänsters OSGi-konsol.

Administrativ behörighet på servern för att kunna starta/stoppa Säkerhetstjänster.


2. Utförande

Nedan beskrivs vilka åtgärder som krävs för att återställa atomikos. Observera att det kräver en omstart av Säkerhetstjänster

  1. Titta på audit loggen som har skapats för händelsen. Notera vilken server som är angiven i loggen. Det är på denna server som problemet har uppstått. Är ni osäker på vilken server det gäller, kan följande operationer utföras på alla applikationsservrar som ingår i uppsättningen. Gå in på servern.
     
  2. Logga in i Säkerhetstjänsters OSGi-konsol.

    telnet localhost 1111
     
  3.  Lista atomikos i konsolen m.h.a. följande kommando:

    ss atomikos

  4.  Följande visas en träff för "atomikos_3.9.3". Anteckna det id som visas för denna.
     
  5. Gå ur OSGi-konsolen och stäng ned Säkerhetstjänster.

    På Linux kan man genomföra detta med följande kommando:

    /etc/init.d/sak_server stop
     

    På Windows går man in i  "Control Panel --> Administrative Tools --> View local services". Här kan man välja att stoppa Säkerhetstjänsters service.


  6. Gå sedan till katalogen där Säkerhetstjänster lagrar sin runtime data.

    På Linux hittar man vanligtvis denna katalog under följande struktur:

    /sakerhetstjansten/Sakerhetstjanst2.11/local/data/osgi/org.eclipse.osgi/
     

    På Windows hittar man vanligtvis denna katalog under följande struktur:

    C:\Program Files\Inera\Lokal Sakerhetstjanst 2.11\sakerhetstjansten\data\osgi\org.eclipse.osgi
     
  7. Öppna katalogen med samma namn som det id ni tidigare antecknade för atomikos i OSGi-konsolen.

  8. Katalogen innehåller en underkatalog som heter "data". Radera innehållet i katalogen "data". Obs! Radera inte hela katalogen, endast dess innehåll.
     
  9. Starta upp Säkerhetstjänster.

    På Linux kan man genomföra detta med följande kommando:

    /etc/init.d/sak_server start
     

    På Windows går man in i  "Control Panel --> Administrative Tools --> View local services". Här kan man välja att starta Säkerhetstjänsters service.
     

    Kontrollera att systemet går upp som det ska. Problemet ska sedan vara åtgärdat!

  • No labels