Yaron Munz · Nov 8, 2022 go to post

Hello Paul,

The compression is using "zstd" type of compression, comming from %occStream.inc 
The function that is used is: $System.Util.Compress(%data,"zstd")
 

Yaron Munz · Nov 30, 2022 go to post

I see that all your TLS/SSL configurations are Client type.
Usually, there is no need to point to the certificate, unless the "client will be asked to authenticate itself".
You should go into each of your configurations, to check if this option is enabled/used. If so, then you will have to update the: "File containing this client's certificate" with the new pem file

Yaron Munz · Dec 21, 2022 go to post

Hello,

I have done a CSP page that allows to measure timings. This shows that using a delimited string, is somehow "a slight" faster than using a list.

Running 10,000,000 iterations on the following code gives:
 

Set a=$LB(1,2,3) Set b=$LG(a,2) 1.214642 sec.
Set a="1_2_3" Set b=$P(a,"_",2) 1.1711362 sec.
Yaron Munz · Dec 30, 2022 go to post

Happy new year Udo.

And many thanks and wishes to all the great community members that makes this place one of the best to acquire and share Intersystems technology knowledge.  

Yaron Munz · Dec 30, 2022 go to post

Was the normal procedure done after the upgrade?
e.g. $system.OBJ.CompileAllNamespaces("cru")

Yaron Munz · Dec 30, 2022 go to post

Ephraim,

When you say "corrupted" to better understand...
- Did you try to mount the DB (from the SMP of with ^MOUNT)? Sometimes if IRIS/Cache was "forced" than a *.lck file on the DB folder need to be deleted in order to allow a successful mount. 
- If the DB is mounted, did you got a <DATABASE> (or other) error? if so, then what was said using ^Integrity and ^Repair could help - but only if you fully understand how to use those tools (!) Most of the time, a corrupted DB is fixable using those tools, or at least data can be 99% recovered. Depending on the number of errors: if its huge than sometimes it is faster to recover the DB from a valid backup + journal files. 

BTW - if this is a mirrored DB than there are other considerations as well. 

Happy new year!

Yaron Munz · Jan 10, 2023 go to post

Hello,

Basically, a namespace is a "logical" place that can have it's data from more than 1 database.

You have namespace1 binded to database1.
When you create a new namespace2 (binded to database2) and then create a "global mapping" for namespace2 to point for your specific globals from database1

Yaron Munz · Jan 19, 2023 go to post

Yes the arbiter was unable to communicate. It looks like a network issue.
I recommend you to open a WRC for that 

Yaron Munz · Jan 20, 2023 go to post

Class codeGolf.Pyramid
{

ClassMethod Build(As %Integer)
{
   i=1:1:s,($P(s," ",f-i+1),$P(c,"#",i*2))="" s,c,!
}

}

Yaron Munz · Jan 20, 2023 go to post

How exactly are you counting, Robert? to me it looks shorter than the previous one

Yaron Munz · Jan 25, 2023 go to post

90 min. to 1M records is very low.
It seems that the query is scanning at one of your big tables (Records maybe).
Do you have indices on: Records.qw and on Records.er
Consider to run the query in %parallel mode, after you optimize it.

Yaron Munz · Feb 10, 2023 go to post

Hello,

If the database that you copy/import routines is journaled, and changes to routines source (^ROUTINE) and compiled code (^rOBJ) will also exist in the journal files. There is also a ^rBACKUP but it is not relay holding old versions of routines (for this you will have to use wither studio-hooks or GIT) 

Yaron Munz · Feb 24, 2023 go to post

Very good article, Yuri.

Wonder when Intersystems will support AMQP protocol, to integrate seamlessly with ASB (Azure Service Bus)

Yaron Munz · Apr 25, 2023 go to post

if you encounter another situation that you cannot add a space before the # you can do:

<server>
W #($select($data(^ImportantFlag)#2:"Important!",1:"Normal"))#
</server>
Yaron Munz · Apr 28, 2023 go to post

all headers are stored in the %request.CgiEnvs("HTTP"_xxxxx)

You may do something like this in the OnPreHTTP method in your CSP page:

Kill ^yourGlobal
S a="" F { S a=$O(%request.CgiEnvs(a)) Q:a=""  If $E(a,1,4)="HTTP" Set ^yourGlobal(a)=%request.CgiEnvs(a) }
Yaron Munz · May 31, 2023 go to post

SQL adaptive mode s not avail. on 2022.1.2 but only on 2023.1 (right)

%SYS>s Status=##Class(Config.SQL).Get(.Properties)
%SYS>zw Properties
Properties("ANSIPrecedence")=1
Properties("AdaptiveMode")=1
... 
Properties("TimePrecision")=0

Yaron Munz · May 31, 2023 go to post

you need to have an object from the %Dictionary.CompiledClass not from "your" table/class. Then you will be able to access all those Methods, Triggers, Incidies and so on.

The code I gave is a working code, not a pseudo code.

Yaron Munz · Jun 6, 2023 go to post

I would check the following:

1. Check the %SYS.Task class with SQL but also do an Integrity check, to see if there are any errors on those globals that hold that task manager data.

2. if the "corrupted"/"copied" task (with $h=0) is the one that consume 100% of CPU, I would try to "re-schedule" it to see if the new "next date" is set to something else. If not, to delete (you don't need to re-create it, looks like 1001 is a copy of 1000)

3. Monitor the 100% CPU task (SMP or JOBEXAM) to try to understand at what commands it's "stuck" 

Yaron Munz · Jun 13, 2023 go to post

I started programming around $H=55000.
Found in old MSM languange refrence manual ver. 4.4 that:

$ZU(1) and $ZU(0) are same as $ZUCI(1) and will returns the external name "UCI,VOL" for the current UCI   

Yaron Munz · Jun 19, 2023 go to post

Which browser do you use? I noticed that in Edge the credentials box is not popped-up resulting an 401 error, so you need to work with "IE mode" (on chrome, it does pop-up).

Yaron Munz · Aug 22, 2023 go to post

Check the user "task2" permissions, maybe this user does not have permission to the audit databse?

Yaron Munz · Aug 24, 2023 go to post

I would recommend that in systems that the audit database is big or huge you stop IRIS and move that database to another disk. Then change in IRIS.CPF (Database section) the location for the audit database. 

Yaron Munz · Sep 7, 2023 go to post

Great workaround. I remember that I had a problem few years ago that the WebTerminal was unable to do:
ZLOAD routine ZPRINT
I did some (ugly, must say) changes in the broker to let this work
Does your wrapper is able to handle this as well? 

Yaron Munz · Sep 12, 2023 go to post

For a-sync mirror membwers, you could use the query:

Set result = ##class(%ResultSet).%New("SYS.Mirror:MemberStatusList")  

and then to iterate on result and do the necessary cheeks. 

Yaron Munz · Oct 26, 2023 go to post

Robert, 

WIJ is used to write data to the Db. WIJ holds the copy of Db blocks before they are written to the Db to allow to keep Db integrity (Cache checks if there are "dirty" blocks on WIJ when started, if so writtes them to the Dbs).

"cache buffers" are used to store blocks that were READ from the Db to aviod disk access for concurrent reads