This is an automated email from the ASF dual-hosted git repository. aradzinski pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-nlpcraft.git
commit 84b86099bbd3f04b68260f671df24d5ba584cf3e Author: Aaron Radzinski <[email protected]> AuthorDate: Sun Sep 27 15:30:56 2020 -0700 WIP. --- .../nlp/core/stanford/NCStanfordCoreManager.scala | 8 ++- .../nlp/core/stanford/NCStanfordNerEnricher.scala | 8 ++- .../nlp/core/stanford/NCStanfordParser.scala | 8 ++- nlpcraft/pom.xml | 4 +- .../org/apache/nlpcraft/common/NCService.scala | 79 ++++++++++++++++++---- .../common/extcfg/NCExternalConfigManager.scala | 7 +- .../common/nlp/core/NCNlpCoreManager.scala | 8 ++- .../nlp/core/opennlp/NCOpenNlpTokenizer.scala | 8 ++- .../common/nlp/dict/NCDictionaryManager.scala | 7 +- .../common/nlp/numeric/NCNumericManager.scala | 14 +++- .../nlpcraft/probe/mgrs/cmd/NCCommandManager.scala | 6 +- .../probe/mgrs/conn/NCConnectionManager.scala | 26 ++----- .../mgrs/conversation/NCConversationManager.scala | 37 +++++----- .../probe/mgrs/deploy/NCDeployManager.scala | 8 ++- .../mgrs/dialogflow/NCDialogFlowManager.scala | 37 +++++----- .../probe/mgrs/lifecycle/NCLifecycleManager.scala | 7 +- .../nlpcraft/probe/mgrs/model/NCModelManager.scala | 8 ++- .../probe/mgrs/nlp/NCProbeEnrichmentManager.scala | 8 ++- .../dictionary/NCDictionaryEnricher.scala | 7 +- .../mgrs/nlp/enrichers/limit/NCLimitEnricher.scala | 8 ++- .../mgrs/nlp/enrichers/model/NCModelEnricher.scala | 6 +- .../enrichers/relation/NCRelationEnricher.scala | 7 +- .../mgrs/nlp/enrichers/sort/NCSortEnricher.scala | 8 ++- .../enrichers/stopword/NCStopWordEnricher.scala | 8 ++- .../suspicious/NCSuspiciousNounsEnricher.scala | 6 +- .../mgrs/nlp/validate/NCValidateManager.scala | 7 +- .../nlpcraft/server/company/NCCompanyManager.scala | 7 +- .../server/feedback/NCFeedbackManager.scala | 7 +- .../apache/nlpcraft/server/geo/NCGeoManager.scala | 8 ++- .../lifecycle/NCServerLifecycleManager.scala | 7 +- .../server/nlp/core/NCNlpServerManager.scala | 8 ++- .../nlp/core/google/NCGoogleNerEnricher.scala | 8 ++- .../nlp/core/opennlp/NCOpenNlpNerEnricher.scala | 8 ++- .../server/nlp/core/opennlp/NCOpenNlpParser.scala | 8 ++- .../server/nlp/core/spacy/NCSpaCyNerEnricher.scala | 7 +- .../nlp/enrichers/NCServerEnrichmentManager.scala | 8 ++- .../nlp/enrichers/basenlp/NCBaseNlpEnricher.scala | 7 +- .../coordinate/NCCoordinatesEnricher.scala | 8 ++- .../server/nlp/enrichers/date/NCDateEnricher.scala | 7 +- .../server/nlp/enrichers/geo/NCGeoEnricher.scala | 8 ++- .../nlp/enrichers/numeric/NCNumericEnricher.scala | 6 +- .../nlp/enrichers/quote/NCQuoteEnricher.scala | 6 +- .../enrichers/stopword/NCStopWordEnricher.scala | 7 +- .../server/nlp/preproc/NCPreProcessManager.scala | 6 +- .../server/nlp/spell/NCSpellCheckManager.scala | 8 ++- .../server/nlp/wordnet/NCWordNetManager.scala | 7 +- .../nlpcraft/server/probe/NCProbeManager.scala | 14 ++-- .../server/proclog/NCProcessLogManager.scala | 7 +- .../nlpcraft/server/query/NCQueryManager.scala | 7 +- .../nlpcraft/server/rest/NCRestManager.scala | 8 ++- .../apache/nlpcraft/server/sql/NCSqlManager.scala | 7 +- .../server/sugsyn/NCSuggestSynonymManager.scala | 8 ++- .../apache/nlpcraft/server/tx/NCTxManager.scala | 8 ++- .../nlpcraft/server/user/NCUserManager.scala | 8 ++- 54 files changed, 381 insertions(+), 177 deletions(-) diff --git a/nlpcraft-stanford/src/main/scala/org/apache/nlpcraft/server/nlp/core/stanford/NCStanfordCoreManager.scala b/nlpcraft-stanford/src/main/scala/org/apache/nlpcraft/server/nlp/core/stanford/NCStanfordCoreManager.scala index f5b81a9..efd69e7 100644 --- a/nlpcraft-stanford/src/main/scala/org/apache/nlpcraft/server/nlp/core/stanford/NCStanfordCoreManager.scala +++ b/nlpcraft-stanford/src/main/scala/org/apache/nlpcraft/server/nlp/core/stanford/NCStanfordCoreManager.scala @@ -41,6 +41,8 @@ object NCStanfordCoreManager extends NCService with NCIgniteInstance { * @return */ override def start(parent: Span = null): NCService = { + ackStarting() + val p = new Properties() p.setProperty("customAnnotatorClass.nctokenize", classOf[NCStanfordAnnotator].getName) @@ -53,7 +55,7 @@ object NCStanfordCoreManager extends NCService with NCIgniteInstance { cache = ignite.cache[String, CoreDocument]("stanford-cache") } - ackStart() + ackStarted() } /** @@ -61,9 +63,11 @@ object NCStanfordCoreManager extends NCService with NCIgniteInstance { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = { + ackStopping() + cache = null - ackStop() + ackStopped() } /** diff --git a/nlpcraft-stanford/src/main/scala/org/apache/nlpcraft/server/nlp/core/stanford/NCStanfordNerEnricher.scala b/nlpcraft-stanford/src/main/scala/org/apache/nlpcraft/server/nlp/core/stanford/NCStanfordNerEnricher.scala index 53719cd..1da87b5 100644 --- a/nlpcraft-stanford/src/main/scala/org/apache/nlpcraft/server/nlp/core/stanford/NCStanfordNerEnricher.scala +++ b/nlpcraft-stanford/src/main/scala/org/apache/nlpcraft/server/nlp/core/stanford/NCStanfordNerEnricher.scala @@ -36,11 +36,13 @@ object NCStanfordNerEnricher extends NCService with NCNlpNerEnricher with NCIgni * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { span ⇒ + ackStarting() + // Should be started even if another NLP engine configured. if (!NCStanfordCoreManager.isStarted) NCStanfordCoreManager.start(span) - ackStart() + ackStarted() } /** @@ -48,10 +50,12 @@ object NCStanfordNerEnricher extends NCService with NCNlpNerEnricher with NCIgni * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { span ⇒ + ackStopping() + if (NCStanfordCoreManager.isStarted) NCStanfordCoreManager.stop(span) - ackStop() + ackStopped() } /** diff --git a/nlpcraft-stanford/src/main/scala/org/apache/nlpcraft/server/nlp/core/stanford/NCStanfordParser.scala b/nlpcraft-stanford/src/main/scala/org/apache/nlpcraft/server/nlp/core/stanford/NCStanfordParser.scala index 646eefc..c7bc898 100644 --- a/nlpcraft-stanford/src/main/scala/org/apache/nlpcraft/server/nlp/core/stanford/NCStanfordParser.scala +++ b/nlpcraft-stanford/src/main/scala/org/apache/nlpcraft/server/nlp/core/stanford/NCStanfordParser.scala @@ -39,11 +39,13 @@ object NCStanfordParser extends NCService with NCNlpParser with NCIgniteInstance * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { span ⇒ + ackStarting() + // Should be started even if another NLP engine configured. if (!NCStanfordCoreManager.isStarted) NCStanfordCoreManager.start(span) - ackStart() + ackStarted() } /** @@ -51,10 +53,12 @@ object NCStanfordParser extends NCService with NCNlpParser with NCIgniteInstance * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { span ⇒ + ackStopping() + if (NCStanfordCoreManager.isStarted) NCStanfordCoreManager.stop(span) - ackStop() + ackStopped() } override def parse(normTxt: String, parent: Span = null): Seq[NCNlpWord] = diff --git a/nlpcraft/pom.xml b/nlpcraft/pom.xml index 7789d59..350e7f8 100644 --- a/nlpcraft/pom.xml +++ b/nlpcraft/pom.xml @@ -283,8 +283,8 @@ <configuration> <!-- Depending on the console config and how maven is run this will produce the output with ANSI colors. - To strip out ANSI escape sequences from the log file, run the following: - $ cat server-xxxxx.log | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g" | sed "s/\x0f//g" + To strip out ANSI escape sequences from the log file, see the following: + https://stackoverflow.com/questions/17998978/removing-colors-from-output --> <name>server</name> <healthcheckUrl>http://localhost:8081/api/v1/health</healthcheckUrl> diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/NCService.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/NCService.scala index 2e1be93..66422a6 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/NCService.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/NCService.scala @@ -29,16 +29,18 @@ import scala.compat.Platform._ * extend this class are typically called 'managers'. */ abstract class NCService extends LazyLogging with NCOpenCensusTrace { - private val startMs = currentTime + @volatile private var timeStampMs = -1L @volatile private var started = false + @volatile private var starting = false + @volatile private var stopping = false private final val clsName = U.cleanClassName(getClass) - /** - * Checks if this service is started. - */ - def isStarted: Boolean = started + def isStarted: Boolean = started && !stopping && !starting + def isStopped: Boolean = !started && !stopping && !starting + def isStarting: Boolean = starting + def isStopping: Boolean = stopping /** * Starts this service. @@ -48,7 +50,7 @@ abstract class NCService extends LazyLogging with NCOpenCensusTrace { @throws[NCE] def start(parent: Span = null): NCService = // Make sure this is not called by subclass. - throw new AssertionError(s"NCService#start() should not be called directly in '${U.cleanClassName(getClass)}' service.") + throw new AssertionError(s"NCService#start() should not be called directly in '$name' service.") /** * Stops this service. @@ -58,7 +60,7 @@ abstract class NCService extends LazyLogging with NCOpenCensusTrace { @throws[NCE] def stop(parent: Span = null): Unit = // Make sure this is not called by subclass. - throw new AssertionError(s"NCService#stop() should not be called directly in '${U.cleanClassName(getClass)}' service.") + throw new AssertionError(s"NCService#stop() should not be called directly in '$name' service.") /** * Gets name of this service (as its class name). @@ -68,21 +70,62 @@ abstract class NCService extends LazyLogging with NCOpenCensusTrace { def name: String = clsName /** + * Acks the beginning of this service startup. + * + * @return This instance. + */ + protected def ackStarting(): NCService = { + starting = true + timeStampMs = currentTime + + logger.trace("$name staring...") + + addTags(currentSpan(), + "state" → "starting" + ) + + this + } + + /** + * Acks the beginning of this service shutdown. + * + * @return This instance. + */ + protected def ackStopping(): NCService = { + stopping = true + timeStampMs = currentTime + + logger.trace("$name stopping...") + + addTags(currentSpan(), + "state" → "stopping" + ) + + this + } + + /** * Acks started service. Should be called at the end of the `start()` method. */ - protected def ackStart(): NCService = { + protected def ackStarted(): NCService = { assert(!started, s"Service '$name' is already started.") + assert(timeStampMs != -1, "Method 'NCService#ackStarting()' wasn't called.") + starting = false started = true - val dur = s"$ansiBlueFg[${currentTime - startMs}ms]$ansiReset" - addTags( currentSpan(), - "startDurationMs" → (currentTime - startMs), "state" → started + "startDurationMs" → (currentTime - timeStampMs), + "state" → "started" ) - logger.info(s"$clsName started $dur") + val dur = s"$ansiBlueFg[${currentTime - timeStampMs}ms]$ansiReset" + + logger.info(s"$name started $dur") + + timeStampMs = -1L this } @@ -90,13 +133,19 @@ abstract class NCService extends LazyLogging with NCOpenCensusTrace { /** * Acks stopped service. Should be called at the end of the `stop()` method. */ - protected def ackStop(): Unit = { + protected def ackStopped(): Unit = { + assert(timeStampMs != -1, "Method 'NCService#ackStopping()' wasn't called.") + + stopping = false started = false addTags(currentSpan(), - "state" → started + "stopDurationMs" → (currentTime - timeStampMs), + "state" → "stopped" ) - logger.info(s"$clsName stopped.") + logger.info(s"$name stopped.") + + timeStampMs = -1L } } diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/extcfg/NCExternalConfigManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/extcfg/NCExternalConfigManager.scala index 126cca3..cbe292a 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/extcfg/NCExternalConfigManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/extcfg/NCExternalConfigManager.scala @@ -145,6 +145,8 @@ object NCExternalConfigManager extends NCService { * @param parent Optional parent span. */ override def start(parent: Span): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + require(NCExternalConfigType.values.forall(FILES.contains)) val m = new ConcurrentHashMap[NCResourceType, File] @@ -164,7 +166,7 @@ object NCExternalConfigManager extends NCService { ) } - ackStart() + ackStarted() } /** @@ -173,7 +175,8 @@ object NCExternalConfigManager extends NCService { * @param parent Optional parent span. */ override def stop(parent: Span): Unit = startScopedSpan("stop", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/nlp/core/NCNlpCoreManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/nlp/core/NCNlpCoreManager.scala index e9033c3..2bb5710 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/nlp/core/NCNlpCoreManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/nlp/core/NCNlpCoreManager.scala @@ -45,6 +45,8 @@ object NCNlpCoreManager extends NCService { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { span ⇒ + ackStarting() + // NOTE: DO NOT confuse this with token providers. if (!SUPPORTED_NLP_ENGINES.contains(Config.engine)) throw new NCE(s"Unsupported NLP engine: ${Config.engine}") @@ -65,7 +67,7 @@ object NCNlpCoreManager extends NCService { tokenizer.start() - ackStart() + ackStarted() } /** @@ -73,10 +75,12 @@ object NCNlpCoreManager extends NCService { * @param parent Optional parent span. */ override def stop(parent: Span): Unit = startScopedSpan("stop", parent) {span ⇒ + ackStopping() + if (tokenizer != null) tokenizer.stop(span) - ackStop() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/nlp/core/opennlp/NCOpenNlpTokenizer.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/nlp/core/opennlp/NCOpenNlpTokenizer.scala index 7b29938..7efbf1e 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/nlp/core/opennlp/NCOpenNlpTokenizer.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/nlp/core/opennlp/NCOpenNlpTokenizer.scala @@ -40,11 +40,13 @@ object NCOpenNlpTokenizer extends NCNlpTokenizer { * @return */ override def start(parent: Span): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + tokenizer = managed(NCExternalConfigManager.getStream(OPENNLP, RESOURCE)) acquireAndGet { in ⇒ new TokenizerME(new TokenizerModel(in)) } - ackStart() + ackStarted() } /** @@ -52,9 +54,11 @@ object NCOpenNlpTokenizer extends NCNlpTokenizer { * @param parent Optional parent span. */ override def stop(parent: Span): Unit = startScopedSpan("start", parent) { _ ⇒ + ackStopping() + tokenizer = null - ackStop() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/nlp/dict/NCDictionaryManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/nlp/dict/NCDictionaryManager.scala index edd5a5c..e2e16e5 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/nlp/dict/NCDictionaryManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/nlp/dict/NCDictionaryManager.scala @@ -44,6 +44,8 @@ object NCDictionaryManager extends NCService { @volatile private var dicts: Map[NCDictionaryType, Set[String]] = _ override def start(parent: Span = null): NCService = startScopedSpan("start", parent, "dicts" → dictFiles.values.mkString(",")) { _ ⇒ + ackStarting() + dicts = dictFiles.map(p ⇒ { val wordType = p._1 val path = p._2 @@ -70,7 +72,7 @@ object NCDictionaryManager extends NCService { // Read summary dictionary. full = dicts.flatMap(_._2).toSet - ackStart() + ackStarted() } /** @@ -78,7 +80,8 @@ object NCDictionaryManager extends NCService { * @param parent Optional parent span. */ override def stop(parent: Span): Unit = startScopedSpan("stop", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/nlp/numeric/NCNumericManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/nlp/numeric/NCNumericManager.scala index 3abfba1..be9bed3 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/common/nlp/numeric/NCNumericManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/common/nlp/numeric/NCNumericManager.scala @@ -123,10 +123,18 @@ object NCNumericManager extends NCService { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } - + + /** + * + * @param parent Optional parent span. + * @return + */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + genNums = mapResource("numeric/numeric.txt", "utf-8", logger, { _.filter(s ⇒ !s.isEmpty && !s.trim.startsWith("#")). map(_.split("=")). @@ -266,7 +274,7 @@ object NCNumericManager extends NCService { unitsStem = hs.map(p ⇒ p.stem → NCNumericUnit(p.name, p.unitType)).toMap maxSynWords = (unitsOrigs ++ unitsStem).keySet.map(_.split(" ").length).max - ackStart() + ackStarted() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/cmd/NCCommandManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/cmd/NCCommandManager.scala index 0e9c333..956caf9 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/cmd/NCCommandManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/cmd/NCCommandManager.scala @@ -45,7 +45,8 @@ object NCCommandManager extends NCService { * @param parent Optional parent span. */ override def start(parent: Span): NCService = startScopedSpan("start", parent) { _ ⇒ - ackStart() + ackStarting() + ackStarted() } /** @@ -54,7 +55,8 @@ object NCCommandManager extends NCService { * @param parent Optional parent span. */ override def stop(parent: Span): Unit = startScopedSpan("stop", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/conn/NCConnectionManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/conn/NCConnectionManager.scala index 22a23f9..8121f88 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/conn/NCConnectionManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/conn/NCConnectionManager.scala @@ -50,10 +50,7 @@ object NCConnectionManager extends NCService { // Internal probe GUID. @volatile private var probeGuid: String = _ - - // Internal semaphores. - private val stopSem = new AtomicInteger(1) - + private final val sysProps: Properties = System.getProperties private final val localHost: InetAddress = InetAddress.getLocalHost @volatile private var hwAddrs: String = _ @@ -76,16 +73,6 @@ object NCConnectionManager extends NCService { } /** - * - */ - protected def isStopping: Boolean = stopSem.intValue() == 0 - - /** - * - */ - protected def setStopping(): Unit = stopSem.set(0) - - /** * Schedules message for sending to the server. * * @param msg Message to send to server. @@ -279,9 +266,10 @@ object NCConnectionManager extends NCService { require(NCCommandManager.isStarted) require(NCModelManager.isStarted) + ackStarting() + probeGuid = U.genGuid() dnLinkQueue = mutable.Queue.empty[Serializable] - stopSem.set(1) val ctrlLatch = new CountDownLatch(1) @@ -456,17 +444,17 @@ object NCConnectionManager extends NCService { // Only return when probe successfully connected to the server. ctrlLatch.await() - ackStart() + ackStarted() } /** * */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ - setStopping() - + ackStopping() + U.stopThread(ctrlThread) - ackStop() + ackStopped() } } diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/conversation/NCConversationManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/conversation/NCConversationManager.scala index 45812ed..4dbd854 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/conversation/NCConversationManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/conversation/NCConversationManager.scala @@ -40,25 +40,26 @@ object NCConversationManager extends NCService { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ - gc = - U.mkThread("conversation-manager-gc") { t ⇒ - while (!t.isInterrupted) - try - convs.synchronized { - val sleepTime = clearForTimeout() - System.currentTimeMillis() - - if (sleepTime > 0) - convs.wait(sleepTime) - } - catch { - case _: InterruptedException ⇒ // No-op. - case e: Throwable ⇒ logger.error(s"Unexpected error for: ${t.getName}", e) + ackStarting() + + gc = U.mkThread("conversation-manager-gc") { t ⇒ + while (!t.isInterrupted) + try + convs.synchronized { + val sleepTime = clearForTimeout() - System.currentTimeMillis() + + if (sleepTime > 0) + convs.wait(sleepTime) } - } + catch { + case _: InterruptedException ⇒ // No-op. + case e: Throwable ⇒ U.prettyError(logger, s"Unexpected error for thread: ${t.getName}", e) + } + } gc.start() - ackStart() + ackStarted() } /** @@ -66,15 +67,15 @@ object NCConversationManager extends NCService { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ + ackStopping() + U.stopThread(gc) gc = null convs.clear() - logger.info("Conversation manager GC stopped.") - - ackStop() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala index 226343f..d9330ac 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/deploy/NCDeployManager.scala @@ -606,6 +606,8 @@ object NCDeployManager extends NCService with DecorateAsScala { */ @throws[NCE] override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + data = ArrayBuffer.empty[NCProbeModel] mdlFactory = new NCBasicModelFactory @@ -645,7 +647,7 @@ object NCDeployManager extends NCService with DecorateAsScala { if (U.containsDups(ids)) throw new NCE(s"Duplicate model IDs detected: ${ids.mkString(", ")}") - ackStart() + ackStarted() } /** @@ -655,13 +657,15 @@ object NCDeployManager extends NCService with DecorateAsScala { */ @throws[NCE] override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ + ackStopping() + if (mdlFactory != null) mdlFactory.terminate() if (data != null) data.clear() - ackStop() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/dialogflow/NCDialogFlowManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/dialogflow/NCDialogFlowManager.scala index 1c4f9d4..1705ffb 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/dialogflow/NCDialogFlowManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/dialogflow/NCDialogFlowManager.scala @@ -40,25 +40,26 @@ object NCDialogFlowManager extends NCService { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ - gc = - U.mkThread("dialog-flow-manager-gc") { t ⇒ - while (!t.isInterrupted) - try - flow.synchronized { - val sleepTime = clearForTimeout() - System.currentTimeMillis() - - if (sleepTime > 0) - flow.wait(sleepTime) - } - catch { - case _: InterruptedException ⇒ // No-op. - case e: Throwable ⇒ logger.error(s"Unexpected error for: ${t.getName}", e) + ackStarting() + + gc = U.mkThread("dialog-flow-manager-gc") { t ⇒ + while (!t.isInterrupted) + try + flow.synchronized { + val sleepTime = clearForTimeout() - System.currentTimeMillis() + + if (sleepTime > 0) + flow.wait(sleepTime) } - } + catch { + case _: InterruptedException ⇒ // No-op. + case e: Throwable ⇒ U.prettyError(logger, s"Unexpected error for thread: ${t.getName}", e) + } + } gc.start() - ackStart() + ackStarted() } /** @@ -66,15 +67,15 @@ object NCDialogFlowManager extends NCService { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ + ackStopping() + U.stopThread(gc) gc = null flow.clear() - logger.info("Dialog flow manager GC stopped.") - - ackStop() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/lifecycle/NCLifecycleManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/lifecycle/NCLifecycleManager.scala index 2829718..0746615 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/lifecycle/NCLifecycleManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/lifecycle/NCLifecycleManager.scala @@ -40,9 +40,11 @@ object NCLifecycleManager extends NCService { */ @throws[NCE] override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + beans = Config.lifecycle.map(U.mkObject(_).asInstanceOf[NCLifecycle]) - ackStart() + ackStarted() } @@ -52,7 +54,8 @@ object NCLifecycleManager extends NCService { * @param parent Optional parent span. */ override def stop(parent: Span): Unit = startScopedSpan("start", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/NCModelManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/NCModelManager.scala index 86bfa47..eb0c7d6 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/NCModelManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/model/NCModelManager.scala @@ -46,6 +46,8 @@ object NCModelManager extends NCService with DecorateAsScala { */ @throws[NCE] override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { span ⇒ + ackStarting() + val tbl = NCAsciiTable("Model", "Intents") mux.synchronized { @@ -88,19 +90,21 @@ object NCModelManager extends NCService with DecorateAsScala { "deployedModels" → data.values.map(_.model.getId).mkString(",") ) - ackStart() + ackStarted() } /** * Stops this component. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ + ackStopping() + mux.synchronized { if (data != null) data.values.foreach(m ⇒ discardModel(m.model)) } - ackStop() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala index 304c026..e52e92c 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/NCProbeEnrichmentManager.scala @@ -92,12 +92,14 @@ object NCProbeEnrichmentManager extends NCService with NCOpenCensusModelStats { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + embeddedCbs = mutable.HashSet.empty[EMBEDDED_CB] pool = U.mkThreadPool("probe-enrichment") executor = ExecutionContext.fromExecutor(pool) - ackStart() + ackStarted() } /** @@ -105,6 +107,8 @@ object NCProbeEnrichmentManager extends NCService with NCOpenCensusModelStats { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ + ackStopping() + mux.synchronized { if (embeddedCbs != null) embeddedCbs.clear() @@ -114,7 +118,7 @@ object NCProbeEnrichmentManager extends NCService with NCOpenCensusModelStats { executor = null pool = null - ackStop() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/dictionary/NCDictionaryEnricher.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/dictionary/NCDictionaryEnricher.scala index 12fe98e..2be0859 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/dictionary/NCDictionaryEnricher.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/dictionary/NCDictionaryEnricher.scala @@ -43,11 +43,13 @@ object NCDictionaryEnricher extends NCProbeEnricher { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + swearWords = U.readTextResource(s"badfilter/swear_words.txt", "UTF-8", logger). map(NCNlpCoreManager.stem). toSet - ackStart() + ackStarted() } /** @@ -55,7 +57,8 @@ object NCDictionaryEnricher extends NCProbeEnricher { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } @throws[NCE] diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/limit/NCLimitEnricher.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/limit/NCLimitEnricher.scala index 37f040b..2c1f713 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/limit/NCLimitEnricher.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/limit/NCLimitEnricher.scala @@ -149,6 +149,8 @@ object NCLimitEnricher extends NCProbeEnricher { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + // Note that single words only supported now in code. fuzzyNums = stemmatizeWords(Map( "few" → 3, @@ -204,7 +206,7 @@ object NCLimitEnricher extends NCProbeEnricher { techWords = (sortWords.keys ++ topWords ++ postWords ++ fuzzyNums.keySet).toSet - ackStart() + ackStarted() } /** @@ -212,6 +214,8 @@ object NCLimitEnricher extends NCProbeEnricher { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ + ackStopping() + fuzzyNums = null sortWords = null topWords = null @@ -220,7 +224,7 @@ object NCLimitEnricher extends NCProbeEnricher { limits = null techWords = null - ackStop() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCModelEnricher.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCModelEnricher.scala index a01f229..03594d1 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCModelEnricher.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/model/NCModelEnricher.scala @@ -106,7 +106,8 @@ object NCModelEnricher extends NCProbeEnricher with DecorateAsScala { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ - ackStart() + ackStarting() + ackStarted() } /** @@ -114,7 +115,8 @@ object NCModelEnricher extends NCProbeEnricher with DecorateAsScala { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/relation/NCRelationEnricher.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/relation/NCRelationEnricher.scala index 03d0922..ff4475c 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/relation/NCRelationEnricher.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/relation/NCRelationEnricher.scala @@ -68,6 +68,8 @@ object NCRelationEnricher extends NCProbeEnricher { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + val macros = NCMacroParser() FUNCS = { @@ -113,7 +115,7 @@ object NCRelationEnricher extends NCProbeEnricher { ALL_FUNC_STEMS = FUNCS.flatMap(_.allStems).toSet - ackStart() + ackStarted() } /** @@ -121,7 +123,8 @@ object NCRelationEnricher extends NCProbeEnricher { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala index 2b2e11d..f549dd5 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/sort/NCSortEnricher.scala @@ -513,6 +513,8 @@ object NCSortEnricher extends NCProbeEnricher { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + // Single words. sort = SORT_WORDS.map(NCNlpCoreManager.stem) @@ -534,7 +536,7 @@ object NCSortEnricher extends NCProbeEnricher { validate() - ackStart() + ackStarted() } /** @@ -542,12 +544,14 @@ object NCSortEnricher extends NCProbeEnricher { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ + ackStopping() + sort = null by = null order = null stemAnd = null maskWords = null - ackStop() + ackStopped() } } \ No newline at end of file diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/stopword/NCStopWordEnricher.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/stopword/NCStopWordEnricher.scala index 0daf975..255d91b 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/stopword/NCStopWordEnricher.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/stopword/NCStopWordEnricher.scala @@ -54,6 +54,8 @@ object NCStopWordEnricher extends NCProbeEnricher { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + // NOTE: stemmatization is done already by generator. geoPreWords = U.readTextResource(s"context/geo_pre_words.txt", "UTF-8", logger). map(_.split(" ").toSeq).sortBy(-_.size) @@ -79,7 +81,7 @@ object NCStopWordEnricher extends NCProbeEnricher { "must be" ).map(NCNlpCoreManager.stem) - ackStart() + ackStarted() } /** @@ -87,11 +89,13 @@ object NCStopWordEnricher extends NCProbeEnricher { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ + ackStopping() + geoPreWords = null geoKindStops = null numPrefixStops = null - ackStop() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/suspicious/NCSuspiciousNounsEnricher.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/suspicious/NCSuspiciousNounsEnricher.scala index 7f1ae3f..fa9a3a2 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/suspicious/NCSuspiciousNounsEnricher.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/enrichers/suspicious/NCSuspiciousNounsEnricher.scala @@ -37,7 +37,8 @@ object NCSuspiciousNounsEnricher extends NCProbeEnricher { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ - ackStart() + ackStarting() + ackStarted() } /** @@ -45,7 +46,8 @@ object NCSuspiciousNounsEnricher extends NCProbeEnricher { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } @throws[NCE] diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/validate/NCValidateManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/validate/NCValidateManager.scala index f0893e8..86465f8 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/validate/NCValidateManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/probe/mgrs/nlp/validate/NCValidateManager.scala @@ -37,12 +37,14 @@ object NCValidateManager extends NCService with LazyLogging { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + langFinder = new OptimaizeLangDetector() // Initialize language finder. langFinder.loadModels() - ackStart() + ackStarted() } /** @@ -50,7 +52,8 @@ object NCValidateManager extends NCService with LazyLogging { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/company/NCCompanyManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/company/NCCompanyManager.scala index ff5aaa8..8274de4 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/company/NCCompanyManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/company/NCCompanyManager.scala @@ -60,7 +60,8 @@ object NCCompanyManager extends NCService with NCIgniteInstance { * @param parent Optional parent span. */ override def stop(parent: Span): Unit = startScopedSpan("start", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } /** @@ -69,6 +70,8 @@ object NCCompanyManager extends NCService with NCIgniteInstance { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { span ⇒ + ackStarting() + catching(wrapIE) { compSeq = NCSql.mkSeq(ignite, "compSeq", "nc_company", "id") } @@ -110,7 +113,7 @@ object NCCompanyManager extends NCService with NCIgniteInstance { } } - ackStart() + ackStarted() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/feedback/NCFeedbackManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/feedback/NCFeedbackManager.scala index a3996e0..ab32649 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/feedback/NCFeedbackManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/feedback/NCFeedbackManager.scala @@ -37,7 +37,8 @@ object NCFeedbackManager extends NCService with NCIgniteInstance { * @param parent Optional parent span. */ override def stop(parent: Span): Unit = startScopedSpan("start", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } /** @@ -46,11 +47,13 @@ object NCFeedbackManager extends NCService with NCIgniteInstance { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + catching(wrapIE) { seq = NCSql.mkSeq(ignite, "feedbackSeq", "feedback", "id") } - ackStart() + ackStarted() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/geo/NCGeoManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/geo/NCGeoManager.scala index 2b55cc7..4328a37 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/geo/NCGeoManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/geo/NCGeoManager.scala @@ -87,9 +87,11 @@ object NCGeoManager extends NCService { */ @throws[NCE] override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + model = readAndConstructModel(true) - ackStart() + ackStarted() } /** @@ -97,9 +99,11 @@ object NCGeoManager extends NCService { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ + ackStopping() + model = null - ackStop() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/lifecycle/NCServerLifecycleManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/lifecycle/NCServerLifecycleManager.scala index 6e08e7e..9edc199 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/lifecycle/NCServerLifecycleManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/lifecycle/NCServerLifecycleManager.scala @@ -51,6 +51,8 @@ object NCServerLifecycleManager extends NCService { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + if (Config.objects.isEmpty) logger.info("No lifecycle components configured.") else { @@ -61,7 +63,7 @@ object NCServerLifecycleManager extends NCService { tbl.info(logger, Some(s"Configured lifecycle components:")) } - ackStart() + ackStarted() } /** @@ -69,7 +71,8 @@ object NCServerLifecycleManager extends NCService { * @param parent Optional parent span. */ override def stop(parent: Span): Unit = startScopedSpan("stop", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/core/NCNlpServerManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/core/NCNlpServerManager.scala index 2b51180..2552434 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/core/NCNlpServerManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/core/NCNlpServerManager.scala @@ -66,6 +66,8 @@ object NCNlpServerManager extends NCService { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { span ⇒ + ackStarting() + addTags(span, "stanfordNer" → isStanfordNer, "googleNer" → isGoogleNer, @@ -117,7 +119,7 @@ object NCNlpServerManager extends NCService { logger.info(s"Enabled built-in NERs: ${Config.tokenProviders.mkString(", ")}") - ackStart() + ackStarted() } /** @@ -125,13 +127,15 @@ object NCNlpServerManager extends NCService { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ + ackStopping() + if (ners != null) ners.values.foreach(_.stop()) if (parser != null && parser.isStarted) parser.stop() - ackStop() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/core/google/NCGoogleNerEnricher.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/core/google/NCGoogleNerEnricher.scala index a95033e..894cc45 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/core/google/NCGoogleNerEnricher.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/core/google/NCGoogleNerEnricher.scala @@ -38,6 +38,8 @@ object NCGoogleNerEnricher extends NCService with NCNlpNerEnricher with NCIgnite * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + try { srv = LanguageServiceClient.create() @@ -58,7 +60,7 @@ object NCGoogleNerEnricher extends NCService with NCNlpNerEnricher with NCIgnite ) } - ackStart() + ackStarted() } /** @@ -66,10 +68,12 @@ object NCGoogleNerEnricher extends NCService with NCNlpNerEnricher with NCIgnite * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ + ackStopping() + if (srv != null) srv.close() - ackStop() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/core/opennlp/NCOpenNlpNerEnricher.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/core/opennlp/NCOpenNlpNerEnricher.scala index f0b14a3..f2dc816 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/core/opennlp/NCOpenNlpNerEnricher.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/core/opennlp/NCOpenNlpNerEnricher.scala @@ -45,6 +45,8 @@ object NCOpenNlpNerEnricher extends NCService with NCNlpNerEnricher with NCIgnit * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { span ⇒ + ackStarting() + require(NCOpenNlpTokenizer.isStarted) val m = collection.mutable.HashMap.empty[NameFinderME, String] @@ -76,7 +78,7 @@ object NCOpenNlpNerEnricher extends NCService with NCNlpNerEnricher with NCIgnit cache = ignite.cache[String, Array[String]]("opennlp-cache") } - ackStart() + ackStarted() } /** @@ -84,9 +86,11 @@ object NCOpenNlpNerEnricher extends NCService with NCNlpNerEnricher with NCIgnit * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ + ackStopping() + cache = null - ackStop() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/core/opennlp/NCOpenNlpParser.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/core/opennlp/NCOpenNlpParser.scala index fc9b624..62b8374 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/core/opennlp/NCOpenNlpParser.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/core/opennlp/NCOpenNlpParser.scala @@ -49,6 +49,8 @@ object NCOpenNlpParser extends NCService with NCNlpParser with NCIgniteInstance override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { span ⇒ require(NCOpenNlpTokenizer.isStarted) + ackStarting() + U.executeParallel( () ⇒ { tagger = @@ -68,7 +70,7 @@ object NCOpenNlpParser extends NCService with NCNlpParser with NCIgniteInstance cache = ignite.cache[String, Array[String]]("opennlp-cache") } - ackStart() + ackStarted() } /** @@ -76,9 +78,11 @@ object NCOpenNlpParser extends NCService with NCNlpParser with NCIgniteInstance * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ + ackStopping() + cache = null - ackStop() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/core/spacy/NCSpaCyNerEnricher.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/core/spacy/NCSpaCyNerEnricher.scala index bb4a181..70060b6 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/core/spacy/NCSpaCyNerEnricher.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/core/spacy/NCSpaCyNerEnricher.scala @@ -75,6 +75,8 @@ object NCSpaCyNerEnricher extends NCService with NCNlpNerEnricher with NCIgniteI * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { span ⇒ + ackStarting() + url = Config.proxyUrl if (url.last == '/') @@ -101,7 +103,7 @@ object NCSpaCyNerEnricher extends NCService with NCNlpNerEnricher with NCIgniteI logger.info(s"spaCy proxy connected: $url") - ackStart() + ackStarted() } /** @@ -109,7 +111,8 @@ object NCSpaCyNerEnricher extends NCService with NCNlpNerEnricher with NCIgniteI * @param parent Optional parent span. */ override def stop(parent: Span): Unit = startScopedSpan("stop", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/NCServerEnrichmentManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/NCServerEnrichmentManager.scala index 4d3d6b4..94e8468 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/NCServerEnrichmentManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/NCServerEnrichmentManager.scala @@ -255,6 +255,8 @@ object NCServerEnrichmentManager extends NCService with NCIgniteInstance { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { span ⇒ + ackStarting() + catching(wrapIE) { cache = ignite.cache[String, Holder]("sentence-cache") } @@ -276,7 +278,7 @@ object NCServerEnrichmentManager extends NCService with NCIgniteInstance { ners = NCNlpServerManager.getNers supportedProviders = ners.keySet ++ (if (Config.isBuiltInEnrichers) Set("nlpcraft") else Set.empty) - ackStart() + ackStarted() } /** @@ -284,6 +286,8 @@ object NCServerEnrichmentManager extends NCService with NCIgniteInstance { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { span ⇒ + ackStopping() + if (Config.isBuiltInEnrichers) { NCCoordinatesEnricher.stop(span) NCGeoEnricher.stop(span) @@ -297,7 +301,7 @@ object NCServerEnrichmentManager extends NCService with NCIgniteInstance { cache = null - ackStop() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/basenlp/NCBaseNlpEnricher.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/basenlp/NCBaseNlpEnricher.scala index d27531d..cc64123 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/basenlp/NCBaseNlpEnricher.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/basenlp/NCBaseNlpEnricher.scala @@ -78,9 +78,11 @@ object NCBaseNlpEnricher extends NCServerEnricher { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + parser = NCNlpServerManager.getParser - ackStart() + ackStarted() } /** @@ -88,7 +90,8 @@ object NCBaseNlpEnricher extends NCServerEnricher { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/coordinate/NCCoordinatesEnricher.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/coordinate/NCCoordinatesEnricher.scala index e48f30a..2543757 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/coordinate/NCCoordinatesEnricher.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/coordinate/NCCoordinatesEnricher.scala @@ -57,10 +57,12 @@ object NCCoordinatesEnricher extends NCServerEnricher { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + latStems = Seq("lat", "latitude").map(NCNlpCoreManager.stem) lonStems = Seq("lon", "longitude").map(NCNlpCoreManager.stem) - ackStart() + ackStarted() } /** @@ -68,10 +70,12 @@ object NCCoordinatesEnricher extends NCServerEnricher { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ + ackStopping() + latStems = null lonStems = null - ackStop() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/date/NCDateEnricher.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/date/NCDateEnricher.scala index 0fc3125..eb002a5 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/date/NCDateEnricher.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/date/NCDateEnricher.scala @@ -117,7 +117,8 @@ object NCDateEnricher extends NCServerEnricher { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } /** @@ -126,6 +127,8 @@ object NCDateEnricher extends NCServerEnricher { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { span ⇒ + ackStarting() + def read(res: String): LHM_SS = { startScopedSpan("read", span, "res" → res) { _ ⇒ val m: LHM_SS = new LHM_SS() @@ -160,7 +163,7 @@ object NCDateEnricher extends NCServerEnricher { cacheParts = p1 ++ p2 - ackStart() + ackStarted() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/geo/NCGeoEnricher.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/geo/NCGeoEnricher.scala index 9c9dc9c..37bf87f 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/geo/NCGeoEnricher.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/geo/NCGeoEnricher.scala @@ -81,12 +81,14 @@ object NCGeoEnricher extends NCServerEnricher { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ + ackStopping() + commons = null topUsa = null topWorld = null locations = null - ackStop() + ackStopped() } /** @@ -95,6 +97,8 @@ object NCGeoEnricher extends NCServerEnricher { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + locations = NCGeoManager.getModel.synonyms // GEO names matched with common english words and user defined exception GEO names. @@ -126,7 +130,7 @@ object NCGeoEnricher extends NCServerEnricher { topUsa = readCities(US_TOP_PATH).map(city ⇒ glue(city.name, city.region)).toSet topWorld = readCities(WORLD_TOP_PATH).map(city ⇒ glue(city.name, city.region)).toSet - ackStart() + ackStarted() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/numeric/NCNumericEnricher.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/numeric/NCNumericEnricher.scala index 25a4fb8..a884c32 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/numeric/NCNumericEnricher.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/numeric/NCNumericEnricher.scala @@ -179,7 +179,8 @@ object NCNumericEnricher extends NCServerEnricher { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ - ackStart() + ackStarting() + ackStarted() } /** @@ -187,7 +188,8 @@ object NCNumericEnricher extends NCServerEnricher { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } private def mkMap(seq: Seq[String], c: T): Map[String, P] = diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/quote/NCQuoteEnricher.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/quote/NCQuoteEnricher.scala index c6a6dad..d323785 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/quote/NCQuoteEnricher.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/quote/NCQuoteEnricher.scala @@ -36,7 +36,8 @@ object NCQuoteEnricher extends NCServerEnricher { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ - ackStart() + ackStarting() + ackStarted() } /** @@ -44,7 +45,8 @@ object NCQuoteEnricher extends NCServerEnricher { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/stopword/NCStopWordEnricher.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/stopword/NCStopWordEnricher.scala index 6d174e9..d8a1353 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/stopword/NCStopWordEnricher.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/enrichers/stopword/NCStopWordEnricher.scala @@ -653,6 +653,8 @@ object NCStopWordEnricher extends NCServerEnricher { */ @throws[NCE] override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + percents = Set( "%", "pct", @@ -680,7 +682,7 @@ object NCStopWordEnricher extends NCServerEnricher { stopWords = m(false) exceptions = m(true) - ackStart() + ackStarted() } /** @@ -688,6 +690,7 @@ object NCStopWordEnricher extends NCServerEnricher { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } } \ No newline at end of file diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/preproc/NCPreProcessManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/preproc/NCPreProcessManager.scala index b898f87..1076f3d 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/preproc/NCPreProcessManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/preproc/NCPreProcessManager.scala @@ -88,7 +88,8 @@ object NCPreProcessManager extends NCService { * @return */ override def start(parent: Span): NCService = startScopedSpan("start", parent) { _ ⇒ - ackStart() + ackStarting() + ackStarted() } /** @@ -96,7 +97,8 @@ object NCPreProcessManager extends NCService { * @param parent Optional parent span. */ override def stop(parent: Span): Unit = startScopedSpan("stop", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/spell/NCSpellCheckManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/spell/NCSpellCheckManager.scala index 437f568..8ad7b73 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/spell/NCSpellCheckManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/spell/NCSpellCheckManager.scala @@ -50,6 +50,8 @@ object NCSpellCheckManager extends NCService { * @return */ override def start(parent: Span): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + dict = U.extractYamlString( NCExternalConfigManager.getContent(SPELL, RESOURCE), RESOURCE, @@ -59,7 +61,7 @@ object NCSpellCheckManager extends NCService { logger.debug(s"Spell checker dictionary loaded: ${dict.size} entries") - ackStart() + ackStarted() } /** @@ -67,9 +69,11 @@ object NCSpellCheckManager extends NCService { * @param parent Optional parent span. */ override def stop(parent: Span): Unit = startScopedSpan("stop", parent) { _ ⇒ + ackStopping() + dict = null - ackStop() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/wordnet/NCWordNetManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/wordnet/NCWordNetManager.scala index 3cefbc3..bc25652 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/wordnet/NCWordNetManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/nlp/wordnet/NCWordNetManager.scala @@ -73,10 +73,12 @@ object NCWordNetManager extends NCService { */ @throws[NCE] override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + dic = Dictionary.getDefaultResourceInstance morph = dic.getMorphologicalProcessor - ackStart() + ackStarted() } /** @@ -84,7 +86,8 @@ object NCWordNetManager extends NCService { * @param parent Optional parent span. */ override def stop(parent: Span): Unit = startScopedSpan("stop", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/probe/NCProbeManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/probe/NCProbeManager.scala index f939248..0e007b2 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/probe/NCProbeManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/probe/NCProbeManager.scala @@ -159,8 +159,6 @@ object NCProbeManager extends NCService { // All probes pending complete handshake keyed by probe key. @volatile private var pending: mutable.Map[ProbeKey, ProbeHolder] = _ - @volatile private var isStopping: AtomicBoolean = _ - @volatile private var modelsInfo: ConcurrentHashMap[String, Promise[java.util.Map[String, AnyRef]]] = _ /** @@ -169,6 +167,8 @@ object NCProbeManager extends NCService { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { span ⇒ + ackStarting() + probes = mutable.HashMap.empty[ProbeKey, ProbeHolder] mdls = mutable.HashMap.empty[String, NCProbeModelMdo] pending = mutable.HashMap.empty[ProbeKey, ProbeHolder] @@ -180,8 +180,6 @@ object NCProbeManager extends NCService { "uplink" → s"$upHost:$upPort", "downlink" → s"$dnHost:$dnPort" ) - - isStopping = new AtomicBoolean(false) modelsInfo = new ConcurrentHashMap[String, Promise[java.util.Map[String, AnyRef]]]() @@ -206,7 +204,7 @@ object NCProbeManager extends NCService { pingSrv.start() - ackStart() + ackStarted() } /** @@ -214,7 +212,7 @@ object NCProbeManager extends NCService { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ - isStopping = new AtomicBoolean(true) + ackStopping() U.stopThread(pingSrv) U.stopThread(dnSrv) @@ -222,7 +220,7 @@ object NCProbeManager extends NCService { modelsInfo = null - ackStop() + ackStopped() } /** @@ -402,7 +400,7 @@ object NCProbeManager extends NCService { } catch { case e: Exception ⇒ - if (!isStopping.get) { + if (!isStopping) { // Release socket asap. U.close(srv) diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/proclog/NCProcessLogManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/proclog/NCProcessLogManager.scala index 067b890..f7958b9 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/proclog/NCProcessLogManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/proclog/NCProcessLogManager.scala @@ -42,13 +42,15 @@ object NCProcessLogManager extends NCService with NCIgniteInstance { * @return */ override def start(parent: Span): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + catching(wrapIE) { logSeq = NCSql.mkSeq(ignite, "logSeq", "proc_log", "id") logLock = ignite.semaphore("logSemaphore", 1, true, true) } - ackStart() + ackStarted() } /** @@ -56,7 +58,8 @@ object NCProcessLogManager extends NCService with NCIgniteInstance { * @param parent Optional parent span. */ override def stop(parent: Span): Unit = startScopedSpan("stop", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/query/NCQueryManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/query/NCQueryManager.scala index 213b541..cbb2415 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/query/NCQueryManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/query/NCQueryManager.scala @@ -59,6 +59,8 @@ object NCQueryManager extends NCService with NCIgniteInstance with NCOpenCensusS * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + asyncAsks = new ConcurrentHashMap[String/*Server request ID*/, Promise[NCQueryStateMdo]]() catching(wrapIE) { @@ -91,7 +93,7 @@ object NCQueryManager extends NCService with NCIgniteInstance with NCOpenCensusS require(cache != null) - ackStart() + ackStarted() } /** @@ -99,7 +101,8 @@ object NCQueryManager extends NCService with NCIgniteInstance with NCOpenCensusS * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/rest/NCRestManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/rest/NCRestManager.scala index 6fc2a3e..7ad716b 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/rest/NCRestManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/rest/NCRestManager.scala @@ -73,6 +73,8 @@ object NCRestManager extends NCService { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { span ⇒ + ackStarting() + val url = s"${Config.host}:${Config.port}" val api: NCRestApi = U.mkObject(Config.apiImpl) @@ -88,7 +90,7 @@ object NCRestManager extends NCService { case Failure(_) ⇒ logger.info(s"REST server failed to start on '$url'.") } - ackStart() + ackStarted() } /** @@ -96,9 +98,11 @@ object NCRestManager extends NCService { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ + ackStopping() + if (bindFut != null) bindFut.flatMap(_.unbind()).onComplete(_ ⇒ SYSTEM.terminate()) - ackStop() + ackStopped() } } diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/sql/NCSqlManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/sql/NCSqlManager.scala index dea9c5d..f8ea0f2 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/sql/NCSqlManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/sql/NCSqlManager.scala @@ -59,6 +59,8 @@ object NCSqlManager extends NCService with NCIgniteInstance { */ @throws[NCE] override def start(parent: Span): NCService = startScopedSpan("start", parent) { span ⇒ + ackStarting() + addTags(span, "isIgniteDb" → NCSql.isIgniteDb) if (NCSql.isIgniteDb) @@ -68,7 +70,7 @@ object NCSqlManager extends NCService with NCIgniteInstance { usersPropsSeq = NCSql.mkSeq(ignite, "usersPropsSeq", "nc_user_property", "id") } - ackStart() + ackStarted() } /** @@ -76,7 +78,8 @@ object NCSqlManager extends NCService with NCIgniteInstance { * @param parent Optional parent span. */ override def stop(parent: Span): Unit = startScopedSpan("stop", parent) { _ ⇒ - ackStop() + ackStopping() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/sugsyn/NCSuggestSynonymManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/sugsyn/NCSuggestSynonymManager.scala index 930e3ac..f17892a 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/sugsyn/NCSuggestSynonymManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/sugsyn/NCSuggestSynonymManager.scala @@ -118,10 +118,12 @@ object NCSuggestSynonymManager extends NCService { * @return */ override def start(parent: Span): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + pool = Executors.newCachedThreadPool() executor = ExecutionContext.fromExecutor(pool) - ackStart() + ackStarted() } /** @@ -129,11 +131,13 @@ object NCSuggestSynonymManager extends NCService { * @param parent Optional parent span. */ override def stop(parent: Span): Unit = startScopedSpan("stop", parent) { _ ⇒ + ackStopping() + U.shutdownPools(pool) pool = null executor = null - ackStop() + ackStopped() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/tx/NCTxManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/tx/NCTxManager.scala index 0ce81f5..3daf0fe 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/tx/NCTxManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/tx/NCTxManager.scala @@ -51,11 +51,13 @@ object NCTxManager extends NCService with NCIgniteInstance { * @param parent Optional parent span. */ override def stop(parent: Span = null): Unit = startScopedSpan("stop", parent) { _ ⇒ + ackStopping() + // Close all still attached JDBC connections on stop. if (cons != null) cons.values.foreach(U.close) - ackStop() + ackStopped() } /** @@ -64,11 +66,13 @@ object NCTxManager extends NCService with NCIgniteInstance { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { _ ⇒ + ackStarting() + cons = mutable.HashMap.empty[IgniteUuid, Connection] itx = ignite.transactions() - ackStart() + ackStarted() } /** diff --git a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/user/NCUserManager.scala b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/user/NCUserManager.scala index c984e36..b0ea704 100644 --- a/nlpcraft/src/main/scala/org/apache/nlpcraft/server/user/NCUserManager.scala +++ b/nlpcraft/src/main/scala/org/apache/nlpcraft/server/user/NCUserManager.scala @@ -99,6 +99,8 @@ object NCUserManager extends NCService with NCIgniteInstance { * @param parent Optional parent span. */ override def stop(parent: Span): Unit = startScopedSpan("stop", parent) { _ ⇒ + ackStopping() + if (scanner != null) scanner.cancel() @@ -107,7 +109,7 @@ object NCUserManager extends NCService with NCIgniteInstance { tokenSigninCache = null idSigninCache = null - ackStop() + ackStopped() } /** @@ -116,6 +118,8 @@ object NCUserManager extends NCService with NCIgniteInstance { * @return */ override def start(parent: Span = null): NCService = startScopedSpan("start", parent) { span ⇒ + ackStarting() + addTags( span, "pwdPoolBlowup" → Config.pwdPoolBlowup, @@ -179,7 +183,7 @@ object NCUserManager extends NCService with NCIgniteInstance { logger.info(s"Access tokens will be scanned for timeout every ${Config.timeoutScannerFreqMins}m.") logger.info(s"Access tokens inactive for >= ${Config.accessTokenExpireTimeoutMins}m will be invalidated.") - ackStart() + ackStarted() } /**
