Timo Lindenschmid · Dec 15, 2023 go to post

No t100% sure what you are after but if you just want to generalize the if then something like this will do:

set key1=1set key2=2if ($piece($get(^global(@key1,@key2)),"*",2)=c) { quit }
Timo Lindenschmid · Dec 8, 2023 go to post

How, did this instance get installed?
During IRIS install you get asked if you want to add ML components or not as this increases the disc size required.

Best Regards
Timo

Timo Lindenschmid · Nov 30, 2023 go to post

Hi Rochdi,

this might be the local firewall on the server blocking it. Also ensure th eport you are trying to use is not in use by something else.

Best regards
Timo

Timo Lindenschmid · Nov 6, 2023 go to post

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

Timo Lindenschmid · Oct 20, 2023 go to post

Hi Scott,

IRIS requires at least one enabled user with the role %All (e.g. superuser)

If you got one enabled there is no dependency on the installer user to be enabled. Actually, its good practise to disable that user.

Best Regards

Timo

Timo Lindenschmid · Sep 8, 2023 go to post

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.

Timo Lindenschmid · Aug 21, 2023 go to post

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

Timo Lindenschmid · Aug 8, 2023 go to post

Hi,
the issue is with your 2nd method return values. You have defined the method to return %String which is fine.

But then at the end you quit $$$OK, which translates to a return value of 1.
You need to build your return string e.g.

set retVal="some string:"_variableExample

return retVal
 

Timo Lindenschmid · Aug 8, 2023 go to post

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
Timo Lindenschmid · Aug 1, 2023 go to post

most of the solutions don't cater for the ")(" case being not valid

here is mine size 92

ClassMethod IsValid(sAs%String) As%Boolean
{
 sr=1 f {s c=$e(s,$i(i)) q:c=""  d:c="("$i(r)  d:c=")"$i(r,-1) q:r<1} ret $s(r=1:1,1:0)
}
Timo Lindenschmid · Jul 4, 2023 go to post

40

ClassMethod Check(word As%String) As%Boolean {

 ret '$match($ZCVT(word,"U"),"(.).*\1.*")

}

or 39 using $$$UPPER

ClassMethod Check(word As%String) As%Boolean {

 ret '$match($$$UPPER(word),"(.).*\1.*")

}
Timo Lindenschmid · Jul 3, 2023 go to post

As per Jeffrey latest ISC studio should work fine. Also it might be the time to start the discussion for the move from Cache2017 to IRIS. With IRIS you will also get other IDE options like VSCode. 

Timo Lindenschmid · Jun 1, 2023 go to post

Is this backup planned to be done once daily? continuously?

if it once daily, the easiest way would be find the storage global you class is saved in then e.g. ^MyClass.CurrentTableD

and copy that into another backup global e.g m ^BackupGlob($H,"BackedUpData")= ^MyClass.CurrentTableD 

Timo Lindenschmid · May 23, 2023 go to post

Hi Pietro,

i don't have a cloning tool yet. Usually i export the "template" task, then modify the xml a needed and reimport.

Cheers

Timo

Timo Lindenschmid · Apr 5, 2023 go to post

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.

Timo Lindenschmid · Mar 27, 2023 go to post

Ben is correct. 

Apply saves the current state and Update saves and continues the workflow/returns you to the previous screen.

Timo Lindenschmid · Mar 20, 2023 go to post

as an alternative you could use to standard traceroute 

 traceroute -n -T -m 5 -q 1 -p 80 hostname.local

-p portnumber

-T use TCP syn for connects

-m max TTL to test

If it succeeds it will return all IPs if the IP is not reachable it will only report *.
If the port is blocked it will return somethink like

 1  192.168.1.198  0.411 ms !X

Where !X means admin prohibited.

Timo Lindenschmid · Mar 20, 2023 go to post

Hi,

without understanding what workload the job is doing its nearly impossible to suggest best approach.

You could try to reduce the priory of the jobbed process.

d %SYSTEM.Util.SetPrio("-1")  //reduced prio of current process by one

Timo Lindenschmid · Mar 8, 2023 go to post

Hi,

if you make some assumptions

1. numbers are always enclosed in curved brackets

2. you want to always return string starting with REASON

this could be as easy as just:

set mystring="REASON->Blood(1.23)"

w "REASON"_$extract(mystring,$find(mystring,"(")-1,*)

or if you really want to use regex:

IRISHEALTH:USER>set mystring="REASON->Blood(1.23)"
IRISHEALTH:USER>set regex=##class(%Regex.Matcher).%New("^([A-Z]*)->.*(\([0-9]*.[0-9]*\))",mystring)
IRISHEALTH:USER>zw regex.Locate()                                               1
IRISHEALTH:USER>zw regex.Group(1)
"REASON"
 IRISHEALTH:USER>zw regex.Group(2)
"(1.23)"
Timo Lindenschmid · Mar 3, 2023 go to post

Actually just thinking the IRIS contained ALPHAUP function converts to string by prefixing a " " (space) to force %String not suffixing

Timo Lindenschmid · Mar 3, 2023 go to post

Hi Pietro,

if you got access try doing a BaselineExport using %Studio.SourceControl.ISC:BaselineExport

Timo Lindenschmid · Mar 3, 2023 go to post

The entrypoints of ZMIRROR are called during the mirror failover process. E.g. if the backup mirror has successfully taken over all roles and now has become primary the relevant entrypoint (not sure but something like HasBecomePrimary^ZMIRROR) is being called. So code added to that entrypoint will be executed at that time .

ZMIRROR cannot be used for monitoring purposes only to execute actions during a failover process.

Timo Lindenschmid · Mar 3, 2023 go to post

This is NOT correct a VIP is not needed for a failover mirror even with ASYNC DR.

Any Async Mirror will know of all mirror nodes and try both failover mirror members if it cannot connect to the primary automatically. For this it uses the superserver IP configured on the mirror setup or the private mirror IP if it is able to access it. 

A VIP is only needed for application that are not mirror aware.

Even the current web/csp gateway can be configured to be mirror aware.

Timo Lindenschmid · Mar 3, 2023 go to post

Agreed contact WRC on this and get your messages log from Primary and backup (from during the outage) reviewed. This sounds like a full loss of connectivity or just a hunch are both mirror members backed up at the same time and does this coincide with the outage?