just to mention this is not totally correct. Ensemble/IRIS does not need to be stopped to take a backup of dat files. There is an api that can be used to freeze and thaw disk activity during a backup. This is intended to be used with snapshot type backups though as the freeze duration is limited by memory available and DB activity.
refer to: Backup - external freeze

Hi,

using zf will always be difficult as IRIS is not running a root. You will need to configure the OS to allow privilege escalation for the irisusr, which open quite a big door.

Or allow irisusr to start/stop httpd, which might be the safer way.

The other options is, if this is only about the application via webgateway contacting the correct primary.

1. set web gateways to be mirror aware

2. configure a VIP address in the mirror and point the cspgateways to this ip address.

Hi Jennifer,

first things yes mirroring is supported in AWS and Azure. What is not working is the automatic VIP failover managed by IRIS. This is due to limitations imposed by the cloud providers, as you cannot dynamically add an IP address.

For this usually a loadbalancer is utelized, that queries a specific csp page on the mirror servers to decide which mirror is active and redirect the "VIP" accordingly.

Also depending on what access (application,xDBC) you need, you can deploy a load balanced array of web servers. These can host the webgateway, which in turn can be configured to be mirror aware and does no tneed a VIP to automatically failover.

Best Regards

Timo

Hi,

question is here how is that global being populated/created? Is this global defined by usage of a class inheriting from %Persistent?

If so, a fast way would be to be using %Extent to enumerate all instances and then look at the rowcount.

e.g.

set query = ##class(%SQL.Statement).%New()
set qStatus = query.%PrepareClassQuery("User.Person","Extent")
set rset=query.%Execute()
d rset.%Display()
zw %ROWCOUNT

So just looking at your SQL,. You got 2 parameters in your where clause.

Select IDName from MSDS_Common.ComponentSub

 Where 

    (is null or %UPPER(Component)[%UPPER(?))

    and Active=1

If the first dropdown is null this will always be true if Active is 1

Try changing the where clause to

 Where 

    (is null AND ( %UPPER(Component)[%UPPER(?))

    and Active=1

This will check if first parameter is empty and if subcomponent contains the second parameter and if its active.