[
https://issues.apache.org/jira/browse/HUDI-2475?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17447757#comment-17447757
]
Manoj Govindassamy commented on HUDI-2475:
------------------------------------------
h2. Test 1: Single Writer + InLine Clustering - Pass
* Setup
** Delta Streamer continuous mode
** InLine clustering
** Metadata table turned on
* Started with 0.9.0 version, had bunch of upserts along with inline
clustering
** Used CLI to do metadata listing
** Used spark shell to list records and count
* Later upgraded to 0.10.0 version, with the same single writer setup
** 0.10.0 bootstrapping kicked in, nuked the entire metadata table and
re-initialized it
** After the initial metadata bootstrap, upserts started to flow in
successfully
** Used spark shell to list records and count
h2. Test 2: Writer + Async Clustering - Fail
* Setup
** Writer 1 - Delta Streamer continuous mode
** Async clustering turned on
** Metadata table turned on
* Started with 0.9.0 version, had bunch of upserts along with async clustering
** Verified clustering, cleaning and upserts were successful at 0.9.0
** Shutdown the writers - Deltastreamer + along with its async clustering
** Timed the shutdown such a way that there was an inflight replace commit in
the timeline
* Later upgraded to 0.10.0
** With only the Single Writer - Delta Streamer Continuous mode
** Async clustering turned off
** Writer detected the previous metadata version, nuked it fully
** But, the follow on bootstrapping failed as it complained about the inflight
replace commit
** Upserts started flowing in successfully without the metadata table
* Finishing up the pending clustering
** Shutdown the Single Writer and brought up the Clustering Execution job to
let the inflight replace commit to complete
** This job detected the files part of the plan non-existing and so it failed
the clustering job
* Bring up the writer again
** Brought up the single writer again
** Bootstrapping failed as the inflight replace commit was still there
** upserts flowing in with no metadata table
> Rolling Upgrade downgrade story for 0.10 & enabling metadata
> ------------------------------------------------------------
>
> Key: HUDI-2475
> URL: https://issues.apache.org/jira/browse/HUDI-2475
> Project: Apache Hudi
> Issue Type: Sub-task
> Reporter: sivabalan narayanan
> Assignee: Manoj Govindassamy
> Priority: Blocker
> Fix For: 0.10.0
>
>
> Upgrade downgrade infra for enabling metadata.
>
> If user is having a writer process and clustering/compaction running async.
>
> - New synchronous metadata design, has a constraint that once metadata table
> is bootstrapped, all commits will happen synchronously. In other words, there
> is no catch up business wrt datatable.
> So, it may not be feasible to do rolling upgrade (i.e. upgrade writer first
> while async compaction is running) and then upgrade async compaction.
> Bootstrap has to be done by stopping all processes and then we can restart
> all other processes one by one (by using the upgraded hudi library) w/
> metadata enabled.
> This is the only viable option I can think of.
> 1. Stop all processes. Upgrade to hudi to a version w/ synchronous metadata.
> bring up one writer process w/ metadata config enabled. this will bootstrap
> the metadata table. and from there on, any new commits by the writer will do
> synchronous updates to metadata.
> Note: users can choose to upgrade via hudi-cli if need be. but easier would
> be to just start the writer. Expect some delay for first commit since
> bootstrap will be happening.
> 2. Once first commit in previous writer process completes successfully, we
> can restart all other processes. Upgrade the async table service (to hudi
> version w/ metadata enabled) and restart it. *Ensure metadata table is
> enabled across all processes.* Even if missed on one, could result in data
> loss.
>
> By this, once metadata table is bootstrapped, any new commits from all
> processes will be synced to metadata.
>
>
>
--
This message was sent by Atlassian Jira
(v8.20.1#820001)