@harperfast/harper 5.0.0-alpha.10 → 5.0.0-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/BinObjects.js +17 -0
- package/bin/cliOperations.js +157 -0
- package/bin/copyDb.ts +280 -0
- package/bin/harper.js +156 -0
- package/bin/install.js +15 -0
- package/bin/lite.js +5 -0
- package/bin/restart.js +201 -0
- package/bin/run.js +409 -0
- package/bin/status.js +65 -0
- package/bin/stop.js +22 -0
- package/bin/upgrade.js +134 -0
- package/components/Application.ts +646 -0
- package/components/ApplicationScope.ts +49 -0
- package/components/Component.ts +53 -0
- package/components/ComponentV1.ts +342 -0
- package/components/DEFAULT_CONFIG.ts +18 -0
- package/components/EntryHandler.ts +227 -0
- package/components/Logger.ts +14 -0
- package/components/OptionsWatcher.ts +354 -0
- package/components/PluginModule.ts +6 -0
- package/components/Scope.ts +329 -0
- package/components/componentLoader.ts +529 -0
- package/components/deriveCommonPatternBase.ts +31 -0
- package/components/deriveGlobOptions.ts +44 -0
- package/components/deriveURLPath.ts +57 -0
- package/components/operations.js +658 -0
- package/components/operationsValidation.js +246 -0
- package/components/packageComponent.ts +39 -0
- package/components/requestRestart.ts +26 -0
- package/components/resolveBaseURLPath.ts +38 -0
- package/components/status/ComponentStatus.ts +110 -0
- package/components/status/ComponentStatusRegistry.ts +251 -0
- package/components/status/api.ts +153 -0
- package/components/status/crossThread.ts +405 -0
- package/components/status/errors.ts +152 -0
- package/components/status/index.ts +44 -0
- package/components/status/internal.ts +65 -0
- package/components/status/registry.ts +12 -0
- package/components/status/types.ts +96 -0
- package/config/RootConfigWatcher.ts +59 -0
- package/config/configHelpers.ts +11 -0
- package/config/configUtils.js +967 -0
- package/config/harperConfigEnvVars.ts +641 -0
- package/dataLayer/CreateAttributeObject.js +25 -0
- package/dataLayer/CreateTableObject.js +11 -0
- package/dataLayer/DataLayerObjects.js +43 -0
- package/dataLayer/DeleteBeforeObject.js +22 -0
- package/dataLayer/DeleteObject.js +25 -0
- package/dataLayer/DropAttributeObject.js +11 -0
- package/dataLayer/GetBackupObject.js +22 -0
- package/dataLayer/InsertObject.js +24 -0
- package/dataLayer/ReadAuditLogObject.js +24 -0
- package/dataLayer/SQLSearch.js +1335 -0
- package/dataLayer/SearchByConditionsObject.js +61 -0
- package/dataLayer/SearchByHashObject.js +21 -0
- package/dataLayer/SearchObject.js +45 -0
- package/dataLayer/SqlSearchObject.js +14 -0
- package/dataLayer/UpdateObject.js +23 -0
- package/dataLayer/UpsertObject.js +23 -0
- package/dataLayer/bulkLoad.js +813 -0
- package/dataLayer/dataObjects/BulkLoadObjects.js +27 -0
- package/dataLayer/dataObjects/UpsertObject.js +23 -0
- package/dataLayer/delete.js +164 -0
- package/dataLayer/export.js +381 -0
- package/dataLayer/getBackup.js +40 -0
- package/dataLayer/harperBridge/BridgeMethods.js +81 -0
- package/dataLayer/harperBridge/ResourceBridge.ts +633 -0
- package/dataLayer/harperBridge/bridgeUtility/insertUpdateReturnObj.js +28 -0
- package/dataLayer/harperBridge/bridgeUtility/insertUpdateValidate.js +88 -0
- package/dataLayer/harperBridge/harperBridge.js +21 -0
- package/dataLayer/harperBridge/lmdbBridge/LMDBBridge.js +119 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/DeleteAuditLogsBeforeResults.js +19 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateAttribute.js +112 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateRecords.js +67 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateSchema.js +31 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbCreateTable.js +94 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteAuditLogsBefore.js +98 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDeleteRecords.js +89 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropAttribute.js +109 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropSchema.js +107 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbDropTable.js +137 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbFlush.js +35 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetBackup.js +111 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByHash.js +28 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbGetDataByValue.js +29 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbReadAuditLog.js +207 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByConditions.js +156 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByHash.js +21 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbSearchByValue.js +30 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbTransaction.js +19 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpdateRecords.js +64 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbMethods/lmdbUpsertRecords.js +70 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBCreateAttributeObject.js +22 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBDeleteTransactionObject.js +23 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBInsertTransactionObject.js +22 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBTransactionObject.js +23 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBUpdateTransactionObject.js +24 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/LMDBUpsertTransactionObject.js +24 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/TableSizeObject.js +25 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializeHashSearch.js +21 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/initializePaths.js +157 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCheckForNewAttributes.js +94 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbCreateTransactionsAuditEnvironment.js +39 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbGetTableSize.js +34 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbProcessRows.js +100 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbSearch.js +371 -0
- package/dataLayer/harperBridge/lmdbBridge/lmdbUtility/lmdbWriteTransaction.js +109 -0
- package/dataLayer/hdbInfoController.js +254 -0
- package/dataLayer/insert.js +266 -0
- package/dataLayer/readAuditLog.js +59 -0
- package/dataLayer/schema.js +366 -0
- package/dataLayer/schemaDescribe.js +289 -0
- package/dataLayer/search.js +60 -0
- package/dataLayer/transaction.js +17 -0
- package/dataLayer/update.js +124 -0
- package/dist/components/Logger.d.ts +12 -0
- package/dist/{resources/ResourceInterfaceV2.js → components/Logger.js} +1 -1
- package/dist/components/Logger.js.map +1 -0
- package/dist/components/Scope.d.ts +14 -4
- package/dist/components/Scope.js +18 -10
- package/dist/components/Scope.js.map +1 -1
- package/dist/components/componentLoader.js +17 -10
- package/dist/components/componentLoader.js.map +1 -1
- package/dist/components/operations.js +2 -2
- package/dist/components/operations.js.map +1 -1
- package/dist/config/configUtils.d.ts +1 -1
- package/dist/config/configUtils.js +1 -1
- package/dist/config/configUtils.js.map +1 -1
- package/dist/dataLayer/CreateTableObject.d.ts +2 -2
- package/dist/dataLayer/CreateTableObject.js +2 -2
- package/dist/dataLayer/CreateTableObject.js.map +1 -1
- package/dist/dataLayer/delete.d.ts +1 -1
- package/dist/dataLayer/schema.js +6 -5
- package/dist/dataLayer/schema.js.map +1 -1
- package/dist/dataLayer/schemaDescribe.js +1 -1
- package/dist/dataLayer/schemaDescribe.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/resources/DatabaseTransaction.d.ts +1 -1
- package/dist/resources/IterableEventQueue.d.ts +1 -1
- package/dist/resources/LMDBTransaction.d.ts +5 -1
- package/dist/resources/Resource.d.ts +1 -1
- package/dist/resources/ResourceInterface.d.ts +1 -1
- package/dist/resources/RocksIndexStore.d.ts +3 -3
- package/dist/resources/RocksTransactionLogStore.d.ts +6 -3
- package/dist/resources/Table.d.ts +15 -6
- package/dist/resources/Table.js +12 -4
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/analytics/read.js +32 -22
- package/dist/resources/analytics/read.js.map +1 -1
- package/dist/resources/analytics/write.js +3 -6
- package/dist/resources/analytics/write.js.map +1 -1
- package/dist/resources/auditStore.d.ts +3 -3
- package/dist/resources/blob.d.ts +25 -2
- package/dist/resources/databases.d.ts +12 -2
- package/dist/resources/databases.js +22 -19
- package/dist/resources/databases.js.map +1 -1
- package/dist/resources/search.js +11 -5
- package/dist/resources/search.js.map +1 -1
- package/dist/resources/transaction.d.ts +2 -1
- package/dist/security/auth.js +1 -1
- package/dist/security/auth.js.map +1 -1
- package/dist/security/cryptoHash.d.ts +2 -2
- package/dist/security/jsLoader.js +265 -73
- package/dist/security/jsLoader.js.map +1 -1
- package/dist/security/keys.js +11 -12
- package/dist/security/keys.js.map +1 -1
- package/dist/security/user.js +3 -3
- package/dist/security/user.js.map +1 -1
- package/dist/server/REST.js +16 -2
- package/dist/server/REST.js.map +1 -1
- package/dist/server/Server.d.ts +2 -1
- package/dist/server/Server.js.map +1 -1
- package/dist/server/fastifyRoutes/plugins/hdbCore.d.ts +6 -1
- package/dist/server/fastifyRoutes.js +2 -0
- package/dist/server/fastifyRoutes.js.map +1 -1
- package/dist/server/http.js +12 -6
- package/dist/server/http.js.map +1 -1
- package/dist/server/jobs/JobObject.d.ts +3 -3
- package/dist/server/loadRootComponents.js +1 -0
- package/dist/server/loadRootComponents.js.map +1 -1
- package/dist/server/operationsServer.js +3 -1
- package/dist/server/operationsServer.js.map +1 -1
- package/dist/server/serverHelpers/JSONStream.d.ts +3 -3
- package/dist/server/serverHelpers/Request.d.ts +5 -5
- package/dist/server/serverHelpers/requestTimePlugin.d.ts +1 -1
- package/dist/server/threads/manageThreads.d.ts +2 -2
- package/dist/server/threads/manageThreads.js +52 -35
- package/dist/server/threads/manageThreads.js.map +1 -1
- package/dist/server/threads/socketRouter.d.ts +1 -1
- package/dist/sqlTranslator/deleteTranslator.d.ts +1 -1
- package/dist/utility/AWS/AWSConnector.d.ts +3 -2
- package/dist/utility/common_utils.d.ts +3 -3
- package/dist/utility/environment/systemInformation.d.ts +1 -0
- package/dist/utility/functions/date/dateFunctions.d.ts +11 -11
- package/dist/utility/globalSchema.d.ts +1 -1
- package/dist/utility/hdbTerms.d.ts +3 -0
- package/dist/utility/hdbTerms.js +3 -0
- package/dist/utility/hdbTerms.js.map +1 -1
- package/dist/utility/installation.d.ts +2 -4
- package/dist/utility/installation.js.map +1 -1
- package/dist/utility/lmdb/commonUtility.d.ts +2 -1
- package/dist/utility/lmdb/commonUtility.js +20 -13
- package/dist/utility/lmdb/commonUtility.js.map +1 -1
- package/dist/utility/lmdb/deleteUtility.d.ts +1 -0
- package/dist/utility/lmdb/environmentUtility.d.ts +1 -0
- package/dist/utility/lmdb/searchUtility.d.ts +2 -1
- package/dist/utility/lmdb/writeUtility.d.ts +1 -0
- package/dist/utility/logging/harper_logger.d.ts +6 -6
- package/dist/utility/processManagement/processManagement.d.ts +1 -1
- package/dist/utility/processManagement/servicesConfig.d.ts +12 -6
- package/dist/validation/common_validators.d.ts +4 -3
- package/dist/validation/configValidator.d.ts +3 -2
- package/index.d.ts +56 -0
- package/index.js +41 -0
- package/json/systemSchema.json +373 -0
- package/launchServiceScripts/launchHarperDB.js +3 -0
- package/launchServiceScripts/utility/checkNodeVersion.js +15 -0
- package/package.json +35 -16
- package/resources/DatabaseTransaction.ts +378 -0
- package/resources/ErrorResource.ts +57 -0
- package/resources/IterableEventQueue.ts +94 -0
- package/resources/LMDBTransaction.ts +349 -0
- package/resources/RecordEncoder.ts +702 -0
- package/resources/RequestTarget.ts +134 -0
- package/resources/Resource.ts +789 -0
- package/resources/ResourceInterface.ts +221 -0
- package/resources/Resources.ts +162 -0
- package/resources/RocksIndexStore.ts +70 -0
- package/resources/RocksTransactionLogStore.ts +352 -0
- package/resources/Table.ts +4531 -0
- package/resources/analytics/hostnames.ts +72 -0
- package/resources/analytics/metadata.ts +10 -0
- package/resources/analytics/read.ts +252 -0
- package/resources/analytics/write.ts +803 -0
- package/resources/auditStore.ts +556 -0
- package/resources/blob.ts +1268 -0
- package/resources/crdt.ts +125 -0
- package/resources/dataLoader.ts +527 -0
- package/resources/databases.ts +1290 -0
- package/resources/graphql.ts +221 -0
- package/resources/indexes/HierarchicalNavigableSmallWorld.ts +638 -0
- package/resources/indexes/customIndexes.ts +7 -0
- package/resources/indexes/vector.ts +38 -0
- package/resources/jsResource.ts +86 -0
- package/resources/loadEnv.ts +22 -0
- package/resources/login.ts +18 -0
- package/resources/openApi.ts +409 -0
- package/resources/registrationDeprecated.ts +8 -0
- package/resources/replayLogs.ts +136 -0
- package/resources/roles.ts +98 -0
- package/resources/search.ts +1301 -0
- package/resources/tracked.ts +584 -0
- package/resources/transaction.ts +89 -0
- package/resources/transactionBroadcast.ts +258 -0
- package/security/auth.ts +376 -0
- package/security/certificateVerification/certificateVerificationSource.ts +84 -0
- package/security/certificateVerification/configValidation.ts +107 -0
- package/security/certificateVerification/crlVerification.ts +623 -0
- package/security/certificateVerification/index.ts +121 -0
- package/security/certificateVerification/ocspVerification.ts +148 -0
- package/security/certificateVerification/pkijs-ed25519-patch.ts +188 -0
- package/security/certificateVerification/types.ts +128 -0
- package/security/certificateVerification/verificationConfig.ts +138 -0
- package/security/certificateVerification/verificationUtils.ts +447 -0
- package/security/cryptoHash.js +42 -0
- package/security/data_objects/PermissionAttributeResponseObject.js +15 -0
- package/security/data_objects/PermissionResponseObject.js +115 -0
- package/security/data_objects/PermissionTableResponseObject.js +20 -0
- package/security/fastifyAuth.js +169 -0
- package/security/impersonation.ts +160 -0
- package/security/jsLoader.ts +733 -0
- package/security/keys.js +948 -0
- package/security/permissionsTranslator.js +300 -0
- package/security/role.js +218 -0
- package/security/tokenAuthentication.ts +228 -0
- package/security/user.ts +449 -0
- package/server/DurableSubscriptionsSession.ts +503 -0
- package/server/REST.ts +407 -0
- package/server/Server.ts +89 -0
- package/server/fastifyRoutes/helpers/getCORSOptions.js +36 -0
- package/server/fastifyRoutes/helpers/getHeaderTimeoutConfig.js +15 -0
- package/server/fastifyRoutes/helpers/getServerOptions.js +33 -0
- package/server/fastifyRoutes/plugins/hdbCore.js +39 -0
- package/server/fastifyRoutes.ts +205 -0
- package/server/graphqlQuerying.ts +700 -0
- package/server/http.ts +640 -0
- package/server/itc/serverHandlers.js +161 -0
- package/server/itc/utility/ITCEventObject.js +10 -0
- package/server/jobs/JobObject.js +24 -0
- package/server/jobs/jobProcess.js +69 -0
- package/server/jobs/jobRunner.js +162 -0
- package/server/jobs/jobs.js +304 -0
- package/server/loadRootComponents.js +44 -0
- package/server/mqtt.ts +485 -0
- package/server/nodeName.ts +75 -0
- package/server/operationsServer.ts +313 -0
- package/server/serverHelpers/Headers.ts +108 -0
- package/server/serverHelpers/JSONStream.ts +269 -0
- package/server/serverHelpers/OperationFunctionObject.ts +13 -0
- package/server/serverHelpers/Request.ts +158 -0
- package/server/serverHelpers/contentTypes.ts +637 -0
- package/server/serverHelpers/requestTimePlugin.js +57 -0
- package/server/serverHelpers/serverHandlers.js +148 -0
- package/server/serverHelpers/serverUtilities.ts +473 -0
- package/server/serverRegistry.ts +8 -0
- package/server/static.ts +187 -0
- package/server/status/definitions.ts +37 -0
- package/server/status/index.ts +125 -0
- package/server/storageReclamation.ts +93 -0
- package/server/threads/itc.js +89 -0
- package/server/threads/manageThreads.js +596 -0
- package/server/threads/socketRouter.ts +360 -0
- package/server/threads/threadServer.js +279 -0
- package/server/throttle.ts +73 -0
- package/sqlTranslator/SelectValidator.js +330 -0
- package/sqlTranslator/alasqlFunctionImporter.js +62 -0
- package/sqlTranslator/deleteTranslator.js +67 -0
- package/sqlTranslator/index.js +242 -0
- package/sqlTranslator/sql_statement_bucket.js +472 -0
- package/static/defaultConfig.yaml +3 -0
- package/studio/web/HDBDogOnly.svg +78 -0
- package/studio/web/assets/PPRadioGrotesk-Bold-DDaUYG8E.woff +0 -0
- package/studio/web/assets/fa-brands-400-CEJbCg16.woff +0 -0
- package/studio/web/assets/fa-brands-400-CSYNqBb_.ttf +0 -0
- package/studio/web/assets/fa-brands-400-DnkPfk3o.eot +0 -0
- package/studio/web/assets/fa-brands-400-UxlILjvJ.woff2 +0 -0
- package/studio/web/assets/fa-brands-400-cH1MgKbP.svg +3717 -0
- package/studio/web/assets/fa-regular-400-BhTwtT8w.eot +0 -0
- package/studio/web/assets/fa-regular-400-D1vz6WBx.ttf +0 -0
- package/studio/web/assets/fa-regular-400-DFnMcJPd.woff +0 -0
- package/studio/web/assets/fa-regular-400-DGzu1beS.woff2 +0 -0
- package/studio/web/assets/fa-regular-400-gwj8Pxq-.svg +801 -0
- package/studio/web/assets/fa-solid-900-B4ZZ7kfP.svg +5034 -0
- package/studio/web/assets/fa-solid-900-B6Axprfb.eot +0 -0
- package/studio/web/assets/fa-solid-900-BUswJgRo.woff2 +0 -0
- package/studio/web/assets/fa-solid-900-DOXgCApm.woff +0 -0
- package/studio/web/assets/fa-solid-900-mxuxnBEa.ttf +0 -0
- package/studio/web/assets/index-C1G-Jo6n.js +37 -0
- package/studio/web/assets/index-C1G-Jo6n.js.map +1 -0
- package/studio/web/assets/index-D-CahN0-.js +2 -0
- package/studio/web/assets/index-D-CahN0-.js.map +1 -0
- package/studio/web/assets/index-DxlZI0PX.js +235 -0
- package/studio/web/assets/index-DxlZI0PX.js.map +1 -0
- package/studio/web/assets/index-Y2g_iFpU.css +1 -0
- package/studio/web/assets/index-jiPwkrsB.css +1 -0
- package/studio/web/assets/index.lazy-BUXDDqq9.js +266 -0
- package/studio/web/assets/index.lazy-BUXDDqq9.js.map +1 -0
- package/studio/web/assets/profiler-CU93QiSW.js +2 -0
- package/studio/web/assets/profiler-CU93QiSW.js.map +1 -0
- package/studio/web/assets/react-redux-B8k9Ep7e.js +6 -0
- package/studio/web/assets/react-redux-B8k9Ep7e.js.map +1 -0
- package/studio/web/assets/startRecording-DFeBXGk6.js +3 -0
- package/studio/web/assets/startRecording-DFeBXGk6.js.map +1 -0
- package/studio/web/fabric-signup-background.webp +0 -0
- package/studio/web/fabric-signup-text.png +0 -0
- package/studio/web/favicon_purple.png +0 -0
- package/studio/web/github-icon.svg +15 -0
- package/studio/web/harper-fabric_black.png +0 -0
- package/studio/web/harper-fabric_white.png +0 -0
- package/studio/web/harper-studio_white.png +0 -0
- package/studio/web/index.html +16 -0
- package/studio/web/running.css +148 -0
- package/studio/web/running.html +147 -0
- package/studio/web/running.js +111 -0
- package/upgrade/UpgradeObjects.js +13 -0
- package/upgrade/directives/directivesController.js +90 -0
- package/upgrade/directivesManager.js +139 -0
- package/upgrade/upgradePrompt.js +124 -0
- package/upgrade/upgradeUtilities.js +28 -0
- package/utility/AWS/AWSConnector.js +29 -0
- package/utility/OperationFunctionCaller.js +63 -0
- package/utility/assignCmdEnvVariables.js +62 -0
- package/utility/common_utils.js +867 -0
- package/utility/environment/environmentManager.js +208 -0
- package/utility/environment/systemInformation.js +355 -0
- package/utility/errors/commonErrors.js +267 -0
- package/utility/errors/hdbError.js +146 -0
- package/utility/functions/date/dateFunctions.js +65 -0
- package/utility/functions/geo.js +355 -0
- package/utility/functions/sql/alaSQLExtension.js +104 -0
- package/utility/globalSchema.js +35 -0
- package/utility/hdbTerms.ts +819 -0
- package/utility/install/checkJWTTokensExist.js +62 -0
- package/utility/install/harperdb.conf +15 -0
- package/utility/install/harperdb.service +14 -0
- package/utility/install/installer.js +635 -0
- package/utility/installation.ts +30 -0
- package/utility/lmdb/DBIDefinition.js +20 -0
- package/utility/lmdb/DeleteRecordsResponseObject.js +25 -0
- package/utility/lmdb/InsertRecordsResponseObject.js +22 -0
- package/utility/lmdb/OpenDBIObject.js +31 -0
- package/utility/lmdb/OpenEnvironmentObject.js +41 -0
- package/utility/lmdb/UpdateRecordsResponseObject.js +25 -0
- package/utility/lmdb/UpsertRecordsResponseObject.js +22 -0
- package/utility/lmdb/cleanLMDBMap.js +65 -0
- package/utility/lmdb/commonUtility.js +130 -0
- package/utility/lmdb/deleteUtility.js +128 -0
- package/utility/lmdb/environmentUtility.js +477 -0
- package/utility/lmdb/searchCursorFunctions.js +187 -0
- package/utility/lmdb/searchUtility.js +918 -0
- package/utility/lmdb/terms.js +57 -0
- package/utility/lmdb/writeUtility.js +407 -0
- package/utility/logging/harper_logger.js +876 -0
- package/utility/logging/logRotator.js +157 -0
- package/utility/logging/logger.ts +24 -0
- package/utility/logging/readLog.js +355 -0
- package/utility/logging/transactionLog.js +57 -0
- package/utility/mount_hdb.js +59 -0
- package/utility/npmUtilities.js +102 -0
- package/utility/operationPermissions.ts +112 -0
- package/utility/operation_authorization.js +836 -0
- package/utility/packageUtils.js +55 -0
- package/utility/password.ts +99 -0
- package/utility/processManagement/processManagement.js +187 -0
- package/utility/processManagement/servicesConfig.js +56 -0
- package/utility/scripts/restartHdb.js +24 -0
- package/utility/scripts/user_data.sh +13 -0
- package/utility/signalling.js +36 -0
- package/utility/terms/certificates.js +81 -0
- package/utility/when.ts +20 -0
- package/validation/bulkDeleteValidator.js +24 -0
- package/validation/check_permissions.js +19 -0
- package/validation/common_validators.js +95 -0
- package/validation/configValidator.js +331 -0
- package/validation/deleteValidator.js +15 -0
- package/validation/fileLoadValidator.js +153 -0
- package/validation/insertValidator.js +40 -0
- package/validation/installValidator.js +37 -0
- package/validation/readLogValidator.js +64 -0
- package/validation/role_validation.js +320 -0
- package/validation/schemaMetadataValidator.js +42 -0
- package/validation/searchValidator.js +166 -0
- package/validation/statusValidator.ts +66 -0
- package/validation/transactionLogValidator.js +33 -0
- package/validation/user_validation.js +55 -0
- package/validation/validationWrapper.js +105 -0
- package/dist/resources/ResourceInterfaceV2.d.ts +0 -21
- package/dist/resources/ResourceInterfaceV2.js.map +0 -1
- package/dist/resources/ResourceV2.d.ts +0 -30
- package/dist/resources/ResourceV2.js +0 -27
- package/dist/resources/ResourceV2.js.map +0 -1
- package/dist/resources/analytics/profile.d.ts +0 -2
- package/dist/resources/analytics/profile.js +0 -144
- package/dist/resources/analytics/profile.js.map +0 -1
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/* global threads */
|
|
4
|
+
const hdbLogger = require('../../utility/logging/harper_logger.js');
|
|
5
|
+
const hdbTerms = require('../../utility/hdbTerms.ts');
|
|
6
|
+
const cleanLmdbMap = require('../../utility/lmdb/cleanLMDBMap.js');
|
|
7
|
+
const userSchema = require('../../security/user.ts');
|
|
8
|
+
const { validateEvent } = require('../threads/itc.js');
|
|
9
|
+
const harperBridge = require('../../dataLayer/harperBridge/harperBridge.js');
|
|
10
|
+
const process = require('process');
|
|
11
|
+
const { resetDatabases } = require('../../resources/databases.ts');
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* This object/functions are passed to the ITC client instance and dynamically added as event handlers.
|
|
15
|
+
* @type {{schema: ((function(*): Promise<void>)|*), job: ((function(*): Promise<void>)|*), user: ((function(): Promise<void>)|*)}}
|
|
16
|
+
*/
|
|
17
|
+
const serverItcHandlers = {
|
|
18
|
+
[hdbTerms.ITC_EVENT_TYPES.SCHEMA]: schemaHandler,
|
|
19
|
+
[hdbTerms.ITC_EVENT_TYPES.USER]: userHandler,
|
|
20
|
+
[hdbTerms.ITC_EVENT_TYPES.COMPONENT_STATUS_REQUEST]: componentStatusRequestHandler,
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Updates the global hdbSchema object.
|
|
25
|
+
* @param event
|
|
26
|
+
* @returns {Promise<void>}
|
|
27
|
+
*/
|
|
28
|
+
async function schemaHandler(event) {
|
|
29
|
+
const validate = validateEvent(event);
|
|
30
|
+
if (validate) {
|
|
31
|
+
hdbLogger.error(validate);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
hdbLogger.trace(`ITC schemaHandler received schema event:`, event);
|
|
36
|
+
await cleanLmdbMap(event.message);
|
|
37
|
+
await syncSchemaMetadata(event.message);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Switch statement to handle schema-related messages from other forked processes - i.e. if another process completes an
|
|
42
|
+
* operation that updates schema and, therefore, requires that we update the global schema value for the process
|
|
43
|
+
*
|
|
44
|
+
* @param msg
|
|
45
|
+
* @returns {Promise<void>}
|
|
46
|
+
*/
|
|
47
|
+
async function syncSchemaMetadata(msg) {
|
|
48
|
+
try {
|
|
49
|
+
// reset current read transactions to ensure that we are getting the very latest data
|
|
50
|
+
harperBridge.resetReadTxn(hdbTerms.SYSTEM_SCHEMA_NAME, hdbTerms.SYSTEM_TABLE_NAMES.TABLE_TABLE_NAME);
|
|
51
|
+
harperBridge.resetReadTxn(hdbTerms.SYSTEM_SCHEMA_NAME, hdbTerms.SYSTEM_TABLE_NAMES.ATTRIBUTE_TABLE_NAME);
|
|
52
|
+
harperBridge.resetReadTxn(hdbTerms.SYSTEM_SCHEMA_NAME, hdbTerms.SYSTEM_TABLE_NAMES.SCHEMA_TABLE_NAME);
|
|
53
|
+
// TODO: Eventually should indicate which database/table changed so we don't have to scan everything
|
|
54
|
+
let databases = resetDatabases();
|
|
55
|
+
if (msg.table && msg.database)
|
|
56
|
+
// wait for a write to finish to ensure all writes have been written
|
|
57
|
+
await databases[msg.database][msg.table].put(Symbol.for('write-verify'), null);
|
|
58
|
+
} catch (e) {
|
|
59
|
+
hdbLogger.error(e);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const userListeners = [];
|
|
64
|
+
/**
|
|
65
|
+
* Updates the global hdbUsers object by querying the hdbRole table.
|
|
66
|
+
* @param event
|
|
67
|
+
* @returns {Promise<void>}
|
|
68
|
+
*/
|
|
69
|
+
async function userHandler(event) {
|
|
70
|
+
try {
|
|
71
|
+
try {
|
|
72
|
+
harperBridge.resetReadTxn(hdbTerms.SYSTEM_SCHEMA_NAME, hdbTerms.SYSTEM_TABLE_NAMES.USER_TABLE_NAME);
|
|
73
|
+
harperBridge.resetReadTxn(hdbTerms.SYSTEM_SCHEMA_NAME, hdbTerms.SYSTEM_TABLE_NAMES.ROLE_TABLE_NAME);
|
|
74
|
+
} catch (error) {
|
|
75
|
+
// this can happen during tests, best to ignore
|
|
76
|
+
hdbLogger.warn(error);
|
|
77
|
+
}
|
|
78
|
+
const validate = validateEvent(event);
|
|
79
|
+
if (validate) {
|
|
80
|
+
hdbLogger.error(validate);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
hdbLogger.trace(`ITC userHandler ${hdbTerms.HDB_ITC_CLIENT_PREFIX}${process.pid} received user event:`, event);
|
|
85
|
+
await userSchema.setUsersWithRolesCache();
|
|
86
|
+
for (let listener of userListeners) listener();
|
|
87
|
+
} catch (err) {
|
|
88
|
+
hdbLogger.error(err);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
userHandler.addListener = function (listener) {
|
|
93
|
+
userListeners.push(listener);
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Handles incoming requests for component status from inter-thread communication (ITC).
|
|
98
|
+
* Validates the event, retrieves the current thread's component statuses, and sends a response
|
|
99
|
+
* back to the originator thread with the requested information.
|
|
100
|
+
*
|
|
101
|
+
* @async
|
|
102
|
+
* @function componentStatusRequestHandler
|
|
103
|
+
* @param {Object} event - The event object containing the request details.
|
|
104
|
+
* @param {Object} event.message - The message object within the event.
|
|
105
|
+
* @param {string} event.message.originator - The identifier of the thread that originated the request.
|
|
106
|
+
* @param {string} event.message.requestId - The unique identifier for the request.
|
|
107
|
+
* @returns {Promise<void>} Sends a response back to the originator thread or logs an error if validation fails.
|
|
108
|
+
*/
|
|
109
|
+
async function componentStatusRequestHandler(event) {
|
|
110
|
+
try {
|
|
111
|
+
const validate = validateEvent(event);
|
|
112
|
+
if (validate) {
|
|
113
|
+
hdbLogger.error(validate);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
hdbLogger.trace(`ITC componentStatusRequestHandler received request:`, event);
|
|
118
|
+
|
|
119
|
+
// Get current thread's component status
|
|
120
|
+
const { internal } = require('../../components/status/index.ts');
|
|
121
|
+
const { getWorkerIndex } = require('../threads/manageThreads.js');
|
|
122
|
+
const { sendItcEvent } = require('../threads/itc.js');
|
|
123
|
+
const componentStatuses = internal.componentStatusRegistry.getAllStatuses();
|
|
124
|
+
|
|
125
|
+
// Convert Map to array for serialization
|
|
126
|
+
const statusArray = Array.from(componentStatuses.entries());
|
|
127
|
+
|
|
128
|
+
// Get worker index and determine if this is the main thread
|
|
129
|
+
const workerIndex = getWorkerIndex();
|
|
130
|
+
const isMainThread = workerIndex === undefined;
|
|
131
|
+
|
|
132
|
+
// Send response directly back to the originating thread
|
|
133
|
+
const originatorThreadId = event.message.originator;
|
|
134
|
+
const responseMessage = {
|
|
135
|
+
type: hdbTerms.ITC_EVENT_TYPES.COMPONENT_STATUS_RESPONSE,
|
|
136
|
+
message: {
|
|
137
|
+
requestId: event.message.requestId,
|
|
138
|
+
statuses: statusArray,
|
|
139
|
+
workerIndex: workerIndex,
|
|
140
|
+
isMainThread: isMainThread,
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
// Use global threads (connectedPorts) to send directly to originator
|
|
145
|
+
if (originatorThreadId !== undefined && threads.sendToThread(originatorThreadId, responseMessage)) {
|
|
146
|
+
hdbLogger.trace(`Sent component status response directly to thread ${originatorThreadId}`);
|
|
147
|
+
} else {
|
|
148
|
+
// Fallback to broadcast if direct send fails or originator is missing
|
|
149
|
+
if (originatorThreadId === undefined) {
|
|
150
|
+
hdbLogger.debug('No originator threadId, falling back to broadcast');
|
|
151
|
+
} else {
|
|
152
|
+
hdbLogger.warn(`Failed to send direct response to thread ${originatorThreadId}, falling back to broadcast`);
|
|
153
|
+
}
|
|
154
|
+
await sendItcEvent(responseMessage);
|
|
155
|
+
}
|
|
156
|
+
} catch (error) {
|
|
157
|
+
hdbLogger.error('Error handling component status request:', error);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
module.exports = serverItcHandlers;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const hdbTerm = require('../../utility/hdbTerms.ts');
|
|
4
|
+
const moment = require('moment');
|
|
5
|
+
const uuidV4 = require('uuid').v4;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* This class represents a Job as it resides in the jobs table.
|
|
9
|
+
*/
|
|
10
|
+
class JobObject {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.id = uuidV4();
|
|
13
|
+
this.type = undefined;
|
|
14
|
+
this.start_datetime = moment().valueOf();
|
|
15
|
+
this.created_datetime = moment().valueOf();
|
|
16
|
+
this.end_datetime = undefined;
|
|
17
|
+
this.status = hdbTerm.JOB_STATUS_ENUM.CREATED;
|
|
18
|
+
this.message = undefined;
|
|
19
|
+
this.user = undefined;
|
|
20
|
+
this.request = undefined;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
module.exports = JobObject;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const hdbTerms = require('../../utility/hdbTerms.ts');
|
|
4
|
+
const hdbUtils = require('../../utility/common_utils.js');
|
|
5
|
+
const harperLogger = require('../../utility/logging/harper_logger.js');
|
|
6
|
+
const globalSchema = require('../../utility/globalSchema.js');
|
|
7
|
+
const user = require('../../security/user.ts');
|
|
8
|
+
const serverUtils = require('../serverHelpers/serverUtilities.ts');
|
|
9
|
+
const moment = require('moment');
|
|
10
|
+
const jobs = require('./jobs.js');
|
|
11
|
+
const { cloneDeep } = require('lodash');
|
|
12
|
+
const JOB_NAME = process.env[hdbTerms.PROCESS_NAME_ENV_PROP];
|
|
13
|
+
const JOB_ID = JOB_NAME.substring(4);
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Finds the appropriate function for the request and runs it.
|
|
17
|
+
* Then updates the job table accordingly.
|
|
18
|
+
* @returns {Promise<void>}
|
|
19
|
+
*/
|
|
20
|
+
(async function job() {
|
|
21
|
+
// The request value could potentially be quite large so it's set to undefined to clear it out after being processed.
|
|
22
|
+
let jobObj = { id: JOB_ID, request: undefined };
|
|
23
|
+
let exitCode = 0;
|
|
24
|
+
try {
|
|
25
|
+
harperLogger.notify('Starting job:', JOB_ID);
|
|
26
|
+
globalSchema.setSchemaDataToGlobal();
|
|
27
|
+
await user.setUsersWithRolesCache();
|
|
28
|
+
|
|
29
|
+
// When the job record is first inserted in hdbJob table by HDB, the incoming API request is included, this is
|
|
30
|
+
// how we pass the request to the job process. IPC was initially used but messages were getting lost under heavy load.
|
|
31
|
+
const jobRecord = await jobs.getJobById(JOB_ID);
|
|
32
|
+
if (hdbUtils.isEmptyOrZeroLength(jobRecord)) {
|
|
33
|
+
throw new Error(`Unable to find a record in hdbJob for job: ${JOB_ID}`);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
let { request } = jobRecord[0];
|
|
37
|
+
if (hdbUtils.isEmptyOrZeroLength(request)) {
|
|
38
|
+
throw new Error('Did not find job request in hdb_job table, unable to proceed');
|
|
39
|
+
}
|
|
40
|
+
request = cloneDeep(request);
|
|
41
|
+
|
|
42
|
+
const operation = serverUtils.getOperationFunction(request);
|
|
43
|
+
harperLogger.trace('Running operation:', request.operation, 'for job', JOB_ID);
|
|
44
|
+
|
|
45
|
+
// Run the job operation.
|
|
46
|
+
const results = await operation.job_operation_function(request);
|
|
47
|
+
harperLogger.trace('Result from job:', JOB_ID, results);
|
|
48
|
+
|
|
49
|
+
jobObj.status = hdbTerms.JOB_STATUS_ENUM.COMPLETE;
|
|
50
|
+
if (typeof results === 'string') jobObj.message = results;
|
|
51
|
+
else {
|
|
52
|
+
jobObj.result = results;
|
|
53
|
+
jobObj.message = 'Successfully completed job: ' + JOB_ID;
|
|
54
|
+
}
|
|
55
|
+
jobObj.end_datetime = moment().valueOf();
|
|
56
|
+
harperLogger.notify('Successfully completed job:', JOB_ID);
|
|
57
|
+
} catch (err) {
|
|
58
|
+
exitCode = 1;
|
|
59
|
+
harperLogger.error(err);
|
|
60
|
+
jobObj.status = hdbTerms.JOB_STATUS_ENUM.ERROR;
|
|
61
|
+
jobObj.message = err.message ? err.message : err;
|
|
62
|
+
jobObj.end_datetime = moment().valueOf();
|
|
63
|
+
} finally {
|
|
64
|
+
await jobs.updateJob(jobObj);
|
|
65
|
+
setTimeout(() => {
|
|
66
|
+
process.exit(exitCode);
|
|
67
|
+
}, 3000).unref();
|
|
68
|
+
}
|
|
69
|
+
})();
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const { join } = require('node:path');
|
|
4
|
+
|
|
5
|
+
const hdbUtil = require('../../utility/common_utils.js');
|
|
6
|
+
const hdbTerms = require('../../utility/hdbTerms.ts');
|
|
7
|
+
const moment = require('moment');
|
|
8
|
+
const bulkLoad = require('../../dataLayer/bulkLoad.js');
|
|
9
|
+
const log = require('../../utility/logging/harper_logger.js');
|
|
10
|
+
const jobs = require('./jobs.js');
|
|
11
|
+
const hdbExport = require('../../dataLayer/export.js');
|
|
12
|
+
const hdbDelete = require('../../dataLayer/delete.js');
|
|
13
|
+
const threadsStart = require('../threads/manageThreads.js');
|
|
14
|
+
const transactionLog = require('../../utility/logging/transactionLog.js');
|
|
15
|
+
const restart = require('../../bin/restart.js');
|
|
16
|
+
const { parentPort, isMainThread } = require('worker_threads');
|
|
17
|
+
const { onMessageByType } = require('../threads/manageThreads.js');
|
|
18
|
+
|
|
19
|
+
class RunnerMessage {
|
|
20
|
+
constructor(jobObject, messageJson) {
|
|
21
|
+
this.job = jobObject;
|
|
22
|
+
this.json = messageJson;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Parses a RunnerMessage and runs the specified job.
|
|
28
|
+
* @param runnerMessage
|
|
29
|
+
* @throws Error
|
|
30
|
+
*/
|
|
31
|
+
async function parseMessage(runnerMessage) {
|
|
32
|
+
if (!runnerMessage || Object.keys(runnerMessage).length === 0) {
|
|
33
|
+
throw new Error('Empty runner passed to parseMessage');
|
|
34
|
+
}
|
|
35
|
+
if (!runnerMessage.json || Object.keys(runnerMessage.json).length === 0) {
|
|
36
|
+
throw new Error('Empty JSON passed to parseMessage');
|
|
37
|
+
}
|
|
38
|
+
if (!runnerMessage.job || Object.keys(runnerMessage.job).length === 0) {
|
|
39
|
+
throw new Error('Empty job passed to parseMessage');
|
|
40
|
+
}
|
|
41
|
+
if (hdbUtil.isEmptyOrZeroLength(runnerMessage.json.operation)) {
|
|
42
|
+
throw new Error('Invalid operation');
|
|
43
|
+
}
|
|
44
|
+
if (hdbUtil.isEmptyOrZeroLength(runnerMessage.job.id)) {
|
|
45
|
+
throw new Error('Empty job id specified');
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
switch (runnerMessage.json.operation) {
|
|
49
|
+
case hdbTerms.JOB_TYPE_ENUM.csv_file_load:
|
|
50
|
+
await runJob(runnerMessage, bulkLoad.csvFileLoad);
|
|
51
|
+
break;
|
|
52
|
+
case hdbTerms.JOB_TYPE_ENUM.csv_url_load:
|
|
53
|
+
await runJob(runnerMessage, bulkLoad.csvURLLoad);
|
|
54
|
+
break;
|
|
55
|
+
case hdbTerms.JOB_TYPE_ENUM.csv_data_load:
|
|
56
|
+
await runJob(runnerMessage, bulkLoad.csvDataLoad);
|
|
57
|
+
break;
|
|
58
|
+
case hdbTerms.JOB_TYPE_ENUM.import_from_s3:
|
|
59
|
+
await runJob(runnerMessage, bulkLoad.importFromS3);
|
|
60
|
+
break;
|
|
61
|
+
case hdbTerms.JOB_TYPE_ENUM.empty_trash:
|
|
62
|
+
break;
|
|
63
|
+
case hdbTerms.JOB_TYPE_ENUM.export_local:
|
|
64
|
+
await runJob(runnerMessage, hdbExport.export_local);
|
|
65
|
+
break;
|
|
66
|
+
case hdbTerms.JOB_TYPE_ENUM.export_to_s3:
|
|
67
|
+
await runJob(runnerMessage, hdbExport.export_to_s3);
|
|
68
|
+
break;
|
|
69
|
+
case hdbTerms.JOB_TYPE_ENUM.delete_files_before:
|
|
70
|
+
case hdbTerms.JOB_TYPE_ENUM.delete_records_before:
|
|
71
|
+
await runJob(runnerMessage, hdbDelete.deleteFilesBefore);
|
|
72
|
+
break;
|
|
73
|
+
case hdbTerms.JOB_TYPE_ENUM.delete_audit_logs_before:
|
|
74
|
+
await runJob(runnerMessage, hdbDelete.deleteAuditLogsBefore);
|
|
75
|
+
break;
|
|
76
|
+
case hdbTerms.JOB_TYPE_ENUM.delete_transaction_logs_before:
|
|
77
|
+
await runJob(runnerMessage, transactionLog.deleteTransactionLogsBefore);
|
|
78
|
+
break;
|
|
79
|
+
case hdbTerms.JOB_TYPE_ENUM.restart_service:
|
|
80
|
+
await runJob(runnerMessage, restart.restartService);
|
|
81
|
+
return `Restarting ${runnerMessage.json.service}`;
|
|
82
|
+
break;
|
|
83
|
+
default:
|
|
84
|
+
return `Invalid operation ${runnerMessage.json.operation} specified`;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Helper function to run the specified operation using the job update 'workflow'.
|
|
90
|
+
* @param runnerMessage - The RunnerMessage created by the signal flow
|
|
91
|
+
* @param operation - The operation to run.
|
|
92
|
+
*/
|
|
93
|
+
async function runJob(runnerMessage, operation) {
|
|
94
|
+
try {
|
|
95
|
+
runnerMessage.job.status = hdbTerms.JOB_STATUS_ENUM.IN_PROGRESS;
|
|
96
|
+
runnerMessage.job.start_datetime = moment().valueOf();
|
|
97
|
+
// Update with "IN PROGRESS"
|
|
98
|
+
await jobs.updateJob(runnerMessage.job);
|
|
99
|
+
// Run the operation.
|
|
100
|
+
await launchJobThread(runnerMessage.job.id);
|
|
101
|
+
} catch (e) {
|
|
102
|
+
let errMessage = e.message !== undefined ? e.message : e;
|
|
103
|
+
if (typeof errMessage === 'string') {
|
|
104
|
+
errMessage = `There was an error running ${operation.name} job with id ${runnerMessage.job.id} - ${errMessage}`;
|
|
105
|
+
e.message = errMessage;
|
|
106
|
+
} else {
|
|
107
|
+
//This ensures that the op/job id error is logged if the error message is passed as a non-string which will
|
|
108
|
+
// be logged right after this below. If the message is a string, everything will be logged below as the errMessage
|
|
109
|
+
log.error(`There was an error running ${operation.name} job with id ${runnerMessage.job.id}`);
|
|
110
|
+
}
|
|
111
|
+
log.error(errMessage);
|
|
112
|
+
runnerMessage.job.message = errMessage;
|
|
113
|
+
runnerMessage.job.status = hdbTerms.JOB_STATUS_ENUM.ERROR;
|
|
114
|
+
try {
|
|
115
|
+
// Update with "Error"
|
|
116
|
+
await jobs.updateJob(runnerMessage.job);
|
|
117
|
+
} catch (ex) {
|
|
118
|
+
log.error(`Unable to update job with id ${runnerMessage.job.id}`);
|
|
119
|
+
throw ex;
|
|
120
|
+
}
|
|
121
|
+
throw e;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Launches job in a separate process using processManagement
|
|
127
|
+
* @param job_id
|
|
128
|
+
* @returns {Promise<void>}
|
|
129
|
+
*/
|
|
130
|
+
async function launchJobThread(job_id) {
|
|
131
|
+
log.trace('launching job thread:', job_id);
|
|
132
|
+
if (isMainThread) {
|
|
133
|
+
threadsStart.startWorker(join(__dirname, './jobProcess.js'), {
|
|
134
|
+
autoRestart: false,
|
|
135
|
+
name: 'job',
|
|
136
|
+
env: { ...process.env, [hdbTerms.PROCESS_NAME_ENV_PROP]: `JOB-${job_id}` },
|
|
137
|
+
});
|
|
138
|
+
} else {
|
|
139
|
+
parentPort.postMessage({
|
|
140
|
+
type: hdbTerms.ITC_EVENT_TYPES.START_JOB,
|
|
141
|
+
jobId: job_id,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (isMainThread) {
|
|
146
|
+
onMessageByType(hdbTerms.ITC_EVENT_TYPES.START_JOB, async (message) => {
|
|
147
|
+
try {
|
|
148
|
+
threadsStart.startWorker(join(__dirname, './jobProcess.js'), {
|
|
149
|
+
autoRestart: false,
|
|
150
|
+
name: 'job',
|
|
151
|
+
env: { ...process.env, [hdbTerms.PROCESS_NAME_ENV_PROP]: `JOB-${message.jobId}` },
|
|
152
|
+
});
|
|
153
|
+
} catch (e) {
|
|
154
|
+
log.error(e);
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
module.exports = {
|
|
160
|
+
parseMessage,
|
|
161
|
+
RunnerMessage,
|
|
162
|
+
};
|