2014-04-22 4 views
1

Nous utilisons Neo4j2.0.1 sur RHEL (jdk 1.7 .. 51) - nous appelons GraphDatabaseService.shutDown() sur un thread synchronisé, et cette méthode ne renvoie jamais ou ne déclenche aucune exception.GraphDatabaseService Shutdown() non retourné

D'autres threads essayant simultanément d'accéder à cette exception graphique rencontre sur beginTran()

org.neo4j.graphdb.TransactionFailureException: Database is currently not available. No blocking components 
     at org.neo4j.kernel.InternalAbstractGraphDatabase.beginTx(InternalAbstractGraphDatabase.java:944) 
     at org.neo4j.kernel.TransactionBuilderImpl.begin(TransactionBuilderImpl.java:43) 
     at net.ahm.graph.EmbeddedDBService.beginTx(EmbeddedDBService.java:275) 
     at net.ahm.cm.graph.SummaryForPatientDAO.process(SummaryForPatientDAO.java:29) 
     at net.ahm.cm.handlers.admin.GetSummaryPatientInfoMessageHandlerImpl.processAction(GetSummaryPatientInfoMessageHandlerImpl.java:15) 
     at net.ahm.cm.handlers.common.BaseCareTeamHandler.doWork(BaseCareTeamHandler.java:46) 
     at net.ahm.cm.handlers.common.CareTeamServicesHandler.processService(CareTeamServicesHandler.java:197) 
     at net.ahm.cm.thrift.services.common.CareTeamServices$Processor$processService.getResult(CareTeamServices.java:178) 
     at net.ahm.cm.thrift.services.common.CareTeamServices$Processor$processService.getResult(CareTeamServices.java:162) 
     at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39) 
     at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39) 
     at org.apache.thrift.TMultiplexedProcessor.process(TMultiplexedProcessor.java:123) 
     at org.apache.thrift.server.AbstractNonblockingServer$FrameBuffer.invoke(AbstractNonblockingServer.java:516) 
     at org.apache.thrift.server.Invocation.run(Invocation.java:18) 
     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:744) 

Quelles pourraient être les raisons possibles en raison de laquelle la méthode shutdown() bloquera presque pour toujours. Veuillez nous contacter.

+0

Bien la méthode d'arrêt arrête simplement Neo4j alors ... la base de données n'est pas disponible ... c'est la raison pour laquelle vous avez la base de données n'est pas disponible –

+0

l'exception est évidente: shutdown appelé et même instance est utilisé pour beinTrans . Cependant, ce qui est bizarre, c'est que le contrôle ne revient pas de shutDown() ... ne lance même pas l'exception –

+0

pouvez-vous fournir un thread-dump du moment où il se bloque? Habituellement, l'arrêt est bloqué pendant 20 secondes s'il reste des transactions ouvertes qui n'ont pas été fermées. –

Répondre

1

J'ai eu un problème similaire il y a à peine deux heures, quand je accidentellement fait un appel à db.shutdown() sur une instance GraphDatabaseService et ai essayé d'appeler d'autres méthodes sur la même instance par la suite. Peut-être que vous pouvez poster du code afin d'obtenir plus d'informations. De loin la cause la plus probable de votre problème est ce que j'ai décrit.