hungphan227 commented on code in PR #1925:
URL: https://github.com/apache/james-project/pull/1925#discussion_r1457254383
##########
mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/DeleteMessageListener.java:
##########
@@ -146,4 +153,8 @@ private Mono<Boolean> isUnreferenced(PostgresMessageId id,
PostgresMailboxMessag
.map(count -> true)
.defaultIfEmpty(false);
}
+
+ private Mono<Void> deleteAttachment(PostgresMessageId messageId,
PostgresAttachmentDAO attachmentDAO) {
+ return attachmentDAO.deleteByMessageId(messageId);
Review Comment:
delete blob as well
##########
mailbox/postgres/src/main/java/org/apache/james/mailbox/postgres/DeleteMessageListener.java:
##########
@@ -96,36 +99,40 @@ public Publisher<Void> reactiveEvent(Event event) {
private Mono<Void> handleMailboxDeletion(MailboxDeletion event) {
PostgresMessageDAO postgresMessageDAO =
messageDAOFactory.create(event.getUsername().getDomainPart());
PostgresMailboxMessageDAO postgresMailboxMessageDAO =
mailboxMessageDAOFactory.create(event.getUsername().getDomainPart());
+ PostgresAttachmentDAO attachmentDAO =
attachmentDAOFactory.create(event.getUsername().getDomainPart());
return postgresMailboxMessageDAO.deleteByMailboxId((PostgresMailboxId)
event.getMailboxId())
- .flatMap(msgId -> handleMessageDeletion(postgresMessageDAO,
postgresMailboxMessageDAO, msgId, event.getMailboxId(),
event.getMailboxPath().getUser()),
+ .flatMap(msgId -> handleMessageDeletion(postgresMessageDAO,
postgresMailboxMessageDAO, attachmentDAO, msgId, event.getMailboxId(),
event.getMailboxPath().getUser()),
LOW_CONCURRENCY)
.then();
}
private Mono<Void> handleMessageDeletion(Expunged event) {
PostgresMessageDAO postgresMessageDAO =
messageDAOFactory.create(event.getUsername().getDomainPart());
PostgresMailboxMessageDAO postgresMailboxMessageDAO =
mailboxMessageDAOFactory.create(event.getUsername().getDomainPart());
+ PostgresAttachmentDAO attachmentDAO =
attachmentDAOFactory.create(event.getUsername().getDomainPart());
return Flux.fromIterable(event.getExpunged()
.values())
.map(MessageMetaData::getMessageId)
.map(PostgresMessageId.class::cast)
- .flatMap(msgId -> handleMessageDeletion(postgresMessageDAO,
postgresMailboxMessageDAO, msgId, event.getMailboxId(),
event.getMailboxPath().getUser()), LOW_CONCURRENCY)
+ .flatMap(msgId -> handleMessageDeletion(postgresMessageDAO,
postgresMailboxMessageDAO, attachmentDAO, msgId, event.getMailboxId(),
event.getMailboxPath().getUser()), LOW_CONCURRENCY)
.then();
}
private Mono<Void> handleMessageDeletion(PostgresMessageDAO
postgresMessageDAO,
PostgresMailboxMessageDAO
postgresMailboxMessageDAO,
+ PostgresAttachmentDAO
attachmentDAO,
PostgresMessageId messageId,
- MailboxId mailboxId,
+ MailboxId mailboxId,
Username owner) {
return Mono.just(messageId)
.filterWhen(msgId -> isUnreferenced(messageId,
postgresMailboxMessageDAO))
.flatMap(msgId -> postgresMessageDAO.retrieveMessage(messageId)
.flatMap(executeDeletionCallbacks(mailboxId, owner))
.then(deleteBodyBlob(msgId, postgresMessageDAO))
- .then(postgresMessageDAO.deleteByMessageId(msgId)));
+ .then(postgresMessageDAO.deleteByMessageId(msgId))
+ .then(deleteAttachment(messageId, attachmentDAO)));
Review Comment:
should delete message at last
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]