>From Michael Blow <[email protected]>: Michael Blow has submitted this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18233 )
Change subject: [NO ISSUE][*DB] Minor cleanup / refactoring ...................................................................... [NO ISSUE][*DB] Minor cleanup / refactoring Change-Id: I4b314e50314c845dd502c3747d469d866671e4c7 Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18233 Integration-Tests: Jenkins <[email protected]> Reviewed-by: Ali Alsuliman <[email protected]> Tested-by: Michael Blow <[email protected]> --- M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IExtension.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java M asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCExtensionManager.java M hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/IOManager.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplication.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/app/cc/CCExtensionManager.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/NCApplication.java M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/IMetadataLockUtil.java M asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataExtension.java M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/MetadataLockUtil.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/ExtensionUtil.java M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java 14 files changed, 64 insertions(+), 47 deletions(-) Approvals: Ali Alsuliman: Looks good to me, approved Michael Blow: Verified Jenkins: Verified diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/cc/CCExtensionManager.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/cc/CCExtensionManager.java index f2c282b..397836b 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/cc/CCExtensionManager.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/cc/CCExtensionManager.java @@ -68,15 +68,16 @@ /** * Initialize {@link org.apache.asterix.app.cc.CCExtensionManager} from configuration * - * @param list - * a list of extensions + * @param list a list of extensions * @param namespaceResolver + * @param ccServiceCtx * @throws InstantiationException * @throws IllegalAccessException * @throws ClassNotFoundException * @throws HyracksDataException */ - public CCExtensionManager(List<AsterixExtension> list, INamespaceResolver namespaceResolver) + public CCExtensionManager(List<AsterixExtension> list, INamespaceResolver namespaceResolver, + ICCServiceContext ccServiceCtx) throws InstantiationException, IllegalAccessException, ClassNotFoundException, HyracksDataException { Pair<ExtensionId, ILangCompilationProvider> sqlppcp = null; Pair<ExtensionId, IFunctionManager> fm = null; @@ -87,7 +88,7 @@ Set<ExtensionId> extensionIds = new HashSet<>(); for (AsterixExtension extensionConf : list) { IExtension extension = (IExtension) Class.forName(extensionConf.getClassName()).newInstance(); - extension.configure(extensionConf.getArgs()); + extension.configure(extensionConf.getArgs(), ccServiceCtx); if (!extensionIds.add(extension.getId())) { throw new RuntimeDataException(ErrorCode.EXTENSION_ID_CONFLICT, extension.getId()); } diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCExtensionManager.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCExtensionManager.java index 339b8d7..37c7bad 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCExtensionManager.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/NCExtensionManager.java @@ -53,18 +53,15 @@ /** * Initialize {@code CCExtensionManager} from configuration * - * @param list - * list of user configured extensions - * @throws InstantiationException - * if an extension couldn't be created - * @throws IllegalAccessException - * if user doesn't have enough acess priveleges - * @throws ClassNotFoundException - * if a class was not found - * @throws HyracksDataException - * if two extensions conlict with each other + * @param list list of user configured extensions + * @param ncServiceCtx + * @throws InstantiationException if an extension couldn't be created + * @throws IllegalAccessException if user doesn't have enough acess priveleges + * @throws ClassNotFoundException if a class was not found + * @throws HyracksDataException if two extensions conlict with each other */ - public NCExtensionManager(List<AsterixExtension> list, boolean usingDatabase, INamespaceResolver namespaceResolver) + public NCExtensionManager(List<AsterixExtension> list, boolean usingDatabase, INamespaceResolver namespaceResolver, + INCServiceContext ncServiceCtx) throws InstantiationException, IllegalAccessException, ClassNotFoundException, HyracksDataException { Pair<ExtensionId, ILangCompilationProvider> sqlppcp = null; IMetadataExtension tupleTranslatorProviderExtension = null; @@ -73,7 +70,7 @@ if (list != null) { for (AsterixExtension extensionConf : list) { IExtension extension = (IExtension) Class.forName(extensionConf.getClassName()).newInstance(); - extension.configure(extensionConf.getArgs()); + extension.configure(extensionConf.getArgs(), ncServiceCtx); switch (extension.getExtensionKind()) { case LANG: ILangExtension le = (ILangExtension) extension; @@ -85,7 +82,7 @@ mdExtensions.add(mde); //TODO(DB) clean up tupleTranslatorProviderExtension = ExtensionUtil.extendTupleTranslatorProvider( - tupleTranslatorProviderExtension, mde, mdIndexesProvider); + tupleTranslatorProviderExtension, mde, mdIndexesProvider, ncServiceCtx); break; default: break; @@ -99,8 +96,8 @@ this.tupleTranslatorProvider = new MetadataTupleTranslatorProvider(metadataIndexesProvider); } else { this.metadataIndexesProvider = tupleTranslatorProviderExtension.getMetadataIndexesProvider(usingDatabase); - this.tupleTranslatorProvider = - tupleTranslatorProviderExtension.getMetadataTupleTranslatorProvider(metadataIndexesProvider); + this.tupleTranslatorProvider = tupleTranslatorProviderExtension + .getMetadataTupleTranslatorProvider(metadataIndexesProvider, ncServiceCtx); } } diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java index e72ab54..100e524 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java @@ -830,7 +830,7 @@ lockUtil.createDatasetBegin(lockManager, metadataProvider.getLocks(), databaseName, dataverseName, datasetName, itemTypeDatabase, itemTypeDataverseName, itemTypeName, itemTypeAnonymous, metaItemTypeDatabase, metaItemTypeDataverseName, metaItemTypeName, metaItemTypeAnonymous, nodegroupName, compactionPolicy, - defaultCompactionPolicy, dd.getDatasetType(), dd.getDatasetDetailsDecl()); + defaultCompactionPolicy, dd.getDatasetType(), dd.getDatasetDetailsDecl(), metadataProvider); try { doCreateDatasetStatement(metadataProvider, dd, stmtActiveNamespace, datasetName, itemTypeNamespace, itemTypeExpr, itemTypeName, metaItemTypeExpr, metaItemTypeNamespace, metaItemTypeName, hcc, @@ -998,7 +998,7 @@ ExternalDataUtils.validate(properties); ExternalDataUtils.validateType(properties, (ARecordType) itemType); validateExternalDatasetProperties(externalDetails, properties, dd.getSourceLocation(), mdTxnCtx, - appCtx); + appCtx, metadataProvider); datasetDetails = new ExternalDatasetDetails(externalDetails.getAdapter(), properties, new Date(), TransactionState.COMMIT); break; @@ -2763,7 +2763,7 @@ } lockUtil.createDatasetBegin(lockManager, metadataProvider.getLocks(), databaseName, dataverseName, viewName, itemTypeDatabaseName, viewItemTypeDataverseName, viewItemTypeName, viewItemTypeAnonymous, null, null, - null, false, null, null, true, DatasetType.VIEW, null); + null, false, null, null, true, DatasetType.VIEW, null, metadataProvider); try { doCreateView(metadataProvider, cvs, databaseName, dataverseName, viewName, itemTypeDatabaseName, viewItemTypeDataverseName, viewItemTypeName, stmtRewriter, requestParameters); @@ -3982,7 +3982,7 @@ ExternalDataUtils.normalize(properties); ExternalDataUtils.validate(properties); validateExternalDatasetProperties(externalDetails, properties, copyStmt.getSourceLocation(), mdTxnCtx, - appCtx); + appCtx, metadataProvider); CompiledCopyFromFileStatement cls = new CompiledCopyFromFileStatement(databaseName, dataverseName, copyStmt.getDatasetName(), itemType, externalDetails.getAdapter(), properties); cls.setSourceLocation(stmt.getSourceLocation()); @@ -5664,7 +5664,8 @@ protected void validateExternalDatasetProperties(ExternalDetailsDecl externalDetails, Map<String, String> properties, SourceLocation srcLoc, MetadataTransactionContext mdTxnCtx, - IApplicationContext appCtx) throws AlgebricksException, HyracksDataException { + IApplicationContext appCtx, MetadataProvider metadataProvider) + throws AlgebricksException, HyracksDataException { // Validate adapter specific properties String adapter = externalDetails.getAdapter(); Map<String, String> details = new HashMap<>(properties); diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplication.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplication.java index 7d3400b..64c16e9 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplication.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplication.java @@ -176,7 +176,7 @@ boolean useDatabaseResolution = cloudDeployment && isDbResolutionEnabled; INamespaceResolver namespaceResolver = new NamespaceResolver(useDatabaseResolution); INamespacePathResolver namespacePathResolver = new NamespacePathResolver(useDatabaseResolution); - ccExtensionManager = new CCExtensionManager(new ArrayList<>(getExtensions()), namespaceResolver); + ccExtensionManager = new CCExtensionManager(new ArrayList<>(getExtensions()), namespaceResolver, ccServiceCtx); IGlobalRecoveryManager globalRecoveryManager = createGlobalRecoveryManager(); final CCConfig ccConfig = controllerService.getCCConfig(); diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/NCApplication.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/NCApplication.java index 4acc039..fc22f45 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/NCApplication.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/NCApplication.java @@ -166,8 +166,8 @@ boolean useDatabaseResolution = cloudDeployment && isDbResolutionEnabled; NamespaceResolver namespaceResolver = new NamespaceResolver(useDatabaseResolution); NamespacePathResolver namespacePathResolver = new NamespacePathResolver(useDatabaseResolution); - ncExtensionManager = - new NCExtensionManager(new ArrayList<>(getExtensions()), cloudDeployment, namespaceResolver); + ncExtensionManager = new NCExtensionManager(new ArrayList<>(getExtensions()), cloudDeployment, + namespaceResolver, ncServiceCtx); runtimeContext = createNCApplicationContext(ncServiceCtx, ncExtensionManager, getPropertiesFactory(), namespaceResolver, namespacePathResolver); MetadataProperties metadataProperties = runtimeContext.getMetadataProperties(); diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/ExtensionUtil.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/ExtensionUtil.java index 4374f01..406a148 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/ExtensionUtil.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/utils/ExtensionUtil.java @@ -31,6 +31,7 @@ import org.apache.asterix.om.functions.IFunctionManager; import org.apache.asterix.translator.IStatementExecutorFactory; import org.apache.hyracks.algebricks.common.utils.Pair; +import org.apache.hyracks.api.application.INCServiceContext; /** * Provide util methods dealing with extensions @@ -108,22 +109,21 @@ /** * Validates no extension conflict and extends tuple translator provider * - * @param metadataExtension - * place holder for tuple translator provider extension - * @param mde - * user defined metadata extension + * @param metadataExtension place holder for tuple translator provider extension + * @param mde user defined metadata extension * @param metadataIndexesProvider + * @param ncServiceCtx * @return the metadata extension if the extension defines a metadata tuple translator, null otherwise - * @throws RuntimeDataException - * if an extension conflict was detected + * @throws RuntimeDataException if an extension conflict was detected */ public static IMetadataExtension extendTupleTranslatorProvider(IMetadataExtension metadataExtension, - IMetadataExtension mde, MetadataIndexesProvider metadataIndexesProvider) throws RuntimeDataException { + IMetadataExtension mde, MetadataIndexesProvider metadataIndexesProvider, INCServiceContext ncServiceCtx) + throws RuntimeDataException { if (metadataExtension != null) { throw new RuntimeDataException(ErrorCode.EXTENSION_COMPONENT_CONFLICT, metadataExtension.getId(), mde.getId(), IMetadataExtension.class.getSimpleName()); } - return mde.getMetadataTupleTranslatorProvider(metadataIndexesProvider) == null ? null : mde; + return mde.getMetadataTupleTranslatorProvider(metadataIndexesProvider, ncServiceCtx) == null ? null : mde; } /** diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IExtension.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IExtension.java index 7e9879a..8f342a4 100644 --- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IExtension.java +++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IExtension.java @@ -21,6 +21,7 @@ import java.util.List; import org.apache.hyracks.algebricks.common.utils.Pair; +import org.apache.hyracks.api.application.IServiceContext; /** * an interface for an extension that provides a mechanism to override system behaviour @@ -57,8 +58,9 @@ * This method is called on system boot * * @param args + * @param serviceCtx */ - void configure(List<Pair<String, String>> args); + void configure(List<Pair<String, String>> args, IServiceContext serviceCtx); /** * @return The extension point implemented by this extension diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/IMetadataLockUtil.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/IMetadataLockUtil.java index 795e40f..4cf938e 100644 --- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/IMetadataLockUtil.java +++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/metadata/IMetadataLockUtil.java @@ -22,6 +22,7 @@ import org.apache.asterix.common.api.IMetadataLockManager; import org.apache.asterix.common.config.DatasetConfig; import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException; +import org.apache.hyracks.algebricks.core.algebra.metadata.IMetadataProvider; import com.google.common.collect.ImmutableList; @@ -50,8 +51,8 @@ DataverseName itemTypeDataverseName, String itemTypeName, boolean itemTypeAnonymous, String metaItemTypeDatabase, DataverseName metaItemTypeDataverseName, String metaItemTypeName, boolean metaItemTypeAnonymous, String nodeGroupName, String compactionPolicyName, - boolean isDefaultCompactionPolicy, DatasetConfig.DatasetType datasetType, Object datasetDetails) - throws AlgebricksException; + boolean isDefaultCompactionPolicy, DatasetConfig.DatasetType datasetType, Object datasetDetails, + IMetadataProvider metadataProvider) throws AlgebricksException; void dropDatasetBegin(IMetadataLockManager lockManager, LockList locks, String database, DataverseName dataverseName, String datasetName) throws AlgebricksException; diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java index d56924f..fcdddd8 100644 --- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java +++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataConstants.java @@ -39,7 +39,7 @@ // used to specify the stream factory for an adapter that has a stream data source public static final String KEY_STREAM = "stream"; //TODO(DB): check adapter configuration - public static final String KEY_DATABASE_DATAVERSE = "dataset-database"; + public static final String KEY_DATASET_DATABASE = "dataset-database"; // used to specify the dataverse of the adapter public static final String KEY_DATASET_DATAVERSE = "dataset-dataverse"; // used to specify the socket addresses when reading data from sockets diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java index b02122d..3298759 100644 --- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java +++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/ExternalDataUtils.java @@ -212,7 +212,7 @@ } public static String getDatasetDatabase(Map<String, String> configuration) throws AsterixException { - return configuration.get(ExternalDataConstants.KEY_DATABASE_DATAVERSE); + return configuration.get(ExternalDataConstants.KEY_DATASET_DATABASE); } public static DataverseName getDatasetDataverse(Map<String, String> configuration) throws AsterixException { @@ -353,8 +353,8 @@ if (!configuration.containsKey(ExternalDataConstants.KEY_IS_FEED)) { configuration.put(ExternalDataConstants.KEY_IS_FEED, ExternalDataConstants.TRUE); } - configuration.computeIfAbsent(ExternalDataConstants.KEY_LOG_INGESTION_EVENTS, k -> ExternalDataConstants.TRUE); - configuration.put(ExternalDataConstants.KEY_DATABASE_DATAVERSE, databaseName); + configuration.putIfAbsent(ExternalDataConstants.KEY_LOG_INGESTION_EVENTS, ExternalDataConstants.TRUE); + configuration.put(ExternalDataConstants.KEY_DATASET_DATABASE, databaseName); configuration.put(ExternalDataConstants.KEY_DATASET_DATAVERSE, dataverseName.getCanonicalForm()); configuration.put(ExternalDataConstants.KEY_FEED_NAME, feedName); } diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataExtension.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataExtension.java index d9037cc..3f64ff7 100644 --- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataExtension.java +++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/IMetadataExtension.java @@ -46,7 +46,8 @@ * @return The tuple translator provider that must be used by the {@code IMetadataNode } to read and write core * {@code IMetadataEntity} objects */ - MetadataTupleTranslatorProvider getMetadataTupleTranslatorProvider(MetadataIndexesProvider metadataIndexesProvider); + MetadataTupleTranslatorProvider getMetadataTupleTranslatorProvider(MetadataIndexesProvider metadataIndexesProvider, + INCServiceContext ncServiceCtx); MetadataIndexesProvider getMetadataIndexesProvider(boolean usingDatabase); diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java index e0f44ea..0a73ec9 100644 --- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java +++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java @@ -975,7 +975,7 @@ Map<String, String> configuration, ARecordType itemType, IWarningCollector warningCollector, IExternalFilterEvaluatorFactory filterEvaluatorFactory) throws AlgebricksException { try { - configuration.put(ExternalDataConstants.KEY_DATABASE_DATAVERSE, dataset.getDatabaseName()); + configuration.put(ExternalDataConstants.KEY_DATASET_DATABASE, dataset.getDatabaseName()); configuration.put(ExternalDataConstants.KEY_DATASET_DATAVERSE, dataset.getDataverseName().getCanonicalForm()); return AdapterFactoryProvider.getAdapterFactory(getApplicationContext().getServiceContext(), adapterName, diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/MetadataLockUtil.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/MetadataLockUtil.java index 6f44f4c..0b649c4 100644 --- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/MetadataLockUtil.java +++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/MetadataLockUtil.java @@ -29,6 +29,7 @@ import org.apache.asterix.common.metadata.IMetadataLockUtil; import org.apache.asterix.common.metadata.LockList; import org.apache.hyracks.algebricks.common.exceptions.AlgebricksException; +import org.apache.hyracks.algebricks.core.algebra.metadata.IMetadataProvider; import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; @@ -68,8 +69,8 @@ DataverseName itemTypeDataverseName, String itemTypeName, boolean itemTypeAnonymous, String metaItemTypeDatabase, DataverseName metaItemTypeDataverseName, String metaItemTypeName, boolean metaItemTypeAnonymous, String nodeGroupName, String compactionPolicyName, - boolean isDefaultCompactionPolicy, DatasetConfig.DatasetType datasetType, Object datasetDetails) - throws AlgebricksException { + boolean isDefaultCompactionPolicy, DatasetConfig.DatasetType datasetType, Object datasetDetails, + IMetadataProvider metadataProvider) throws AlgebricksException { createDatasetBeginPre(lockMgr, locks, database, dataverseName, itemTypeDatabase, itemTypeDataverseName, itemTypeName, itemTypeAnonymous, metaItemTypeDatabase, metaItemTypeDataverseName, metaItemTypeName, metaItemTypeAnonymous, nodeGroupName, compactionPolicyName, isDefaultCompactionPolicy); diff --git a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/IOManager.java b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/IOManager.java index 25a67ff..b9f277a 100644 --- a/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/IOManager.java +++ b/hyracks-fullstack/hyracks/hyracks-control/hyracks-control-nc/src/main/java/org/apache/hyracks/control/nc/io/IOManager.java @@ -539,7 +539,7 @@ if (file.exists()) { delete(fileRef); } else { - FileUtils.createParentDirectories(file); + file.getParentFile().mkdirs(); } FileUtil.writeAndForce(file.toPath(), bytes); } catch (IOException e) { -- To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18233 To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Change-Id: I4b314e50314c845dd502c3747d469d866671e4c7 Gerrit-Change-Number: 18233 Gerrit-PatchSet: 4 Gerrit-Owner: Michael Blow <[email protected]> Gerrit-Reviewer: Ali Alsuliman <[email protected]> Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Michael Blow <[email protected]> Gerrit-Reviewer: Murtadha Hubail Gerrit-MessageType: merged
