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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]