mirror of
https://github.com/misskey-dev/misskey.git
synced 2024-12-23 00:29:22 +09:00
Merge e09ecac7bb
into f123be38b9
This commit is contained in:
commit
161f6aa90a
@ -14,9 +14,9 @@ export type FanoutTimelineName =
|
|||||||
| `homeTimeline:${string}`
|
| `homeTimeline:${string}`
|
||||||
| `homeTimelineWithFiles:${string}` // only notes with files are included
|
| `homeTimelineWithFiles:${string}` // only notes with files are included
|
||||||
// local timeline
|
// local timeline
|
||||||
| `localTimeline` // replies are not included
|
| 'localTimeline' // replies are not included
|
||||||
| `localTimelineWithFiles` // only non-reply notes with files are included
|
| 'localTimelineWithFiles' // only non-reply notes with files are included
|
||||||
| `localTimelineWithReplies` // only replies are included
|
| 'localTimelineWithReplies' // only replies are included
|
||||||
| `localTimelineWithReplyTo:${string}` // Only replies to specific local user are included. Parameter is reply user id.
|
| `localTimelineWithReplyTo:${string}` // Only replies to specific local user are included. Parameter is reply user id.
|
||||||
|
|
||||||
// antenna
|
// antenna
|
||||||
@ -111,4 +111,33 @@ export class FanoutTimelineService {
|
|||||||
public purge(name: FanoutTimelineName) {
|
public purge(name: FanoutTimelineName) {
|
||||||
return this.redisForTimelines.del('list:' + name);
|
return this.redisForTimelines.del('list:' + name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@bindThis
|
||||||
|
public async purgeAllcache() {
|
||||||
|
const timeLinePatterns = [
|
||||||
|
'*list:homeTimeline*',
|
||||||
|
'*list:localTimeline*',
|
||||||
|
'*list:antennaTimeline*',
|
||||||
|
'*list:userTimeline*',
|
||||||
|
'*list:userListTimeline*',
|
||||||
|
'*list:channelTimeline*',
|
||||||
|
'*list:roleTimeline*',
|
||||||
|
];
|
||||||
|
let timeLines = [] as string[];
|
||||||
|
|
||||||
|
for (const timeline of timeLinePatterns) {
|
||||||
|
let cursor = '0';
|
||||||
|
do {
|
||||||
|
const scanResult = await this.redisForTimelines.scan(cursor, 'MATCH', timeline, 'COUNT', 300);
|
||||||
|
cursor = scanResult[0];
|
||||||
|
timeLines = timeLines.concat(scanResult[1]);
|
||||||
|
} while (cursor !== '0');
|
||||||
|
}
|
||||||
|
|
||||||
|
const pipeline = this.redisForTimelines.pipeline();
|
||||||
|
for (const timeLine of timeLines) {
|
||||||
|
pipeline.del(`list:${timeLine.split('list:')[1]}`);
|
||||||
|
}
|
||||||
|
await pipeline.exec();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ import { GlobalEventService } from '@/core/GlobalEventService.js';
|
|||||||
import { bindThis } from '@/decorators.js';
|
import { bindThis } from '@/decorators.js';
|
||||||
import type { GlobalEvents } from '@/core/GlobalEventService.js';
|
import type { GlobalEvents } from '@/core/GlobalEventService.js';
|
||||||
import { FeaturedService } from '@/core/FeaturedService.js';
|
import { FeaturedService } from '@/core/FeaturedService.js';
|
||||||
|
import { FanoutTimelineService } from './FanoutTimelineService.js';
|
||||||
import type { OnApplicationShutdown } from '@nestjs/common';
|
import type { OnApplicationShutdown } from '@nestjs/common';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
@ -28,6 +29,7 @@ export class MetaService implements OnApplicationShutdown {
|
|||||||
|
|
||||||
private featuredService: FeaturedService,
|
private featuredService: FeaturedService,
|
||||||
private globalEventService: GlobalEventService,
|
private globalEventService: GlobalEventService,
|
||||||
|
private fanoutTimelineService: FanoutTimelineService,
|
||||||
) {
|
) {
|
||||||
//this.onMessage = this.onMessage.bind(this);
|
//this.onMessage = this.onMessage.bind(this);
|
||||||
|
|
||||||
@ -112,6 +114,7 @@ export class MetaService implements OnApplicationShutdown {
|
|||||||
before = metas[0];
|
before = metas[0];
|
||||||
|
|
||||||
if (before) {
|
if (before) {
|
||||||
|
if (before.enableFanoutTimeline === true && data.enableFanoutTimeline === false) this.fanoutTimelineService.purgeAllcache();
|
||||||
await transactionalEntityManager.update(MiMeta, before.id, data);
|
await transactionalEntityManager.update(MiMeta, before.id, data);
|
||||||
|
|
||||||
const metas = await transactionalEntityManager.find(MiMeta, {
|
const metas = await transactionalEntityManager.find(MiMeta, {
|
||||||
|
Loading…
Reference in New Issue
Block a user