summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMeiMei <30769358+mei23@users.noreply.github.com>2019-11-07 05:41:44 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2019-11-07 05:41:44 +0900
commit8ada1725bfee9087aca5f633fd0799b44bcb101a (patch)
tree6d7fb186941eca0aab57bed2ede3c421d4f81719 /src
parentAPの統計とログの修正と強化 (#5585) (diff)
downloadsharkey-8ada1725bfee9087aca5f633fd0799b44bcb101a.tar.gz
sharkey-8ada1725bfee9087aca5f633fd0799b44bcb101a.tar.bz2
sharkey-8ada1725bfee9087aca5f633fd0799b44bcb101a.zip
管理画面のジョブキュー一覧の修正 (#5586)
* Fix: inboxのジョブキューが表示されない * ジョブキューで試行回数等を表示するように * DBとオブジェクトストレージのジョブキューが表示されるように
Diffstat (limited to 'src')
-rw-r--r--src/client/app/admin/views/queue.vue12
-rw-r--r--src/server/api/endpoints/admin/queue/jobs.ts25
2 files changed, 25 insertions, 12 deletions
diff --git a/src/client/app/admin/views/queue.vue b/src/client/app/admin/views/queue.vue
index 43a41ffbe8..9aa740c68c 100644
--- a/src/client/app/admin/views/queue.vue
+++ b/src/client/app/admin/views/queue.vue
@@ -48,14 +48,15 @@
</ui-select>
</ui-horizon-group>
<sequential-entrance animation="entranceFromTop" delay="25">
- <div class="xvvuvgsv" v-for="job in jobs">
+ <div class="xvvuvgsv" v-for="job in jobs" :key="job.id">
<b>{{ job.id }}</b>
<template v-if="domain === 'deliver'">
<span>{{ job.data.to }}</span>
</template>
<template v-if="domain === 'inbox'">
- <span>{{ job.activity.id }}</span>
+ <span>{{ job.data.activity.id }}</span>
</template>
+ <span>{{ `(${job.attempts}/${job.maxAttempts}, ${Math.floor((jobsFetched - job.timestamp) / 1000 / 60)}min)` }}</span>
</div>
</sequential-entrance>
<ui-info v-if="jobs.length == jobsLimit">{{ $t('result-is-truncated', { n: jobsLimit }) }}</ui-info>
@@ -84,6 +85,7 @@ export default Vue.extend({
chartLimit: 200,
jobs: [],
jobsLimit: 50,
+ jobsFetched: Date.now(),
domain: 'deliver',
state: 'delayed',
faTasks, faPaperPlane, faInbox, faChartBar, faDatabase, faCloud
@@ -140,6 +142,7 @@ export default Vue.extend({
state: this.state,
limit: this.jobsLimit
}).then(jobs => {
+ this.jobsFetched = Date.now(),
this.jobs = jobs;
});
},
@@ -149,7 +152,8 @@ export default Vue.extend({
<style lang="stylus" scoped>
.xvvuvgsv
- > b
- margin-right 16px
+ margin-left -6px
+ > b, span
+ margin 0 6px
</style>
diff --git a/src/server/api/endpoints/admin/queue/jobs.ts b/src/server/api/endpoints/admin/queue/jobs.ts
index 4e47775692..0d23ca3e57 100644
--- a/src/server/api/endpoints/admin/queue/jobs.ts
+++ b/src/server/api/endpoints/admin/queue/jobs.ts
@@ -1,6 +1,6 @@
import $ from 'cafy';
import define from '../../../define';
-import { deliverQueue, inboxQueue } from '../../../../../queue';
+import { deliverQueue, inboxQueue, dbQueue, objectStorageQueue } from '../../../../../queue';
export const meta = {
tags: ['admin'],
@@ -10,11 +10,11 @@ export const meta = {
params: {
domain: {
- validator: $.str,
+ validator: $.str.or(['deliver', 'inbox', 'db', 'objectStorage']),
},
state: {
- validator: $.str,
+ validator: $.str.or(['active', 'waiting', 'delayed']),
},
limit: {
@@ -28,13 +28,22 @@ export default define(meta, async (ps) => {
const queue =
ps.domain === 'deliver' ? deliverQueue :
ps.domain === 'inbox' ? inboxQueue :
+ ps.domain === 'db' ? dbQueue :
+ ps.domain === 'objectStorage' ? objectStorageQueue :
null as never;
const jobs = await queue.getJobs([ps.state], 0, ps.limit!);
- return jobs.map(job => ({
- id: job.id,
- data: job.data,
- attempts: job.attemptsMade,
- }));
+ return jobs.map(job => {
+ const data = job.data;
+ delete data.content;
+ delete data.user;
+ return {
+ id: job.id,
+ data,
+ attempts: job.attemptsMade,
+ maxAttempts: job.opts ? job.opts.attempts : 0,
+ timestamp: job.timestamp,
+ };
+ });
});