Skip to content

Commit 1be64cd

Browse files
ARTEMIS-6011 Simplification of checkFullPolicy
1 parent e2c24f0 commit 1be64cd

File tree

2 files changed

+24
-60
lines changed

2 files changed

+24
-60
lines changed

artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreImpl.java

Lines changed: 19 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1425,71 +1425,38 @@ public boolean page(Message message,
14251425

14261426
@Override
14271427
public boolean checkFullPolicy(Message message) throws Exception {
1428-
1429-
boolean diskFull = pagingManager.isDiskFull();
1430-
1431-
if (diskFull && (diskFullMessagePolicy == DiskFullMessagePolicy.DROP || diskFullMessagePolicy == DiskFullMessagePolicy.FAIL)) {
1432-
if (message.isLargeMessage()) {
1433-
((LargeServerMessage) message).deleteFile();
1434-
}
1435-
1436-
if (diskFullMessagePolicy == DiskFullMessagePolicy.FAIL) {
1437-
throw ActiveMQMessageBundle.BUNDLE.addressIsFull(address.toString());
1438-
}
1439-
1440-
// Dist is full, just drop the data
1441-
if (!printedDropMessagesWarning) {
1442-
printedDropMessagesWarning = true;
1443-
ActiveMQServerLogger.LOGGER.pageStoreDropMessages(storeName, getPageInfo());
1444-
}
1445-
1428+
if (pagingManager.isDiskFull() && (diskFullMessagePolicy == DiskFullMessagePolicy.DROP || diskFullMessagePolicy == DiskFullMessagePolicy.FAIL)) {
1429+
handleDrop(message, diskFullMessagePolicy == DiskFullMessagePolicy.FAIL);
14461430
return false;
14471431
}
14481432

1449-
if (isFull()) {
1450-
if (addressFullMessagePolicy == AddressFullMessagePolicy.FAIL) {
1451-
if (message.isLargeMessage()) {
1452-
removeLargeMessage(message);
1453-
}
1454-
throw ActiveMQMessageBundle.BUNDLE.addressIsFull(address.toString());
1455-
} else if (addressFullMessagePolicy == AddressFullMessagePolicy.DROP) {
1456-
if (message.isLargeMessage()) {
1457-
removeLargeMessage(message);
1458-
}
1459-
// storage is full, just drop the data
1460-
if (!printedDropMessagesWarning) {
1461-
printedDropMessagesWarning = true;
1462-
ActiveMQServerLogger.LOGGER.pageStoreDropMessages(storeName, getPageInfo());
1463-
}
1464-
return false;
1465-
}
1433+
if (isFull() && (addressFullMessagePolicy == AddressFullMessagePolicy.DROP || addressFullMessagePolicy == AddressFullMessagePolicy.FAIL)) {
1434+
handleDrop(message, addressFullMessagePolicy == AddressFullMessagePolicy.FAIL);
1435+
return false;
14661436
}
14671437

14681438
if (pageFull) {
1469-
if (message.isLargeMessage()) {
1470-
removeLargeMessage(message);
1471-
}
1472-
1473-
if (pageFullMessagePolicy == PageFullMessagePolicy.FAIL) {
1474-
throw ActiveMQMessageBundle.BUNDLE.addressIsFull(address.toString());
1475-
}
1476-
1477-
if (!printedDropMessagesWarning) {
1478-
printedDropMessagesWarning = true;
1479-
ActiveMQServerLogger.LOGGER.pageStoreDropMessages(storeName, getPageInfo());
1480-
}
1439+
handleDrop(message, pageFullMessagePolicy == PageFullMessagePolicy.FAIL);
14811440
return false;
14821441
}
14831442

14841443
return true;
14851444
}
14861445

1487-
private static void removeLargeMessage(Message message) {
1488-
try {
1446+
// message will be dropped, we may throw an Exception if fail
1447+
private void handleDrop(Message message, boolean fail) throws Exception {
1448+
if (message.isLargeMessage()) {
14891449
((LargeServerMessage) message).deleteFile();
1490-
} catch (Exception e) {
1491-
// only thing to be done is log on this case
1492-
logger.debug("Error deleting large message file for {}", message, e);
1450+
}
1451+
1452+
if (fail) {
1453+
throw ActiveMQMessageBundle.BUNDLE.addressIsFull(address.toString());
1454+
}
1455+
1456+
// System is full, just drop the message
1457+
if (!printedDropMessagesWarning) {
1458+
printedDropMessagesWarning = true;
1459+
ActiveMQServerLogger.LOGGER.pageStoreDropMessages(storeName, getPageInfo());
14931460
}
14941461
}
14951462

artemis-server/src/main/java/org/apache/activemq/artemis/core/postoffice/impl/PostOfficeImpl.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1685,18 +1685,15 @@ public void processRoute(final Message message,
16851685
final SimpleString messageAddress = message.getAddressSimpleString();
16861686
final PagingStore owningStore = pagingManager.getPageStore(messageAddress);
16871687
message.setOwner(owningStore);
1688+
16881689
boolean dropMessages = false;
1689-
if (owningStore != null) {
1690-
if (!owningStore.checkFullPolicy(message)) {
1691-
dropMessages = true;
1692-
}
1690+
if (owningStore != null && !owningStore.checkFullPolicy(message)) {
1691+
dropMessages = true;
16931692
}
16941693
for (Map.Entry<SimpleString, RouteContextList> entry : context.getContexListing().entrySet()) {
16951694
final PagingStore store = entry.getValue().getAddressStore();
1696-
if (store != null) {
1697-
if (!store.checkFullPolicy(message)) {
1698-
dropMessages = true;
1699-
}
1695+
if (store != null && store != owningStore && !store.checkFullPolicy(message)) {
1696+
dropMessages = true;
17001697
}
17011698
}
17021699

0 commit comments

Comments
 (0)