#InterSystems IRIS

19 Followers · 5.6K Posts

InterSystems IRIS is a Complete Data Platform
InterSystems IRIS gives you everything you need to capture, share, understand, and act upon your organization’s most valuable asset – your data.
As a complete platform, InterSystems IRIS eliminates the need to integrate multiple development technologies. Applications require less code, fewer system resources, and less maintenance.

Article Eduard Lebedyuk · Dec 7, 2019 1m read

%objlasterror is a useful reference to the last error.

Every time $$$ERROR is called, %objlasterror is set to a result of this call.

It's important in cases where you want to convert exception to status:

Try {
   //  quality code
} Catch ex {
   Set sc = $g(%objlasterror, $$$OK)
   Set sc = $$$ADDSC(sc, ex.AsStatus())
}

Because AsStatus calls $$$ERROR under the wraps, the order is important, first you need to get %objlasterror and  convert exception after that.

8
3 1468
Article Sergey Mikhailenko · Jan 24, 2023 8m read

image

Introduction

There are many entities in IRIS which are extremely difficult to transfer to another system.They usually contain important system-stored objects: users, roles, privileges, mappings, and applications. The exception to this list is for resources, which are facilitated by the ability to select and save them from the management portal interface [System > Security Management > Resources] Yet, things are not as good with other system objects.

2
0 702
Question Stefan Cronje · Jan 25, 2023

Hi *,

I want to dynamically generate the arguments of a method during compile time.

'For example, I want the following method

ClassMethod DoCleverStuf() As %Status [ CodeMode = objectgenerator ]
{
    do %code.WriteLine("    Set tSC = $$$OK")
    ...
}

to look like this in the .int code.

ClassMethod DoCleverStuf(pValue1 As %Integer, pValue2 As %String) As %Status [ CodeMode = objectgenerator ]
{
    // some generated code will be here
}

Is this possible? Or alternativel;y, can I generate a whole method at compile time?

Thanks.

2
0 337
Question Mark Charlton · Jan 20, 2023

I've been trying for a while to come up with a set of tools to monitor the health of a mirror set and email a report nightly on the status of the mirror, or flag issues in real time.
Making sure that all the databases are caught up, that all the mirror members are online. 

I've tried a number of methods I've found to try to access the state of the mirror and mostly found they're internal or unsupported routes, (that when questioning WRC have swiftly been removed from the online documentation.).

2
0 528
Question Virat Sharma · Jan 23, 2023

Hi All,

I am a beginner in cache. I need to extract data from multiple tables (4-5) tables based on an SQL query . The data is more than 9 lakhs of records (i checked using count). The total number columns is 16. 

When I am running this SQL query through management portal, I am getting time out exception. Could you please suggest how I can retrieve those records. Which way will be good (Dynamic query using %SQL.Statement or Embedded SQL (not known to me) or Writing to a global will help or not).

4
0 486
InterSystems Official Fabiano Sanches · Jan 11, 2023

InterSystems announces another developer preview release, as part of the developer preview program for the 2022.3. Many updates and enhancements have been added in 2022.3 and there are also brand new capabilities, such as the new FHIR SQL Builder, improvements for Columnar Storage, and support to SUSE 15 SP4 and Oracle Linux 9. Some of these features or improvements may not be available in this current developer preview.

Future preview releases are expected to be updated biweekly and we will add features as they are ready.

8
0 404
Question Phillip Wu · Jan 21, 2023

Hi,

Is there a way of printing out information about IRIS.DAT file eg. database name?

The reason is that I've "refreshed" TEST system from LIVE system and I'm not sure I've the copied the correct file to the correct place

on the file tree. The file tree structure shows the database that IRIS.DAT represents. 

eg. /db/HMF/IRIS.DAT should be the HMF database

6
0 636
Question Stefan Cronje · Jan 22, 2023

Hi all,

I am trying to use some process private variables (percent variables) in Triggers.

I am referring to values from $System.Process, like the ClientIPAddress and CSPSessionID.
These do to not contain values and I suspect it is bacause of scope. I also checked, and the %session variable is not available if the change originated from a CSP request.
I know that in triggers the scope of the variables are to be kept local, that is why NEW is to be used.

Is there a way to access the Process Private Variables in Triggers or get $System.Process to return the correct values?

Thanks.

10
0 487
Question Token Ibragimov · Jan 23, 2023

Hello

i'm trying to read http json response from service. The response size res.HttpResponse.Data.Size = 19610854 

ClassMethod getData(pCode,pDate, pGlb) As %Status
{

    Do res.Get("TestService/getData?dateTo="_$ZDate(pDate,3))
    Set stat=res.HttpResponse.StatusCode
    Do res.HttpResponse.Data.Rewind() 
    Set httpResponse=res.HttpResponse.Data.Read(res.HttpResponse.Data.Size,.sc)
    Set dynObj = [].%FromJSON(httpResponse)
    Set iter = dynObj.Stmt.%GetIterator()
    While iter.%GetNext(.key, .
2
1 612
Question Phillip Wu · Jan 23, 2023

I want to refresh the TEST DB from LIVE.

On TESTTC02, I'm getting the error:
"Missing Mirrored Databases Report"

Questions.
1. What causes this problem?
2. How do I fix it?

Thanks for any help
=========================
This is the basic plan for the refresh:
DR copy IRIS.DAT files -> TESTTC01
TESTTC01 IRIS.DAT files -> TESTTC02

These are the details:
SMP=System Management Portal – the GUI web interface into IRIS admin
DRTC01=DR node of LIVE (async mirror)
TESTTC01=Primary member
TESTTC01=Backup member

This is what I did:
0. on TESTTC01 SMP, "Remove Mirror Configuration"
1. Copied IRIS.

2
0 416
Article Robert Cemper · Jan 23, 2023 2m read

Some technical background information

There is not just one class in this package:  rcc.gstream.cls but also rcc.gstreamT.cls

While rcc.gstream works with direct access to the stream globals, the *T version uses
a Process Private Global (PPG) as Temporary storage.
using  SELECT * FROM RCC.gstreamT WHERE RCC.useT('^jpgS')=1 and similar.

This might be an advantage for multiple access to the same stream in sequence,
The advantage is obvious: You have a personal snapshot in memory and no risk of
a conflict in access. This might be interesting if you work just on 1 specific stream.

0
0 348
Question Phillip Wu · Jan 19, 2023

I have the following servers in IRIS mirror set:
Arbiter; isc_agent only
LIVETC01; IRIS DB full install; Primary
LIVETC02; IRIS DB full install; Backup

A couple of days ago IRIS hung.
The application using LIVETC01 DB stopped functioning.

I'm trying to find out the sequence of events leading up to the failure.

I see these entries in the log:
Arbiter:
2023-01-17T15:54:56 ISCAgent: Arbiter client error: Message read failed.
2023-01-17T15:54:56 ISCAgent: Completed serving application: ISC1ARBITER
2023-01-17T15:54:56 ISCAgent: Arbiter client error: Message read failed.

2
0 458
Question Eduard Lebedyuk · Jan 19, 2023

I have a production with one Business Host - a Business Service which I need to scale automatically to consume ~80% of CPU time.
Business Service pulls data from a (non-FIFO) queue so that I can adjust pool size without any issues.

So far, I'm planning a different BS running every X seconds and sampling CPU with $system.Process.GetCPUTime() and scaling the pool size of the main BS up/down based on that metric.

Has anyone tried something similar? Any advice/code samples would be appreciated.

6
0 353
Article Yuri Marx · Jan 9, 2023 7m read

Applications that work with bill payments and receipts, as well as the delivery and inventory of items, generally require the use of barcodes or QR Codes. The latter is used in even broader scenarios since the QR Code can store more information than a simple bar code. Thus, it is important to have the ability to generate barcodes and QR Codes or read the data stored in them from an image or a PDF. This article will show you how to do this using Python and some of its free libraries.

1
2 1804
Question Norman W. Freeman · Jan 19, 2023

I have noticed that the way the nodes are ordered is different between 2 different environments.

If I create the following global :

set^TEMP("Z")=1set^TEMP("Ä")=1

Then I dump it with zwrite, I get this (which is expected):

^TEMP("Z")=1^TEMP("Ä")=1

However, on another machine, it gives me this :

^TEMP("Ä")=1^TEMP("Z")=1

The same goes for the following command (which return 0 or 1, depending environment) : 

write"Z"]]"Ä"

Both are running Windows 10, but one is running IRIS 2021.1, the other CACHE 2017.2.2.

I don't think that's the reason, maybe there's something else (a configuration in Portal).

5
0 314
Question Davi Massaru Teixeira Muta · Dec 13, 2022

HI ! I'm working on a caché upgrade to IRIS.

in some abstration cls classes, to get a property was used $METHOD(..Obj, propertyName_"Get").
On Caché 2018,  had as a return property value, if the property does not exists, an exception of type <PROPERTY DOES NOT EXIST> throwed

Now, on IRIS 2022.1,  will always be throwed an exception of type "<METHOD DOES NOT EXIST>".

I can change  $METHOD  to  $PROPERTY, but as it is an abstract class, I cannot guarantee the type of the referenced Object, if the property is encapsulated or private, I need call $METHOD(.

8
1 505
InterSystems Official Fabiano Sanches · Jan 18, 2023

InterSystems is pleased to announce that the extended maintenance releases of InterSystems IRIS, InterSystems IRIS for Health, and HealthShare Health Connect 2022.1.2 are now available. These releases provide a few selected features and bug fixes for the 2022.1.0 and 2022.1.1 releases.

You can find additional information about what has changed on these pages:

Please share your feedback through the Developer Community so we can build a better product together.

0
0 301
Question Oliver Wilms · Nov 23, 2022

My team works on implementing an Interoperability solution utilizing InterSystems Kubernetes Operator on Red Hat OpenShift container platform. 

We are trying to determine how many messages we can process in any given time. We have a Feeder app running in 10 containers sending 50k messages each to a load balancer all beginning at the same time.

Messages are received via HTTPS protocol by webgateway containers. 

Interoperability production runs in compute pods with persistent data, journals, and WIJ volumes.

We implemented Horizontal Pod Autoscaler to scale compute pods when CPU utilization is high.

1
1 515
Question Ephraim Malane · Jan 17, 2023

Hi Community,

I have created Tier 1 CCR and when I move it to Live it shows the below error.

I initially had changes deployed through a different CCR to the TEST environment and were not deployed to LIVE for the same class.

I tried to cancel it so that I can move these latest changes but I still get the below message.

1
0 177