[
https://issues.apache.org/jira/browse/GOBBLIN-1783?focusedWorklogId=844865&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-844865
]
ASF GitHub Bot logged work on GOBBLIN-1783:
-------------------------------------------
Author: ASF GitHub Bot
Created on: 10/Feb/23 19:47
Start Date: 10/Feb/23 19:47
Worklog Time Spent: 10m
Work Description: AndyJiang99 commented on code in PR #3640:
URL: https://github.com/apache/gobblin/pull/3640#discussion_r1103146215
##########
gobblin-runtime/src/main/java/org/apache/gobblin/runtime/spec_store/MysqlBaseSpecStore.java:
##########
@@ -84,6 +84,7 @@ public class MysqlBaseSpecStore extends InstrumentedSpecStore
{
private static final String GET_ALL_STATEMENT = "SELECT spec_uri, spec FROM
%s";
private static final String GET_ALL_URIS_STATEMENT = "SELECT spec_uri FROM
%s";
private static final String GET_ALL_URIS_WITH_TAG_STATEMENT = "SELECT
spec_uri FROM %s WHERE tag = ?";
+ private static final String GET_SPECS_BATCH_STATEMENT = "SELECT spec_uri,
spec FROM %s ORDER BY spec_uri ASC LIMIT ? OFFSET ?";
Review Comment:
It's possible that we can have two specs with the same spec_uri I believe.
We should keep the modified_time ordering part of the statement too so if there
are two specs with the same spec_uri so the ordering of the result from the
same query stays the same at all times
Issue Time Tracking
-------------------
Worklog Id: (was: 844865)
Time Spent: 0.5h (was: 20m)
> Initialize scheduler with batch gets instead of individual get per flow
> -----------------------------------------------------------------------
>
> Key: GOBBLIN-1783
> URL: https://issues.apache.org/jira/browse/GOBBLIN-1783
> Project: Apache Gobblin
> Issue Type: Bug
> Components: gobblin-service
> Reporter: Urmi Mustafi
> Assignee: Abhishek Tiwari
> Priority: Major
> Time Spent: 0.5h
> Remaining Estimate: 0h
>
> We seek to improve initialization time of the JobScheduler upon restart or
> new leadership change by batching the mysql queries to get flow specs.
> Instead of making 1 mysql get call for each flow execution id, which scales
> extremely poorly with number of flows, we should group them to reduce number
> of calls and downtime.
> This implementation adds two new functions to the SpecStore interface,
> getSortedSpecURIs and getBatchedSpecs, that we use to achieve the batching.
> Because these two functionalities are generic enough to be used in derived
> classes of the SpecStore we add them to the base class. Although this
> requires any child classes to implement these functions, it allows any
> consumer of the parent class SpecStore to use this functionality without
> caring about the specific implementation of the SpecStore used (as
> JobScheduler does). Additionally, the getBatchedSpecs requires an offset or
> starting point to obtain the batches from so the consumer has to do some book
> keeping of where in the paginated gets we are but this again separates the
> functionality from the use case of the consumer. the entirety of the flow
> catalog is too large to load into memory for the Scheduler, so we use this
> batch functionality.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)