René's URL Explorer Experiment


Title: Refactor Source & Job data model and Stop Duplicate Ingestion Jobs by woop · Pull Request #685 · feast-dev/feast · GitHub

Open Graph Title: Refactor Source & Job data model and Stop Duplicate Ingestion Jobs by woop · Pull Request #685 · feast-dev/feast

X Title: Refactor Source & Job data model and Stop Duplicate Ingestion Jobs by woop · Pull Request #685 · feast-dev/feast

Description: What this PR does / why we need it: 1. Generalise Source Model. The current Source model in Feast Core is Kafka specific. For all intents and purposes it is a hardcoded implementation of KafkaSource containing topics/brokers as top level fields, despite the naming being Source. Not generalizing the data model at this point (prior to the release of 0.5) will cause further problems down the road when new sources are introduced. This PR moves Source configuration into a config object and isolates Kafka specific logic to case statements. isDefault is retained for the time being as a top level field, since it can easily be phased out if needed. Configuration is stored in String format: Comparison between Source objects with .equals() no longer takes into the isDefault field. Under this model, identical Source objects (ie .equals()) can be stored as duplicate source Objects. Added de duplication code to JobCoordinatorService to take this into account. 2. Make Feast stop duplicate ingestion Jobs. Currently JobCoordinatorService does not stop duplicate jobs (ie ingestion jobs that ingest from the same exact source to store pairing.). Updates JobCoordinatorService to abort these extra ingestion Jobs when safe (ie only when JobCoordinatorService can find a running ingestion job for each Source to Store pairing). 3. Job Model Refactors Standardize & Updated JobManager API: startJob() is standardised as transitioning a Job from PENDING to RUNNING. abortJob() is standardised as transitioning a Job from RUNNING to ABORTING changed abortJob() to return Job and take a Job as args to be consistent with other methods. Refactored JobUpdateTask.call() to be easier to follow. Refactored JobCoordinatorService.poll() into multiple methods (ie getSourceToStoreMapping(), makeJobUpdateTasks()) to make code more readable. Updated Job to store source fields (ie type and config) as inline fields in the Job table. This is done to make the Job model more consistent why the ingestion Job it represents Modifying the Source that the Job model references does not reflect onto the underlying Ingestion Job. Hence source fields are copied onto Job to reflect this in the Job model. Which issue(s) this PR fixes: Fixes #632 Does this PR introduce a user-facing change?: The database schema for Source has been generalized. This is a breaking change and requires a migration. The database schema for Job has changed. The Job table stores no longer Sources by id, instead stores Source.config and Source.type as inline fields. Feast now stops duplicate Ingestion Jobs with the same source and store pairing.

Open Graph Description: What this PR does / why we need it: 1. Generalise Source Model. The current Source model in Feast Core is Kafka specific. For all intents and purposes it is a hardcoded implementation of KafkaSourc...

X Description: What this PR does / why we need it: 1. Generalise Source Model. The current Source model in Feast Core is Kafka specific. For all intents and purposes it is a hardcoded implementation of KafkaSourc...

Opengraph URL: https://github.com/feast-dev/feast/pull/685

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/checks(.:format)
route-controllerpull_requests
route-actionchecks
fetch-noncev2:d81711e3-13d1-df93-94cc-d31eeddb4f5d
current-catalog-service-hash87dc3bc62d9b466312751bfd5f889726f4f1337bdff4e8be7da7c93d6c00a25a
request-idC3F0:2CEC96:8D9EAC:BCB02B:697BF451
html-safe-noncea4078584e570dd7d353acdb1f49831e2f656e376f8e1f0b949f9771cfe5009a6
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDM0YwOjJDRUM5Njo4RDlFQUM6QkNCMDJCOjY5N0JGNDUxIiwidmlzaXRvcl9pZCI6Ijg1MDEzMjQyMjE1NDI4MjI5OTMiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmac3434ecddaf64fcfad46a0fad868a11b755257120364ee9f690b59cb53f526e51
hovercard-subject-tagpull_request:415065697
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,checks,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/checks
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/feast-dev/feast/pull/685/checks
twitter:imagehttps://avatars.githubusercontent.com/u/6728866?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/6728866?s=400&v=4
og:image:altWhat this PR does / why we need it: 1. Generalise Source Model. The current Source model in Feast Core is Kafka specific. For all intents and purposes it is a hardcoded implementation of KafkaSourc...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Noneda4f0ee56809799586f8ee546b27f94fe9b5893edfbf87732e82be45be013b52
turbo-cache-controlno-preview
go-importgithub.com/feast-dev/feast git https://github.com/feast-dev/feast.git
octolytics-dimension-user_id57027613
octolytics-dimension-user_loginfeast-dev
octolytics-dimension-repository_id161133770
octolytics-dimension-repository_nwofeast-dev/feast
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id161133770
octolytics-dimension-repository_network_root_nwofeast-dev/feast
turbo-body-classeslogged-out env-production page-responsive full-width full-width-p-0
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release847cd6771d7fb3caaa9384a1fe1215457fe1e4f4
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/feast-dev/feast/pull/685/checks#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Ffeast-dev%2Ffeast%2Fpull%2F685%2Fchecks
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub SparkBuild and deploy intelligent appshttps://github.com/features/spark
GitHub ModelsManage and compare promptshttps://github.com/features/models
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Ffeast-dev%2Ffeast%2Fpull%2F685%2Fchecks
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Fchecks&source=header-repo&source_repo=feast-dev%2Ffeast
Reloadhttps://github.com/feast-dev/feast/pull/685/checks
Reloadhttps://github.com/feast-dev/feast/pull/685/checks
Reloadhttps://github.com/feast-dev/feast/pull/685/checks
feast-dev https://github.com/feast-dev
feasthttps://github.com/feast-dev/feast
Notifications https://github.com/login?return_to=%2Ffeast-dev%2Ffeast
Fork 1.2k https://github.com/login?return_to=%2Ffeast-dev%2Ffeast
Star 6.7k https://github.com/login?return_to=%2Ffeast-dev%2Ffeast
Code https://github.com/feast-dev/feast
Issues 182 https://github.com/feast-dev/feast/issues
Pull requests 66 https://github.com/feast-dev/feast/pulls
Discussions https://github.com/feast-dev/feast/discussions
Actions https://github.com/feast-dev/feast/actions
Security 0 https://github.com/feast-dev/feast/security
Insights https://github.com/feast-dev/feast/pulse
Code https://github.com/feast-dev/feast
Issues https://github.com/feast-dev/feast/issues
Pull requests https://github.com/feast-dev/feast/pulls
Discussions https://github.com/feast-dev/feast/discussions
Actions https://github.com/feast-dev/feast/actions
Security https://github.com/feast-dev/feast/security
Insights https://github.com/feast-dev/feast/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Ffeast-dev%2Ffeast%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Ffeast-dev%2Ffeast%2Fissues%2Fnew%2Fchoose
feast-ci-bothttps://github.com/feast-ci-bot
feast-dev:masterhttps://github.com/feast-dev/feast/tree/master
woop:generalize-sourceshttps://github.com/woop/feast/tree/generalize-sources
Conversation 44 https://github.com/feast-dev/feast/pull/685
Commits 5 https://github.com/feast-dev/feast/pull/685/commits
Checks 0 https://github.com/feast-dev/feast/pull/685/checks
Files changed https://github.com/feast-dev/feast/pull/685/files
Please reload this pagehttps://github.com/feast-dev/feast/pull/685/checks
Please reload this pagehttps://github.com/feast-dev/feast/pull/685/checks
Refactor Source & Job data model and Stop Duplicate Ingestion Jobs https://github.com/feast-dev/feast/pull/685/checks#top
Please reload this pagehttps://github.com/feast-dev/feast/pull/685/checks
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.