[
https://issues.apache.org/jira/browse/RYA-246?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16140307#comment-16140307
]
ASF GitHub Bot commented on RYA-246:
------------------------------------
Github user ejwhite922 commented on a diff in the pull request:
https://github.com/apache/incubator-rya/pull/213#discussion_r135068468
--- Diff:
extras/rya.pcj.fluo/pcj.fluo.api/src/main/java/org/apache/rya/indexing/pcj/fluo/api/CreateFluoPcj.java
---
@@ -128,60 +131,92 @@ public CreateFluoPcj(final int spInsertBatchSize,
final int joinBatchSize) {
/**
* Tells the Fluo PCJ Updater application to maintain a new PCJ. This
method
* creates the FluoQuery (metadata) inside of Fluo so that results can
be incrementally generated
- * inside of Fluo. This method assumes that the user will export the
results to Kafka or
- * some other external resource. The export id is equivalent to the
queryId that is returned,
- * which is in contrast to the other createPcj methods in this class
which accept an external pcjId
- * that is used to identify the Accumulo table or Kafka topic for
exporting results.
+ * inside of Fluo. This method assumes that the user will export the
results to Kafka
+ * according to the Kafka {@link ExportStrategy}.
*
* @param sparql - sparql query String to be registered with Fluo
+ * @param strategies - ExportStrategies used to specify how final
results will be handled
* @param fluo - A connection to the Fluo application that updates the
PCJ index. (not null)
* @return The metadata that was written to the Fluo application for
the PCJ.
* @throws MalformedQueryException The SPARQL query stored for the
{@code pcjId} is malformed.
+ * @throws UnsupportedQueryException
* @throws PcjException The PCJ Metadata for {@code pcjId} could not
be read from {@code pcjStorage}.
*/
- public FluoQuery createPcj(String sparql, FluoClient fluo) throws
MalformedQueryException {
+ public FluoQuery createPcj(String sparql, FluoClient fluo) throws
MalformedQueryException, UnsupportedQueryException {
Preconditions.checkNotNull(sparql);
Preconditions.checkNotNull(fluo);
- String pcjId = UUID.randomUUID().toString().replaceAll("-", "");
- return createPcj(pcjId, sparql, fluo);
+ String pcjId = FluoQueryUtils.createNewPcjId();
+ return createPcj(pcjId, sparql,
Sets.newHashSet(ExportStrategy.Kafka), fluo);
}
/**
* Tells the Fluo PCJ Updater application to maintain a new PCJ. This
method provides
* no guarantees that a PCJ with the given pcjId exists outside of
Fluo. This method merely
- * creates the FluoQuery (metadata) inside of Fluo so that results and
be incrementally generated
- * inside of Fluo. This method assumes that the user will export the
results to Kafka or
- * some other external resource.
+ * creates the FluoQuery (metadata) inside of Fluo so that results can
be incrementally generated
+ * inside of Fluo. Results are exported according to the Set of
{@link ExportStrategy} enums. If
+ * the Rya ExportStrategy is specified, care should be taken to verify
that the PCJ table exists.
*
* @param pcjId - Identifies the PCJ that will be updated by the Fluo
app. (not null)
* @param sparql - sparql query String to be registered with Fluo
+ * @param strategy - ExportStrategies used to specify how final
results will be handled
* @param fluo - A connection to the Fluo application that updates the
PCJ index. (not null)
* @return The metadata that was written to the Fluo application for
the PCJ.
+ * @throws UnsupportedQueryException
* @throws PcjException The PCJ Metadata for {@code pcjId} could not
be read from {@code pcjStorage}.
*/
public FluoQuery createPcj(
--- End diff --
The @params don't match
> Separate Fluo query result exporters, Rya PCJ intermingled kafka triggers
> -------------------------------------------------------------------------
>
> Key: RYA-246
> URL: https://issues.apache.org/jira/browse/RYA-246
> Project: Rya
> Issue Type: Improvement
> Components: dao
> Environment: Fluo, Kafka, PCJ, Accumulo
> Reporter: David W. Lotts
> Assignee: Caleb Meier
> Fix For: 3.2.11
>
>
> Currently the Fluo query observer framework (FQF) has a great plugin-in-ish
> way of doing exports. (See field: {{exporters}} in class:
> {{org.apache.rya.indexing.pcj.fluo.app.observers.QueryResultObserver}} )
> Exports are query results and the action taken when they occur. Currently
> there are two. Despite this awesome framework, there are three
> interminglings that can become issues in a production system. Feel free to
> make sub tasks for each of these three tasks:
> 1. Create PCJ independently of alerts/triggers
> At query register time (with FQF), optionally create PCJ's and optionally
> create alerts (with Alerting) preferably atomically, so if it fails in the
> middle it does not leave dangling references and garbage -- currently there
> is one method that does everything: CreatePCJ.withRyaInteraction()
> 2. Enable exporters per query -- currently all queries will be exported on
> all globally enabled exporters. When the query is registered (with FQF)
> specify the exporters that should be used.
> 3. Separate export observer queues per exporter -- Currently retrying a
> failed export observer will re-export all export types, even if some already
> succeeded, causing duplicate triggers.
> Also there is a need to refine the terms for java identifiers (for example:
> fields, classes) and documentation. Please document here a decision about
> what we name different things. The term PCJ are the index tables used by Rya
> to optimize it's queries. But sometimes it is used to describe the whole
> Fluo framework. Please define a unique term for the following. The starred
> term will be used here, but feel free to rename them:
> - Rya query optimization PCJ (ex: the Blabla exporter) PCJ*
> - Kafka trigger alert notifier (ex: the Foofoo exporter) Alerting*
> - Fluo query observer framework (ex: results from the Barbar) FQF*
> Unique identifers:
> - FQF uses QueryID
> - Alerting uses TopicID
> - PCJ uses PcjId
> Note that currently TopicID is assigned the same as QueryID, but that badly
> presupposes queryID's cannot be grouped onto one Topic.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)