diff --git a/app/javascript/dashboard/store/modules/conversationStats.js b/app/javascript/dashboard/store/modules/conversationStats.js index 204b87ea1..1f029d0ec 100644 --- a/app/javascript/dashboard/store/modules/conversationStats.js +++ b/app/javascript/dashboard/store/modules/conversationStats.js @@ -25,24 +25,32 @@ const fetchMetaData = async (commit, params) => { } }; -const debouncedFetchMetaData = debounce(fetchMetaData, 500, false, 2000); -const longDebouncedFetchMetaData = debounce(fetchMetaData, 5000, false, 10000); +const debouncedFetchMetaData = debounce(fetchMetaData, 1000, false, 5000); +const longDebouncedFetchMetaData = debounce(fetchMetaData, 7500, false, 20000); const superLongDebouncedFetchMetaData = debounce( fetchMetaData, - 10000, + 15000, false, - 20000 + 30000 ); +const metaDebouncers = { + default: debouncedFetchMetaData, + long: longDebouncedFetchMetaData, + superLong: superLongDebouncedFetchMetaData, +}; + +// allCount is 0 until a meta request succeeds; under load it stays 0, so treat +// the unknown case as a large account and poll slowest instead of fastest. +export const getMetaDebounceKey = allCount => { + if (allCount > 2000 || allCount === 0) return 'superLong'; + if (allCount > 100) return 'long'; + return 'default'; +}; + export const actions = { - get: async ({ commit, state: $state }, params) => { - if ($state.allCount > 2000) { - superLongDebouncedFetchMetaData(commit, params); - } else if ($state.allCount > 100) { - longDebouncedFetchMetaData(commit, params); - } else { - debouncedFetchMetaData(commit, params); - } + get: ({ commit, state: $state }, params) => { + metaDebouncers[getMetaDebounceKey($state.allCount)](commit, params); }, set({ commit }, meta) { commit(types.SET_CONV_TAB_META, meta);