abdullah alamoudi has posted comments on this change.

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


Patch Set 13:

(49 comments)

https://asterix-gerrit.ics.uci.edu/#/c/1017/13/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/ActiveManager.java
File 
asterixdb/asterix-active/src/main/java/org/apache/asterix/active/ActiveManager.java:

Line 85:                 runtime.stop();
> We're stopping the runtime for every message delivery?
Done

@Steven, Agree. will add it when there is a use case for it.


Line 101:                 LOGGER.warn("Failed to stop runtime: " + runtimeId, 
e);
> Is a warning enough here? Will the system continue to work as before? Or ar
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/ActiveRuntimeManager.java
File 
asterixdb/asterix-active/src/main/java/org/apache/asterix/active/ActiveRuntimeManager.java:

Line 64:     public ActiveSourceOperatorNodePushable 
getFeedRuntime(ActiveRuntimeId runtimeId) {
> Method name seems wrong.
Done


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

Line 37:     public enum Language {
> Not sure that we should limit the languages with an enum, but it's good eno
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/extension/ExtensionFunctionIdentifier.java
File 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/algebra/extension/ExtensionFunctionIdentifier.java:

Line 27: public class ExtensionFunctionIdentifier extends FunctionIdentifier {
> It feels a little strange that we would need this. It would be nice if ever
Till, this was needed for the extension manager to know which extension should 
take care of compiling the function.


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

Line 23: import org.apache.asterix.lang.common.util.FunctionUtils;
> I think that the number of modified files will go down a bit if we remove t
Done


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

Line 154:     //TODO(amoudi/yingyi): refactor this to use a provider instead of 
passing the extensionManager
> I completely agree. Could you add JIRA issues for the big TODO's?
Already did :)


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

Line 794:                     
FunctionUtils.getFunctionInfo(AsterixBuiltinFunctions.AND), filterExpressions));
> Please remove the 's' :)
Done


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

Line 101:             } ;
> Don't need the space or the semicolon ..
Done


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

Line 112:             } ;
> remove space and semicolon
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/AqlExpressionToPlanTranslator.java
File 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/AqlExpressionToPlanTranslator.java:

Line 37: import org.apache.asterix.lang.common.util.FunctionUtils;
> Probably not needed at all ...
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/IStatementExecutor.java
File 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/IStatementExecutor.java:

Line 104:     JobSpecification rewriteCompileQuery(AqlMetadataProvider 
metadataProvider, Query query,
> It seems that this is a sub-functionality of statement execution. Probably 
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java
File 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/LangExpressionToPlanTranslator.java:

Line 534:             InsertDeleteUpsertOperator feedModificationOp;
> I'm a little confused about how this change relates to extensions
This is not extension related. It is generic change that is intended to replace 
the handle subscribe feed which will go away eventually.


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ResultPrinter.java
File 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ResultPrinter.java:

Line 19: package org.apache.asterix.translator;
> Why would the ResultReader be part of the translator package? It's also unc
You know the dependency story now :)

Done.


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ResultReader.java
File 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ResultReader.java:

Line 19: package org.apache.asterix.translator;
> Seems that the old package was better. Even though we currently have execut
You know the dependency story now :)

Done.


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ResultUtils.java
File 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ResultUtils.java:

Line 54:             .collect(Collectors.toMap(Map.Entry::getKey, 
Map.Entry::getValue)));
> Funky. Why is this better? (Just curious)
because we're getting rid of the static block?
Initialization is now tied with declaration.
This means that no one will attempt to access the HTML_ENTITIES before it is 
initialized.

Also, prevents anyone from modifying the list at a later point in time.


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ConstantExpressionUtils.java
File 
asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/util/ConstantExpressionUtils.java:

Line 34: public class ConstantExpressionUtils {
> This will clash with the ConstantExpressionUtil in https://asterix-gerrit.i
Done


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

Line 98:     private final CompilerExtensionManager ccExtensionManager;
> s/ccExtensionManager/cExtensionManager/?
Done


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

Line 42: import org.apache.log4j.Logger;
> All good except for the use of log4j (ASTERIXDB-1564) ...
Done


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

Line 67:         this.parserFactory = compilationProvider.getParserFactory(); 
> WS
Done


Line 217:             if (!(st.getAPI() == Statement.API.ALL || getAPI() == 
Statement.API.ALL || st.getAPI() == getAPI())) {
> That doesn't seem to make a lot of sense. Now the allowedStatements are usu
In order for the servlets to allow extension messages, we need the statement 
itself to identify itself as belonging to an API type.

I think that we should get rid of the allowed statements altogether.


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

Line 115:                     SqlppCompilationProvider.class.getSimpleName());
> Probably shouldn't be the SQL++ provider for any language.
Done


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

Line 46:      * 
> WS
Done


Line 97:      * 
> WS
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/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 384:                         // No op
> What is this for?
Historical reasons!


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/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())));
> revert file?
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/HDFSCluster.java
File 
asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/HDFSCluster.java:

Line 38:  * @author ramangrover29
> ws
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/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 55:      * @param property
> ws
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/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 {
> I'm not sure what these operations are (maybe we could comment on them) but
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/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">
> Indent?
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/asterixdb/asterix-common/src/main/resources/webui/errortemplate.html
File asterixdb/asterix-common/src/main/resources/webui/errortemplate.html:

Line 19: <div class="accordion" id="errorblock">
> Would be really nice if this were not part of asterix-common ...
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/asterixdb/asterix-common/src/main/resources/webui/static/js/smoothie.js
File asterixdb/asterix-common/src/main/resources/webui/static/js/smoothie.js:

Line 37:    *   resetBoundsInterval: 3000 
> But that's not our code ...
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/runtime/SubscribableRuntime.java
File 
asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/feed/runtime/SubscribableRuntime.java:

Line 46:     @Override
> ws
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/base/Statement.java
File 
asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/base/Statement.java:

Line 44:     public byte getAPI();
> This is very confusing:
Till, the only reason I have added this is to enable extension statements to go 
through existing servlets.

An alternative would be to treat all extension statements the same


Line 44:     public byte getAPI();
> This is very confusing:
But with this, I can add new statements and let them go through the existing 
servlets. Otherwise, I will have to create new servlets.


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
File asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj:

Line 2916:   | <COLLECTION : "collection">
> sqlpp is switching to dataset from table?
Yes. There were some discussions about this.


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/asterixdb/asterix-maven-plugins/asterix-grammar-extension-maven-plugin/src/test/resources/lang/extension.jj
File 
asterixdb/asterix-maven-plugins/asterix-grammar-extension-maven-plugin/src/test/resources/lang/extension.jj:

Line 11:  
> ws
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/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.");
> Is this something that can ever happen in a working system? 
Done


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

Line 232:             throws AlgebricksException;
> I'm not sure that this is the right abstraction. Clearly data seource and s
absolutely. This was just to enable extension data sources to have their own 
scan runtime implementation.


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

Line 26: public interface IMutationDataSource {
> What is a MutationDataSource?
A data source that produces values and operations<Deletes/Inserts/Updates>!!!


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

Line 37:     public static final byte UPSERT = 0x03;
> What are these constants? Can we explain them?
Done


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

Line 296:     public static void increaseCardinality(JobSpecification spec, 
FeedRuntimeType compute, int requiredCardinality,
> Method seems to be unused - but maybe we'll need it later?
if we need it later, we will dig it up.


Line 305:             int requiredCardinality, List<String> currentLocations) 
throws AsterixException {
> Method seems to be unused - but maybe we'll need it later?
if we need it later, we will dig it up.


Line 312:             throws AsterixException {
> Method seems to be unused - but maybe we'll need it later?
if we need it later, we will dig it up.


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AInt32.java
File asterixdb/asterix-om/src/main/java/org/apache/asterix/om/base/AInt32.java:

Line 26: import org.json.JSONObject;
> Revert the file?
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/job/listener/MultiTransactionJobEventListenerFactory.java
File 
asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/job/listener/MultiTransactionJobEventListenerFactory.java:

Line 34: public class MultiTransactionJobEventListenerFactory implements 
IJobletEventListenerFactory {
> Some comment what this class does?
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/ActivityId.java
File 
hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/ActivityId.java:

Line 52:     public void setOperatorDescriptorId(OperatorDescriptorId odId) {
> Do we really need to reset this? Or can we ensure that this is only set onc
All of this is to enable combining multiple jobs into one. We totally do need 
this unless we're willing to do any of the following:

1. make ActivityId a non-final member in 
AbstractSingleActivityOperatorDescriptor and mutate it.

2. create a clone function in the AbstractSingleActivityOperatorDescriptor 
which will take an activity id and create a clone with the new Activity Id. 
This will then either be implemented by all subclasses of 
AbstractSingleActivityOperatorDescriptor or we can create a wrapper for it.


let me know if I should try one of those.


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IConnectorDescriptor.java
File 
hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IConnectorDescriptor.java:

Line 147:     public ConnectorDescriptorId clone(IConnectorDescriptorRegistry 
registry);
> Why would the clone of an IConnectorDescriptor be a ConnectorDescriptorId?
Done


https://asterix-gerrit.ics.uci.edu/#/c/1017/13/hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOperatorDescriptor.java
File 
hyracks-fullstack/hyracks/hyracks-api/src/main/java/org/apache/hyracks/api/dataflow/IOperatorDescriptor.java:

Line 47:     void setOperatorId(OperatorDescriptorId id);
> Could we avoid resetting ids? When do we need that?
We need that when we combine multiple jobs. We can instead clone operator 
descriptors.


-- 
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: 13
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