abdullah alamoudi has posted comments on this change.

Change subject: Add Asterix Extension Manager
......................................................................


Patch Set 6:

(36 comments)

https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/base/AbstractLangExtension.java
File 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/base/AbstractLangExtension.java:

Line 25: public abstract class AbstractLangExtension implements IExtension {
> Should we make this an interface? There's not much shared functionality her
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IAccessMethod.java
File 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/optimizer/rules/am/IAccessMethod.java:

Line 40: public interface IAccessMethod extends Comparable<IAccessMethod> {
> Can we revert the file?
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/servlet/ConnectorAPIServlet.java
File 
asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/servlet/ConnectorAPIServlet.java:

Line 22: import static 
org.apache.asterix.api.http.servlet.ServletConstants.HYRACKS_CONNECTION_ATTR;
> Can we revert this file?
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/cc/AbstractQueryTranslatorExtension.java
File 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/cc/AbstractQueryTranslatorExtension.java:

Line 24: public abstract class AbstractQueryTranslatorExtension implements 
IExtension {
> Should we make this an interface? There's not much shared functionality her
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/cc/AbstractStatementHandler.java
File 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/cc/AbstractStatementHandler.java:

Line 33:     public abstract void handle(AqlMetadataProvider metadataProvider, 
IExtensionStatement extensionStatement,
> The metadata provider should really not contain AQL - but that's not for th
Totally agree. I think it should be made a change by itself since it will touch 
so many files.


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/cc/CCExtensionManager.java
File 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/cc/CCExtensionManager.java:

Line 52:      * @param extensions
> That's not the name of the parameter ...
Done


Line 68:                     throw new IllegalArgumentException("Two Extensions 
share the same Id " + extension.getId());
> I think that we don't need to throw RuntimeExceptions in this constructor.
Done


Line 111:             IHyracksClientConnection hcc) throws HyracksDataException 
{
> It seems that we could just add a "handle" or "process" method to the IExte
I think that's a terrific idea. Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/AsterixNCAppRuntimeContext.java
File 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/nc/AsterixNCAppRuntimeContext.java:

Line 141:         this.metadataRmiPort = metadataRmiPort;
> We should leave this wehre it was - that's closer to the declaration order.
Sure. I just moved it up there since it is a simple address assignment


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/DefaultQueryTranslatorFactory.java
File 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/DefaultQueryTranslatorFactory.java:

Line 30:     private final CCExtensionManager ccExtensionManager;
> Should this be an ICCExtensionManager, if we have that interface? Or should
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/IQueryTranslator.java
File 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/IQueryTranslator.java:

Line 26: public interface IQueryTranslator {
> This should really be an IStatementExecutor ...
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/IQueryTranslatorFactory.java
File 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/IQueryTranslatorFactory.java:

Line 31:             ILangCompilationProvider compliationProvider);
> s/compliationProvider/compilationProvider/
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
File 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java:

Line 225:     protected final CCExtensionManager ccExtensionManager;
> Should this be an ICCExtensionManager, if we have that interface? Or should
I think this should be a concrete class


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-app/src/main/java/org/apache/asterix/file/DatasetOperations.java
File 
asterixdb/asterix-app/src/main/java/org/apache/asterix/file/DatasetOperations.java:

Line 96:                 
MetadataManager.INSTANCE.getDataverse(metadataProvider.getMetadataTxnContext(), 
dataverseName);
> Can we revert this file?
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-app/src/main/java/org/apache/asterix/file/DataverseOperations.java
File 
asterixdb/asterix-app/src/main/java/org/apache/asterix/file/DataverseOperations.java:

Line 34:                 
metadata.splitProviderAndPartitionConstraintsForDataverse(dataverse.getDataverseName());
> Can we revert this file?
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java
File 
asterixdb/asterix-app/src/main/java/org/apache/asterix/hyracks/bootstrap/CCApplicationEntryPoint.java:

Line 81:     protected CCExtensionManager ccExtensionManager;
> Should this be an ICCExtensionManager, if we have that interface? Or should
I think let's keep it for now and then decide later if we want to change it?


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-app/src/main/java/org/apache/asterix/result/ResultUtils.java
File 
asterixdb/asterix-app/src/main/java/org/apache/asterix/result/ResultUtils.java:

Line 27: import java.util.HashMap;
> Can we revert this file?
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-app/src/main/java/org/apache/asterix/util/FlushDatasetUtils.java
File 
asterixdb/asterix-app/src/main/java/org/apache/asterix/util/FlushDatasetUtils.java:

Line 47:             throws Exception {
> Can we revert this file?
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-app/src/test/java/org/apache/asterix/api/http/servlet/ConnectorAPIServletTest.java
File 
asterixdb/asterix-app/src/test/java/org/apache/asterix/api/http/servlet/ConnectorAPIServletTest.java:

Line 100:                 new JSONTokener(new InputStreamReader(new 
ByteArrayInputStream(outputStream.toByteArray())));
> Can we revert this file?
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IDataSourceAdapter.java
File 
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IDataSourceAdapter.java:

Line 19: package org.apache.asterix.common.api;
> Why does this need to move to common? Isn't external the right package?
this was moved when I was trying to do the extensions the wrong way. It should 
be moved back.

Done.


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IExtension.java
File 
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IExtension.java:

Line 27:     enum ExtensionPoint {
> Maybe call this "ExtensionKind"?
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IMetadataEntity.java
File 
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/api/IMetadataEntity.java:

Line 24: public interface IMetadataEntity extends Serializable {
> Why does this need to move to common? Isn't metadata the right package?
I moved it here for two reasons.
1. ExternalFile is a metadata entity that lives in external data which comes 
before metadata.
2. not all of the metadata types implements the addToCache and removeFromCache.

P.S we need to revisit metadata again one more time


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/AsterixExtensionProperties.java
File 
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/config/AsterixExtensionProperties.java:

Line 29:     public Extensions getExtensions() {
> It would be nice if this JAXB-generated class would not spill outside the p
Not sure I follow. Do you mean that getExtensions should produce a non JAXB 
generated class?


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-common/src/main/resources/schema/asterix-conf.xsd
File asterixdb/asterix-common/src/main/resources/schema/asterix-conf.xsd:

Line 114: <xs:element name="extensions">
> The indentation seems wrong. However, the bigger question is, if we need th
Let's discuss?


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AqlQueryRewriter.java
File 
asterixdb/asterix-lang-aql/src/main/java/org/apache/asterix/lang/aql/rewrites/AqlQueryRewriter.java:

Line 115:             AQLInlineUdfsVisitor visitor =
> Can we revert this file?
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java
File 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/MetadataNode.java:

Line 1658:         ExtensionMetadataIndex<T> index = 
(ExtensionMetadataIndex<T>) extensionIndexes.get(entity.getIndexId());
> Should these three function be next to the other three for readability?
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/AbstractMetadataExtension.java
File 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/api/AbstractMetadataExtension.java:

Line 28: public abstract class AbstractMetadataExtension implements IExtension {
> Should we make this an interface? There's not much shared functionality her
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataIndex.java
File 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataIndex.java:

Line 89:             throw new IllegalArgumentException("Unequal number of key 
types and names given.");
> Why are unchecked exceptions better here? I think that we talked about this
Here is my reasoning for this. This constructor is ONLY being called during the 
system initialization to create some static members. If we change them to 
checked exceptions, then we can't call the constructor in the static member 
declaration.

However, with unchecked exception, we can and we ensure that static members are 
final and initialized correctly.


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataIndexImmutableProperties.java
File 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataIndexImmutableProperties.java:

Line 27:     public static final int 
FIRST_AVAILABLE_EXTENSION_METADATA_DATASET_ID = 52;
> Good question. What's special about 52?
It is a power of 2 :)

I think we should agree on a range that is reserved for extension datasets. 
then an extension shouldn't select its own dataset Id but rather request a 
dataset Id. 

However, I think we should do that in a subsequent change.


Line 27:     public static final int 
FIRST_AVAILABLE_EXTENSION_METADATA_DATASET_ID = 52;
> We should at least go with the prime number, 53 :)
We can use
(2^74,207,281) − 1
aka largest known prime number ;)


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataPrimaryIndexes.java
File 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/bootstrap/MetadataPrimaryIndexes.java:

Line 24: import org.apache.asterix.common.config.MetadataConstants;
> Couldn't we have the MetadataConstants in the metadata project?
I think that we should. let me see if that is feasible.


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DatasetDataSource.java
File 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/DatasetDataSource.java:

Line 38:             throws AlgebricksException {
> Can we revert this file?
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/InternalDatasetDetails.java
File 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/entities/InternalDatasetDetails.java:

Line 158:                 
AqlSerializerDeserializerProvider.INSTANCE.getSerializerDeserializer(BuiltinType.ABOOLEAN);
> Can we revert this file?
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/functions/ExternalFunctionCompilerUtil.java
File 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/functions/ExternalFunctionCompilerUtil.java:

Line 74:         FunctionIdentifier fid =
> Can we revert this file?
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SplitsAndConstraintsUtil.java
File 
asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/utils/SplitsAndConstraintsUtil.java:

Line 49:                     
AsterixClusterProperties.INSTANCE.getNodePartitionsCount(clusterPartition[j].getNodeId());
> Can we revert this file?
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/6/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/util/AsterixAppContextInfo.java
File 
asterixdb/asterix-om/src/main/java/org/apache/asterix/om/util/AsterixAppContextInfo.java:

Line 68:     private ICCExtensionManager extensionManager; 
> Yes!
Done


-- 
To view, visit https://asterix-gerrit.ics.uci.edu/1017
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I280268495cc3aad00f898cba21f7299f7120ce5c
Gerrit-PatchSet: 6
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: abdullah alamoudi <bamou...@gmail.com>
Gerrit-Reviewer: Jenkins <jenk...@fulliautomatix.ics.uci.edu>
Gerrit-Reviewer: Michael Blow <mb...@apache.org>
Gerrit-Reviewer: Steven Jacobs <sjaco...@ucr.edu>
Gerrit-Reviewer: Till Westmann <ti...@apache.org>
Gerrit-Reviewer: Yingyi Bu <buyin...@gmail.com>
Gerrit-Reviewer: abdullah alamoudi <bamou...@gmail.com>
Gerrit-HasComments: Yes

Reply via email to