This is an automated email from the ASF dual-hosted git repository. kharekartik pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/pinot.git
The following commit(s) were added to refs/heads/master by this push: new 0225f9216c9 Add reset segment operation to UI (#16078) 0225f9216c9 is described below commit 0225f9216c9ab96cdcbcf51558235906ffa91c21 Author: Kartik Khare <kharekar...@gmail.com> AuthorDate: Tue Jun 17 08:46:00 2025 +0530 Add reset segment operation to UI (#16078) --- .../main/resources/app/pages/SegmentDetails.tsx | 38 ++++++++++++++++++++++ .../src/main/resources/app/requests/index.ts | 3 ++ .../main/resources/app/utils/PinotMethodUtils.ts | 8 +++++ 3 files changed, 49 insertions(+) diff --git a/pinot-controller/src/main/resources/app/pages/SegmentDetails.tsx b/pinot-controller/src/main/resources/app/pages/SegmentDetails.tsx index 8ba9ed96964..84b8c949498 100644 --- a/pinot-controller/src/main/resources/app/pages/SegmentDetails.tsx +++ b/pinot-controller/src/main/resources/app/pages/SegmentDetails.tsx @@ -325,6 +325,35 @@ const SegmentDetails = ({ match }: RouteComponentProps<Props>) => { setConfirmDialog(true); }; + const handleResetSegmentClick = () => { + setDialogDetails({ + title: 'Reset Segment', + content: 'Are you sure you want to reset this segment?', + successCb: () => handleResetOp(), + }); + setConfirmDialog(true); + }; + + const handleResetOp = async () => { + try { + const result = await PinotMethodUtils.resetSegmentOp( + tableName, + segmentName + ); + if (result.status) { + dispatch({ type: 'success', message: result.status, show: true }); + fetchData(); + } else { + dispatch({ type: 'error', message: result.error, show: true }); + } + } catch (error) { + console.error('Error resetting segment:', error); + dispatch({ type: 'error', message: 'Failed to reset segment. Please try again later.', show: true }); + } finally { + closeDialog(); + } + }; + const handleReloadOp = async () => { const result = await PinotMethodUtils.reloadSegmentOp( tableName, @@ -376,6 +405,15 @@ const SegmentDetails = ({ match }: RouteComponentProps<Props>) => { > Reload Segment </CustomButton> + <CustomButton + onClick={() => { + handleResetSegmentClick(); + }} + tooltipTitle="Reset the segment by disabling and enabling it" + enableTooltip={true} + > + Reset Segment + </CustomButton> </div> </SimpleAccordion> </div> diff --git a/pinot-controller/src/main/resources/app/requests/index.ts b/pinot-controller/src/main/resources/app/requests/index.ts index 42ecfccbcb9..afa9f55d59f 100644 --- a/pinot-controller/src/main/resources/app/requests/index.ts +++ b/pinot-controller/src/main/resources/app/requests/index.ts @@ -265,6 +265,9 @@ export const getServerListOfTenant = (name: string): Promise<AxiosResponse<Serve export const reloadSegment = (tableName: string, instanceName: string): Promise<AxiosResponse<OperationResponse>> => baseApi.post(`/segments/${tableName}/${instanceName}/reload`, null, {headers}); +export const resetSegment = (tableName: string, segmentName: string): Promise<AxiosResponse<OperationResponse>> => + baseApi.post(`/segments/${tableName}/${segmentName}/reset`, null, {headers}); + export const reloadAllSegments = (tableName: string, tableType: string): Promise<AxiosResponse<OperationResponse>> => baseApi.post(`/segments/${tableName}/reload?type=${tableType}`, null, {headers}); diff --git a/pinot-controller/src/main/resources/app/utils/PinotMethodUtils.ts b/pinot-controller/src/main/resources/app/utils/PinotMethodUtils.ts index 086383d29cb..8f27aab0fae 100644 --- a/pinot-controller/src/main/resources/app/utils/PinotMethodUtils.ts +++ b/pinot-controller/src/main/resources/app/utils/PinotMethodUtils.ts @@ -80,6 +80,7 @@ import { getBrokerListOfTenant, getServerListOfTenant, deleteSegment, + resetSegment, putTable, putSchema, deleteTable, @@ -989,6 +990,12 @@ const reloadStatusOp = (tableName, tableType) => { }); } +const resetSegmentOp = (tableName, segmentName) => { + return resetSegment(tableName, segmentName).then((response) => { + return response.data; + }); +}; + const deleteSegmentOp = (tableName, segmentName) => { return deleteSegment(tableName, segmentName).then((response)=>{ return response.data; @@ -1382,6 +1389,7 @@ export default { getTaskProgressData, getTaskGeneratorDebugData, deleteSegmentOp, + resetSegmentOp, reloadSegmentOp, reloadStatusOp, reloadAllSegmentsOp, --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org