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 · 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 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 · 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 · 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 · 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 · 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 · 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 · 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 · 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 · Jan 20, 2023 go to post

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

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 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 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 · 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 · 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

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 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 · 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 · 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 · Oct 28, 2022 go to post

I would open a WRC on that since it looks like a pure bug in the SQL compiler

Yaron Munz · Oct 26, 2022 go to post

I assume that you want to skip one (or more) indices for specific values.
You may use an "after" trigger to manually delete an index based on some of the properties.
For this approach, you will need to change this trigger, every time you add/change a property or an index.

Yaron Munz · Oct 11, 2022 go to post

@Jeffrey Drumm have you able to solve this ?

We are having the same problem.
We have the IRIS internal apache webserver configured to have HTTPS access, with self-signed certificate.
Connection to the SMP portal is working fine with HTTP and HTTP.
When we tried to "force" HTTPS only (by doing a HTTP->HTTPS redirect on apche level) we are not able to connect with VS-code: we get the same error: "unable to verify the first certificate".
We tried to uncheck the "Http: System Certificates" and "Http: Proxy Strict SSL" but this was not solving the problem.

Currently, the only workaround I see is to disable the redirection, but with this solution we will still having (even by mistake) HTTP traffic to the server, which we want to aviod.

Any idea ?

Yaron Munz · Oct 7, 2022 go to post

Usually, when using old VT100 sessions (CHUI) then there is a "main" function that can handle all special chars (e.g. PF1-4, ESC, HOME, CTRL-F) in one central place that is being called from all screens.

I would recommend using the following a technique:
Read *a Set zb=$zb,key=$key
Then, you may examine those variables zb and key to capture special keys.
 

Yaron Munz · Sep 28, 2022 go to post

On a given machine any process can run "as fast" as the CPU clock rate (higher = faster = more operations/sec.)

It is true that a single process can do approx. 15-20 MB/sec. (depends on the CPU clock rate & the disk type: SSD, Premium SSD, Nvme)

The best way to overcome this limitation is do to a "heavy I/O" processes in parallel using the queue manager.
On machines with 16/32 cores, you may achieve your "infrastructure limits" (160MB/sec) easily and even more (we managed to go to a 1000MB/sec of Nvme disks)

Yaron Munz · Sep 13, 2022 go to post

ClassMethod MinLength(As %String) As %Integer
{
i=1:1:$L(s," "){v($L($P(s," ",i)))=iQuit $O(v(""))
}
 

Yaron Munz · Sep 5, 2022 go to post

Yes, you have also journal files...  they keep all the changes (set, kills, start/end transactions) made to the DB (after actual write to the DBs) and also to be able to roll back transactions.

The write daemon and the WIJ file is more to keep DB physical "integrity" in case of a failure, and its before actual data is being written to the DBs

I see you are using windows. So just look at the windows "task manager" for the "active time" of the disk D:\ If you see that there are times that you hit the 100% "active time" then move the WIJ to a different disk. This will improve performance.