0
0
Fork 0

デバッグ機構

This commit is contained in:
Xeltica 2021-10-18 02:28:21 +09:00
parent 6d1ce48198
commit db4fe14316
5 changed files with 37 additions and 19 deletions

View file

@ -8,7 +8,7 @@
"scripts": {
"build": "run-s build:backend build:frontend build:meta",
"build:frontend": "webpack",
"build:backend": "run-p build:backend-source build:views build:styles",
"build:backend": "run-s build:backend-source build:views build:styles",
"build:backend-source": "tsc",
"build:views": "copyfiles -u 1 src/backend/views/*.pug ./built/",
"build:meta": "node ./build-meta.js",

View file

@ -19,12 +19,12 @@ export class AdminController {
};
}
@Get('/misshai/error') getMisshaiError(@CurrentUser({ required: true }) user: IUser) {
@Get('/misshai/log') getMisshaiLog(@CurrentUser({ required: true }) user: IUser) {
if (!user.isAdmin) {
throw new BadRequestError('Not an Admin');
}
return Store.getState().misshaiWorkerRecentError;
return Store.getState().misshaiWorkerLog;
}
@OnUndefined(204)

View file

@ -19,24 +19,41 @@ export default (): void => {
export const work = async () => {
Store.dispatch({ nowCalculating: true });
clearLog();
printLog('[Miss-hai Worker] Started.');
try {
const users = await Users.find({ alertMode: Not<AlertMode>('nothing') });
for (const user of users) {
await update(user).catch(e => handleError(user, e));
printLog(`[Miss-hai Worker] processed for ${user.username}@${user.host}`);
if (user.alertMode === 'note') {
return delay(3000);
}
}
Store.dispatch({ misshaiWorkerRecentError: null });
printLog('[Miss-hai Worker] finished successfully.');
} catch (e) {
const msg = String(e instanceof Error ? e.stack : e);
Store.dispatch({ misshaiWorkerRecentError: msg });
printLog(msg);
printLog('[Miss-hai Worker] stopped wrongly.');
} finally {
Store.dispatch({ nowCalculating: false });
}
};
const clearLog = () => {
Store.dispatch({ misshaiWorkerLog: [] });
};
const printLog = (log: any) => {
Store.dispatch({ misshaiWorkerLog: [
...Store.getState().misshaiWorkerLog,
String(log),
] });
};
/**
*
* @param user
@ -60,13 +77,13 @@ const handleError = async (user: User, e: any) => {
if (e.code) {
if (e.code === 'NO_SUCH_USER' || e.code === 'AUTHENTICATION_FAILED') {
// ユーザーが削除されている場合、レコードからも消してとりやめ
console.info(`${user.username}@${user.host} is deleted, so delete this user from the system`);
printLog(`${user.username}@${user.host} is deleted, so delete this user from the system`);
await deleteUser(user.username, user.host);
} else {
console.error(`Misskey Error: ${JSON.stringify(e)}`);
printLog(`Misskey Error: ${JSON.stringify(e)}`);
}
} else {
// おそらく通信エラー
console.error(`Unknown error: ${e.name} ${e.message}`);
printLog(`Unknown error: ${e.name} ${e.message}`);
}
};

View file

@ -7,7 +7,7 @@
*/
const defaultState: State = {
nowCalculating: false,
misshaiWorkerRecentError: null,
misshaiWorkerLog: [],
};
let _state: Readonly<State> = defaultState;
@ -17,7 +17,7 @@ let _state: Readonly<State> = defaultState;
*/
export type State = {
nowCalculating: boolean,
misshaiWorkerRecentError: string | null,
misshaiWorkerLog: string[],
};
/**

View file

@ -7,11 +7,14 @@ import { IAnnouncement } from '../../common/types/announcement';
import { $delete, $get, $post, $put } from '../misc/api';
import { Card } from './Card';
import { showModal } from '../store/slices/screen';
import { useDispatch } from 'react-redux';
export const AdminPage: React.VFC = () => {
const { data, error } = useGetSessionQuery(undefined);
const dispatch = useDispatch();
const [announcements, setAnnouncements] = useState<IAnnouncement[]>([]);
const [selectedAnnouncement, selectAnnouncement] = useState<IAnnouncement | null>(null);
const [isAnnouncementsLoaded, setAnnouncementsLoaded] = useState(false);
@ -20,7 +23,7 @@ export const AdminPage: React.VFC = () => {
const [draftTitle, setDraftTitle] = useState('');
const [draftBody, setDraftBody] = useState('');
const [misshaiError, setMisshaiError] = useState<string | null>(null);
const [misshaiLog, setMisshaiLog] = useState<string[] | null>(null);
const submitAnnouncement = async () => {
if (selectedAnnouncement) {
@ -55,7 +58,11 @@ export const AdminPage: React.VFC = () => {
setAnnouncements(announcements ?? []);
setAnnouncementsLoaded(true);
});
$get<string | null>('admin/misshai/error').then(setMisshaiError);
fetchLog();
};
const fetchLog = () => {
$get<string[]>('admin/misshai/log').then(setMisshaiLog);
};
const onClickStartMisshaiAlertWorkerButton = () => {
@ -192,7 +199,7 @@ export const AdminPage: React.VFC = () => {
</button>
<h3></h3>
<pre><code>{misshaiError ?? 'なし'}</code></pre>
<pre><code>{misshaiLog?.join('\n') ?? 'なし'}</code></pre>
</div>
</article>
</>
@ -201,9 +208,3 @@ export const AdminPage: React.VFC = () => {
</div>
);
};
function dispatch(arg0: any) {
throw new Error('Function not implemented.');
}