-
Notifications
You must be signed in to change notification settings - Fork 744
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[GOBBLIN-1857] Add override flag to force generate a job execution id based on gobbl… #3719
[GOBBLIN-1857] Add override flag to force generate a job execution id based on gobbl… #3719
Conversation
…in cluster system time
Codecov Report
@@ Coverage Diff @@
## master #3719 +/- ##
============================================
+ Coverage 46.93% 49.44% +2.50%
+ Complexity 10808 9341 -1467
============================================
Files 2143 1761 -382
Lines 84545 68937 -15608
Branches 9390 7857 -1533
============================================
- Hits 39683 34086 -5597
+ Misses 41244 31688 -9556
+ Partials 3618 3163 -455
... and 388 files with indirect coverage changes 📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more |
@@ -180,6 +180,10 @@ public class GobblinClusterConfigurationKeys { | |||
public static final String CANCEL_RUNNING_JOB_ON_DELETE = GOBBLIN_CLUSTER_PREFIX + "job.cancelRunningJobOnDelete"; | |||
public static final String DEFAULT_CANCEL_RUNNING_JOB_ON_DELETE = "false"; | |||
|
|||
// Job Execution ID for Helix jobs is inferred from Flow Execution IDs, but there are scenarios in earlyStop jobs where | |||
// this behavior needs to be avoided due to concurrent planning and acutal jobs sharing the same execution ID |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
small typo actual
@@ -96,15 +96,17 @@ public HelixJobsMapping(Config sysConfig, URI fsUri, String rootDir) { | |||
} | |||
|
|||
public static String createPlanningJobId (Properties jobPlanningProps) { | |||
long planningJobId = PropertiesUtils.getPropAsBoolean(jobPlanningProps, GobblinClusterConfigurationKeys.USE_GENERATED_JOBEXECUTION_IDS, "false") ? | |||
System.currentTimeMillis() : PropertiesUtils.getPropAsLong(jobPlanningProps, ConfigurationKeys.FLOW_EXECUTION_ID_KEY, System.currentTimeMillis()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
in non-earlyStop scenarios is there an advantage to re-using the flow execution id for job id? Is this just for identifying the job more easily? In the early stop case is there a log line or something we can use to track the job id or how do we make the association?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The advantage is primarily for tracking, GobblinTrackingEvents have an execution ID in their metadata and it would work nicely if the execution ID also allowed the caller to identify the flow execution ID from it as well, lets the user perform cancel() etc.
Uhh for earlyStop maybe we can append something to the jobName but it'll be hacky, I feel like that feature should be redesigned in general to follow gobblin conventions better
* upstream/master: Fix bug with total count watermark whitelist (apache#3724) [GOBBLIN-1858] Fix logs relating to multi-active lease arbiter (apache#3720) [GOBBLIN-1838] Introduce total count based completion watermark (apache#3701) Correct num of failures (apache#3722) [GOBBLIN- 1856] Add flow trigger handler leasing metrics (apache#3717) [GOBBLIN-1857] Add override flag to force generate a job execution id based on gobbl… (apache#3719) [GOBBLIN-1855] Metadata writer tests do not work in isolation after upgrading to Iceberg 1.2.0 (apache#3718) Remove unused ORC writer code (apache#3710) [GOBBLIN-1853] Reduce # of Hive calls during schema related updates (apache#3716) [GOBBLIN-1851] Unit tests for MysqlMultiActiveLeaseArbiter with Single Participant (apache#3715) [GOBBLIN-1848] Add tags to dagmanager metrics for extensibility (apache#3712) [GOBBLIN-1849] Add Flow Group & Name to Job Config for Job Scheduler (apache#3713) [GOBBLIN-1841] Move disabling of current live instances to the GobblinClusterManager startup (apache#3708) [GOBBLIN-1840] Helix Job scheduler should not try to replace running workflow if within configured time (apache#3704) [GOBBLIN-1847] Exceptions in the JobLauncher should try to delete the existing workflow if it is launched (apache#3711) [GOBBLIN-1842] Add timers to GobblinMCEWriter (apache#3703) [GOBBLIN-1844] Ignore workflows marked for deletion when calculating container count (apache#3709) [GOBBLIN-1846] Validate Multi-active Scheduler with Logs (apache#3707) [GOBBLIN-1845] Changes parallelstream to stream in DatasetsFinderFilteringDecorator to avoid classloader issues in spark (apache#3706) [GOBBLIN-1843] Utility for detecting non optional unions should convert dataset urn to hive compatible format (apache#3705) [GOBBLIN-1837] Implement multi-active, non blocking for leader host (apache#3700) [GOBBLIN-1835]Upgrade Iceberg Version from 0.11.1 to 1.2.0 (apache#3697) Update CHANGELOG to reflect changes in 0.17.0 Reserving 0.18.0 version for next release [GOBBLIN-1836] Ensuring Task Reliability: Handling Job Cancellation and Graceful Exits for Error-Free Completion (apache#3699) [GOBBLIN-1805] Check watermark for the most recent hour for quiet topics (apache#3698) [GOBBLIN-1825]Hive retention job should fail if deleting underlying files fail (apache#3687) [GOBBLIN-1823] Improving Container Calculation and Allocation Methodology (apache#3692) [GOBBLIN-1830] Improving Container Transition Tracking in Streaming Data Ingestion (apache#3693) [GOBBLIN-1833]Emit Completeness watermark information in snapshotCommitEvent (apache#3696)
…in cluster system time
Dear Gobblin maintainers,
Please accept this PR. I understand that it will not be reviewed until I have checked off all the steps below!
JIRA
Description
Job Execution ID is automatically inferred from the flow execution ID if the job was orchestrated by Gobblin-as-a-Service. However, this can lead to bugs in conjunction with other job keys such as earlyStop, since it would create multiple planningJobs and job IDs sent to Helix. These jobs would then have the same execution ID which is rejected by Helix.
When the user sets a configuration
gobblin.cluster.job.useGeneratedJobExecutionIds
are set, we want to force the Gobblin cluster to default to creating the job execution ID from its timestamp. This may make the job harder to track but earlyStop jobs are already difficult to track due to having multiple submitted Helix jobsTests
Unit tests
Commits