[
https://issues.apache.org/jira/browse/HUDI-6525?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Prashant Wason closed HUDI-6525.
--------------------------------
Resolution: Invalid
> Syncing the view in Embedded TimelineServer can cause NullPointerException if
> MDT is enabled
> --------------------------------------------------------------------------------------------
>
> Key: HUDI-6525
> URL: https://issues.apache.org/jira/browse/HUDI-6525
> Project: Apache Hudi
> Issue Type: Bug
> Reporter: Prashant Wason
> Assignee: Prashant Wason
> Priority: Major
> Labels: 0.14.0
> Fix For: 0.14.0
>
>
> Assume Embedded TimelineServer is being used and there are many executors
> sending requests.
> Executor 1: Sends request which causes TimelineServer to sync its view
> syncIfLocalViewBehind() -> view.sync();
> If the view is HoodieMetadataFileSystemView, its sync is written as follows:
>
> public void sync() {
> super.sync(); // -> REFRESHES TIMELINE ON TImelineServer
> tableMetadata.reset(); // CLOSES MDT readers and OPENS them again
> }
>
> The issue is that once super.sync() completes (almost immediately), the
> requests from other executors wont detect the local view to be behind and
> hence would not call syncIfLocalViewBehind(). They would directly start
> calling functions on the view (e.g. view.getLatestFileSlices()). But until
> MDT is read (log merging may take time when there are large number of log
> blocks), view.getLatestFileSlices() will lead to NPE.
>
> The fix is to reverse the order of reset and sync in
> HoodieMetadataFileSystemView.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)