Skip to content

Commit

Permalink
ARTEMIS-5326 Expose Prefetch and MaxRead paging values into AddressCo…
Browse files Browse the repository at this point in the history
…ntrol
  • Loading branch information
clebertsuconic committed Feb 24, 2025
1 parent bdb6ec1 commit 18d4075
Show file tree
Hide file tree
Showing 5 changed files with 155 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2823,4 +2823,33 @@ static void getMessagesSent(Object source) {
@LogMessage(id = 601791, value = "User {} is getting the number of messages sent on target resource: {}", level = LogMessage.Level.INFO)
void getMessagesSent(String user, Object source);

static void getMaxPageReadBytes(Object source) {
BASE_LOGGER.getMaxPageReadBytes(getCaller(), source);
}

@LogMessage(id = 601792, value = "User {} is getting maxPageReadBytes on target resource: {}", level = LogMessage.Level.INFO)
void getMaxPageReadBytes(String user, Object source);

static void getMaxPageReadMessages(Object source) {
BASE_LOGGER.getMaxPageReadMessages(getCaller(), source);
}

@LogMessage(id = 601793, value = "User {} is getting maxPageReadMessages on target resource: {}", level = LogMessage.Level.INFO)
void getMaxPageReadMessages(String user, Object source);

static void getPrefetchPageMessages(Object source) {
BASE_LOGGER.getPrefetchPageMessages(getCaller(), source);
}

@LogMessage(id = 601794, value = "User {} is getting prefetchPageMessages on target resource: {}", level = LogMessage.Level.INFO)
void getPrefetchPageMessages(String user, Object source);


static void getPrefetchPageBytes(Object source) {
BASE_LOGGER.getPrefetchPageBytes(getCaller(), source);
}

@LogMessage(id = 601795, value = "User {} is getting prefetchPageBytes on target resource: {}", level = LogMessage.Level.INFO)
void getPrefetchPageBytes(String user, Object source);

}
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,19 @@ public interface AddressControl {
@Attribute(desc = ADDRESS_SIZE_DESCRIPTION)
long getAddressSize();


@Attribute(desc = "The maximum number of bytes that can be read into memory from paged files")
int getMaxPageReadBytes();

@Attribute(desc = "The maximum number of messages that can be read into memory from paged files")
int getMaxPageReadMessages();

@Attribute(desc = "The number of bytes to prefetch from storage into memory before reching maxReadBytes")
int getPrefetchPageBytes();

@Attribute(desc = "The number of messages prefetch from storage into memory before reching maxReadBytes")
int getPrefetchPageMessages();

@Operation(desc = "Schedule Page Cleanup on this address")
void schedulePageCleanup() throws Exception;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,87 @@ public long getAddressSize() {
}
}

@Override
public int getMaxPageReadBytes() {
if (AuditLogger.isBaseLoggingEnabled()) {
AuditLogger.getMaxPageReadBytes(this.addressInfo);
}
clearIO();
try {
final PagingStore pagingStore = getPagingStore();
if (pagingStore == null) {
return 0;
}
return pagingStore.getMaxPageReadBytes();
} catch (Exception e) {
logger.debug("Failed to get attribute value", e);
return -1;
} finally {
blockOnIO();
}
}

@Override
public int getMaxPageReadMessages() {
if (AuditLogger.isBaseLoggingEnabled()) {
AuditLogger.getMaxPageReadMessages(this.addressInfo);
}
clearIO();
try {
final PagingStore pagingStore = getPagingStore();
if (pagingStore == null) {
return 0;
}
return pagingStore.getMaxPageReadMessages();
} catch (Exception e) {
logger.debug("Failed to get attribute value", e);
return -1;
} finally {
blockOnIO();
}
}

@Override
public int getPrefetchPageBytes() {
if (AuditLogger.isBaseLoggingEnabled()) {
AuditLogger.getPrefetchPageBytes(this.addressInfo);
}
clearIO();
try {
final PagingStore pagingStore = getPagingStore();
if (pagingStore == null) {
return 0;
}
return pagingStore.getPrefetchPageBytes();
} catch (Exception e) {
logger.debug("Failed to get attribute value", e);
return -1;
} finally {
blockOnIO();
}
}

@Override
public int getPrefetchPageMessages() {
if (AuditLogger.isBaseLoggingEnabled()) {
AuditLogger.getPrefetchPageMessages(this.addressInfo);
}
clearIO();
try {
final PagingStore pagingStore = getPagingStore();
if (pagingStore == null) {
return 0;
}
return pagingStore.getPrefetchPageMessages();
} catch (Exception e) {
logger.debug("Failed to get attribute value", e);
return -1;
} finally {
blockOnIO();
}
}


@Override
public void schedulePageCleanup() throws Exception {
if (AuditLogger.isBaseLoggingEnabled()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -296,14 +296,19 @@ public void testGetRolesAsJSON() throws Exception {
}

@Test
public void testGetNumberOfPages() throws Exception {
public void testGetPageAttributes() throws Exception {
session.close();
server.stop();
server.getConfiguration().setPersistenceEnabled(true);

SimpleString address = RandomUtil.randomUUIDSimpleString();

AddressSettings addressSettings = new AddressSettings().setPageSizeBytes(1024).setMaxSizeBytes(10 * 1024);
int maxReadBytes = 555;
int maxReadMessages = 666;
int prefetchBytes = 777;
int prefetchMessages = 888;

AddressSettings addressSettings = new AddressSettings().setPageSizeBytes(1024).setMaxSizeBytes(10 * 1024).setMaxReadPageBytes(maxReadBytes).setMaxReadPageMessages(maxReadMessages).setPrefetchPageMessages(prefetchMessages).setPrefetchPageBytes(prefetchBytes);
final int NUMBER_MESSAGES_BEFORE_PAGING = 7;

server.getAddressSettingsRepository().addMatch(address.toString(), addressSettings);
Expand Down Expand Up @@ -353,6 +358,11 @@ public void testGetNumberOfPages() throws Exception {
assertEquals(2, addressControl.getNumberOfPages(), "# of pages is 2");

assertEquals(serverQueue.getPageSubscription().getPagingStore().getAddressSize(), addressControl.getAddressSize());

assertEquals(maxReadBytes, addressControl.getMaxPageReadBytes());
assertEquals(maxReadMessages, addressControl.getMaxPageReadMessages());
assertEquals(prefetchBytes, addressControl.getPrefetchPageBytes());
assertEquals(prefetchMessages, addressControl.getPrefetchPageMessages());
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,26 @@ protected AddressControl createManagementControl(final SimpleString name) throws
return new AddressControl() {
private final CoreMessagingProxy proxy = new CoreMessagingProxy(addServerLocator(createInVMNonHALocator()), ResourceNames.ADDRESS + name);

@Override
public int getMaxPageReadBytes() {
return ((Number)proxy.retrieveAttributeValue("maxPageReadBytes")).intValue();
}

@Override
public int getMaxPageReadMessages() {
return ((Number)proxy.retrieveAttributeValue("maxPageReadMessages")).intValue();
}

@Override
public int getPrefetchPageBytes() {
return ((Number)proxy.retrieveAttributeValue("prefetchPageBytes")).intValue();
}

@Override
public int getPrefetchPageMessages() {
return ((Number)proxy.retrieveAttributeValue("prefetchPageMessages")).intValue();
}

@Override
public String getAddress() {
return (String) proxy.retrieveAttributeValue("address");
Expand Down

0 comments on commit 18d4075

Please sign in to comment.