Friday, May 2, 2014

CQ5/AEM How do I detect from a SlingServlet whether it is running on the Master or Slave instance on an author cluster?

The Problem

You have a Sling Servlet performing a task on the author instance, and you are running as a cluster. The code is executing on both the master author and the slave author instance, when it should only be running on one.

How do you detect whether the instance is the master instance?

The Solution

private SlingRepository repository;

public boolean isMasterRepository(){
    final String isMaster = repository.getDescriptor("crx.cluster.master");
    return StringUtils.isNotBlank(isMaster) && Boolean.parseBoolean(isMaster);

With this code, we can detect whether the current instance is running as the master.

In the execution function, the first conditional should be to detect whether it is running as the master instance or not, and if it is not, it should terminate the function call.

Thursday, May 1, 2014

CQ 5.6.1 How to find the current run mode on an instance

The Problem

You suspect your instance is not running in publish mode, or is missing a custom run mode on startup and need to find out easily what runmode the instance is running under.

The Solution

Go to:

You will see the following line down the bottom:

Run Modes = [samplecontent, author, crx2, crx3mongo]