Eduard Lebedyuk · Aug 13, 2022 go to post

Can skip $Job, leaving just:

Do $System.Process.Terminate(,<desired error code>)

it would terminate the current job.

Question: are you using the error code? I'm always exiting with error code 1 in case of any errors, but is there an advantage in using some custom error codes here?

Eduard Lebedyuk · Aug 12, 2022 go to post

Say you have this string:

1111111111:authoredOn=ge2022-01-10:authoredOn=le2022-01-13

How do you want to slice it:

authoredOn=ge2022-01-10

authoredOn=le2022-01-13

what's 1111111111 doing there?

Something like this should work:

set str = "1111111111:authoredOn=ge2022-01-10:authoredOn=le2022-01-13"
set str = $lfs(str, ":")
for i=1:1:$ll(str) {
	set param = $lg(str,i)
	if $l(param,"=")=2 {
		set key = $p(param,"=",1)
		set value = $p(param,"=",2)
		set params(key, $i(params(key)))=value
	}
}
zw params
Eduard Lebedyuk · Aug 11, 2022 go to post

Thanks, Ben!

%XML.Exchange.Adaptor sounds great.

And you're right, I'm mainly talking about the easiest scenario where there is no id/data drift. There are certainly trickier situations, where unique identifiers are required.

Eduard Lebedyuk · Aug 11, 2022 go to post

Component status

Use Ens.Director to get enabled/disabled and status:

set enabled = ##class(Ens.Director).IsItemEnabled(bh, .status)

Queue depth

SELECT 
  Name, 
  Count, 
  Created, 
  Active
FROM EnsPortal.Queues_EnumerateQueues()

Last activity date

Do you see it in SMP somewhere?

Eduard Lebedyuk · Aug 10, 2022 go to post

I would start by observing the output of these two commands when run from a Dockerfile:
 

set sc = ##class(Ens.Director).SetAutoStart("GOJ.IrisApp.ProductionDev")
write $system.Status.GetErrorText(sc)
set sc = ##class(Ens.Director).StartProduction("GOJ.IrisApp.ProductionDev")
write $system.Status.GetErrorText(sc)
Eduard Lebedyuk · Aug 9, 2022 go to post

HS.SDA3.Container is a registered object and not a persistent one, so you can't pass it directly.

What you can do, however, is to pass existing stream id in your request, this way stream is not copied twice (you only pass an id) and receiver then can recreate the same HS.SDA3.Container from a stream.

Eduard Lebedyuk · Aug 4, 2022 go to post

For this type of data, you can make your own indexes for different parts and/or combinations of them: a separate date, a separate time, a separate year, a separate year and month, etc.

Could you elaborate on that, please?

Eduard Lebedyuk · Aug 3, 2022 go to post

That's a different connection (connection to remote gateway server), rather that a license/csp connection.

Check that %Java Server External Language Server can start. In your case it does not start.

We wait for 60 seconds because it can take a while for External Language Server to start - it can be on another server for example.

Calling @Benjamin De Boe.

Eduard Lebedyuk · Aug 2, 2022 go to post

Yes? Cubes need space to store thier copy of the facts and CPU is needed to build it all.

As I said above, using async reporting mirror for cubes would completely remove the impact on the patient index.

Eduard Lebedyuk · Jul 25, 2022 go to post

Yeah, the process had 64,5 Gb of virtual memory allocated and 40Gb actually used.

Not surprised OOM killed that.

Eduard Lebedyuk · Jul 25, 2022 go to post

That's InterSystems IRIS logs. You need OS logs, namely syslog (check /var/log/syslog or /var/log/messages). Search for log entries about the "killed process" around the time your process was killed.

To be extra sure run write $job before calling the query to get process id. It should match the id of a killed process.

After you establish that your process was killed by OOM you need to report that to WRC, as a fix probably requires if not access, then at least overview of the production configuration which causes it.

Eduard Lebedyuk · Jul 25, 2022 go to post

Let's see how much time does it take to run in a non web context. There would be no timeouts in that case.

Could you please run this in your interoperability namespace:

set start=$h,rs=##class(Ens.InterfaceMaps.Utils).EnumeratePathsFunc(),end=$h
write "Time in seconds: ", $p(end, ",", 2)-$p(start, ",", 2)

If you run the query in SMP with parameters set them here too. EnumeratePaths query docs.

Also after you obtain the result set, you can output it to a terminal using %Display method, or to a file using %DisplayFormatted method.

Eduard Lebedyuk · Jul 25, 2022 go to post

It's a windows box issue, not InterSystems IRIS issue. I've seen a few, easiest solution is to delete localised DLLs, which would make all text English. Not perfect, but better than the gibberish.

Eduard Lebedyuk · Jul 25, 2022 go to post

In your Business Service settings set ClassName to pacIPM.reqICNARC and ElementName to ADMISSION.

I think you set only ClassName and did not set ElementName. In that case interoperability tries to match root object - ICNARC in your case to pacIPM.reqICNARC, and it fails because pacIPM.reqICNARC class does not have ADMISSION property.