mirror of
https://github.com/hibiken/asynqmon.git
synced 2025-01-18 18:55:54 +08:00
(ui): Fix inconsistent data shown in AggregatingTasks view
This commit is contained in:
parent
9de7f054bc
commit
d0a8b6b691
@ -9,7 +9,8 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type listGroupsResponse struct {
|
type listGroupsResponse struct {
|
||||||
Groups []*groupInfo `json:"groups"`
|
Queue *queueStateSnapshot `json:"stats"`
|
||||||
|
Groups []*groupInfo `json:"groups"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func newListGroupsHandlerFunc(inspector *asynq.Inspector) http.HandlerFunc {
|
func newListGroupsHandlerFunc(inspector *asynq.Inspector) http.HandlerFunc {
|
||||||
@ -21,8 +22,14 @@ func newListGroupsHandlerFunc(inspector *asynq.Inspector) http.HandlerFunc {
|
|||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
qinfo, err := inspector.GetQueueInfo(qname)
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
resp := listGroupsResponse{
|
resp := listGroupsResponse{
|
||||||
|
Queue: toQueueStateSnapshot(qinfo),
|
||||||
Groups: toGroupInfos(groups),
|
Groups: toGroupInfos(groups),
|
||||||
}
|
}
|
||||||
if err := json.NewEncoder(w).Encode(resp); err != nil {
|
if err := json.NewEncoder(w).Encode(resp); err != nil {
|
||||||
|
@ -306,6 +306,11 @@ func newListAggregatingTasksHandlerFunc(inspector *asynq.Inspector, pf PayloadFo
|
|||||||
http.Error(w, err.Error(), http.StatusInternalServerError)
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
groups, err := inspector.Groups(qname)
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
payload := make(map[string]interface{})
|
payload := make(map[string]interface{})
|
||||||
if len(tasks) == 0 {
|
if len(tasks) == 0 {
|
||||||
// avoid nil for the tasks field in json output.
|
// avoid nil for the tasks field in json output.
|
||||||
@ -314,6 +319,7 @@ func newListAggregatingTasksHandlerFunc(inspector *asynq.Inspector, pf PayloadFo
|
|||||||
payload["tasks"] = toAggregatingTasks(tasks, pf)
|
payload["tasks"] = toAggregatingTasks(tasks, pf)
|
||||||
}
|
}
|
||||||
payload["stats"] = toQueueStateSnapshot(qinfo)
|
payload["stats"] = toQueueStateSnapshot(qinfo)
|
||||||
|
payload["groups"] = toGroupInfos(groups)
|
||||||
writeResponseJSON(w, payload)
|
writeResponseJSON(w, payload)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -59,6 +59,7 @@ import {
|
|||||||
deleteAggregatingTask,
|
deleteAggregatingTask,
|
||||||
runAggregatingTask,
|
runAggregatingTask,
|
||||||
archiveAggregatingTask,
|
archiveAggregatingTask,
|
||||||
|
ListAggregatingTasksResponse,
|
||||||
} from "../api";
|
} from "../api";
|
||||||
import { Dispatch } from "redux";
|
import { Dispatch } from "redux";
|
||||||
import { toErrorString, toErrorStringWithHttpStatus } from "../utils";
|
import { toErrorString, toErrorStringWithHttpStatus } from "../utils";
|
||||||
@ -418,7 +419,7 @@ interface ListAggregatingTasksSuccessAction {
|
|||||||
type: typeof LIST_AGGREGATING_TASKS_SUCCESS;
|
type: typeof LIST_AGGREGATING_TASKS_SUCCESS;
|
||||||
queue: string;
|
queue: string;
|
||||||
group: string;
|
group: string;
|
||||||
payload: ListTasksResponse;
|
payload: ListAggregatingTasksResponse;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ListAggregatingTasksErrorAction {
|
interface ListAggregatingTasksErrorAction {
|
||||||
|
@ -18,6 +18,12 @@ export interface ListTasksResponse {
|
|||||||
stats: Queue;
|
stats: Queue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface ListAggregatingTasksResponse {
|
||||||
|
tasks: TaskInfo[];
|
||||||
|
stats: Queue;
|
||||||
|
groups: GroupInfo[];
|
||||||
|
}
|
||||||
|
|
||||||
export interface ListServersResponse {
|
export interface ListServersResponse {
|
||||||
servers: ServerInfo[];
|
servers: ServerInfo[];
|
||||||
}
|
}
|
||||||
@ -67,6 +73,7 @@ export interface ListQueueStatsResponse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface ListGroupsResponse {
|
export interface ListGroupsResponse {
|
||||||
|
stats: Queue;
|
||||||
groups: GroupInfo[];
|
groups: GroupInfo[];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -539,7 +546,7 @@ export async function listAggregatingTasks(
|
|||||||
qname: string,
|
qname: string,
|
||||||
gname: string,
|
gname: string,
|
||||||
pageOpts?: PaginationOptions
|
pageOpts?: PaginationOptions
|
||||||
): Promise<ListTasksResponse> {
|
): Promise<ListAggregatingTasksResponse> {
|
||||||
let url = `${getBaseUrl()}/queues/${qname}/groups/${gname}/aggregating_tasks`;
|
let url = `${getBaseUrl()}/queues/${qname}/groups/${gname}/aggregating_tasks`;
|
||||||
if (pageOpts) {
|
if (pageOpts) {
|
||||||
url += `?${queryString.stringify(pageOpts)}`;
|
url += `?${queryString.stringify(pageOpts)}`;
|
||||||
|
@ -4,6 +4,10 @@ import {
|
|||||||
LIST_GROUPS_ERROR,
|
LIST_GROUPS_ERROR,
|
||||||
LIST_GROUPS_SUCCESS,
|
LIST_GROUPS_SUCCESS,
|
||||||
} from "../actions/groupsActions";
|
} from "../actions/groupsActions";
|
||||||
|
import {
|
||||||
|
LIST_AGGREGATING_TASKS_SUCCESS,
|
||||||
|
TasksActionTypes,
|
||||||
|
} from "../actions/tasksActions";
|
||||||
import { GroupInfo } from "../api";
|
import { GroupInfo } from "../api";
|
||||||
|
|
||||||
interface GroupsState {
|
interface GroupsState {
|
||||||
@ -20,7 +24,7 @@ const initialState: GroupsState = {
|
|||||||
|
|
||||||
function groupsReducer(
|
function groupsReducer(
|
||||||
state = initialState,
|
state = initialState,
|
||||||
action: GroupsActionTypes
|
action: GroupsActionTypes | TasksActionTypes
|
||||||
): GroupsState {
|
): GroupsState {
|
||||||
switch (action.type) {
|
switch (action.type) {
|
||||||
case LIST_GROUPS_BEGIN:
|
case LIST_GROUPS_BEGIN:
|
||||||
@ -37,6 +41,12 @@ function groupsReducer(
|
|||||||
data: action.payload.groups,
|
data: action.payload.groups,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
case LIST_AGGREGATING_TASKS_SUCCESS:
|
||||||
|
return {
|
||||||
|
...state,
|
||||||
|
data: action.payload.groups,
|
||||||
|
};
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
@ -968,10 +968,7 @@ function queuesReducer(
|
|||||||
}
|
}
|
||||||
return {
|
return {
|
||||||
...queueInfo,
|
...queueInfo,
|
||||||
currentStats: {
|
currentStats: action.payload.stats,
|
||||||
...queueInfo.currentStats,
|
|
||||||
groups: action.payload.groups.length,
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
return { ...state, data: newData };
|
return { ...state, data: newData };
|
||||||
|
Loading…
Reference in New Issue
Block a user