Enrico Parisi · May 21, 2024 go to post

Do you need to join/merge resources or entries?

Your manual merged json is a mix of merging resources and entries.

The resource with "id": "35043996"  is merged in the first entry of response1, the rest are merged as additional entries of response1.

response 1 has 1 entry
response2 has 7 entries
merged json has 7 entries

What's the required logic?

Enrico Parisi · May 17, 2024 go to post

We had this same issue (missing support for SNI) long time ago, I think using healthshare based on cache version 2015.2.

I'm afraid you need to add this to the (possibly very long) list of good reasons to upgrade.

Enrico Parisi · May 17, 2024 go to post

Please note that is not needed (at all!) that the file should exists, look at my code sample where c:\temp\streamtest.txt did not existed and is created.

Enrico Parisi · May 17, 2024 go to post

In %Stream.* classes setting the Filename property corresponds to calling the LinkToFile() method (see FilenameSet() method).
From LinkToFile() documentation:

The method as its name suggests creates a LINK to an EXISTING file.
....
Also note that if there is currently some temporary data in the old stream when the LinkToFile is called this temporary data will be removed before the stream is linked to this filename.

I think you have two options:

  1. set Filename BEFORE writing to the stream
  2. when you need to save a stream to a specific file, create a new file stream and use CopyFrom() method to copy existing data

For option 2 here is a sample (using %Stream.TmpBinary for the temporary stream):

set tStream = ##class(%Stream.TmpBinary).%New()
do tStream.Write("whatever stream contains")
set finalStream = ##class(%Stream.FileBinary).%New()
set finalStream.Filename="c:\temp\streamtest.txt"do finalStream.CopyFrom(tStream)
write finalStream.%Save(),!
Enrico Parisi · May 17, 2024 go to post

Can you please post a sample code of what you are doing?

In general, setting the Filename property or using LinkToFile allow you to specify where your stream is stored. And it does work, therefore without the code you use it's hard to guess where your issue is.

Enrico Parisi · May 16, 2024 go to post

I noticed that some of the functions in your system are not IRIS built-in function but, evidently, are custom functions implemented in your system, as documented here.

To search and find the class and code that implement this functions you may search classes that extends the Ens.Rule.FunctionSet class using the class reference in your system/server, not in the documentation website.

Enrico Parisi · May 13, 2024 go to post

In order to use LOAD DATA you need to check that the Java external language gateway is properly configured and working.

Enrico Parisi · May 11, 2024 go to post

I'd implement a custom datatype, something like:

Class Community.dt.IntJSON Extends%Integer
{

Parameter JSONTYPE = "string";ClassMethod JSONToLogical(%valAs%String) As%Integer [ CodeMode = expression, ServerOnly = 1 ]
{
..DisplayToLogical(%val)
}

ClassMethod LogicalToJSON(%valAs%Integer) As%String [ CodeMode = expression, ServerOnly = 1 ]
{
..LogicalToDisplay(%val)
}

}

Then in your class:

Class Community.json.TestDT Extends (%RegisteredObject, %JSON.Adaptor)
{

Property something As Community.dt.IntJSON(DISPLAYLIST = ",OK,Error,Warning", VALUELIST = ",0,1,2") [ InitialExpression = 0 ];ClassMethod RunMe()
{
      set obj = ..%New()
      set obj.something = 2do obj.%JSONExportToString(.string)
      write"JSON : " _ string,!

      write"Content  : " _ ..somethingLogicalToDisplay(obj.something),!!

      set obj2=..%New()
      do obj2.%JSONImport(string)
      write"Imported something value: ",obj2.something,!
}

}

Result:

EPTEST>d ##class(Community.json.TestDT).RunMe()
JSON : {"something":"Warning"}
Content  : Warning
 
Imported something value: 2
Enrico Parisi · May 8, 2024 go to post

I manage systems that use IIS since more than 15 years and never experienced performance issues.

For a code that takes 15ms having service/call that takes 40ms total round trip to me is way too much (that's 25ms overhead !!).
We have SOAP services that respond in 10ms (local subnet, round trip measured from the caller/client).

I don't recall any special configuration in IIS.

What's the configuration of the Web/CSP Gateway?

Enrico Parisi · May 7, 2024 go to post

@Shane Nowack , in the first table in your post, in the left column/list this two items:

SQL Best Practices Doc
Best Practices for Defining SQL Optimized Tables Through Persistent Classes

both link the same documentation page, is this correct or maybe one link is not correct?

Enrico Parisi · May 3, 2024 go to post

In all set actions remove k1 from the Key (last column in the screenshot) and put "" (not empty) instead (that's the default when you insert a set action).

Then try again.

Enrico Parisi · May 2, 2024 go to post

What's the version of the "source" system?

Try using the button "Import Legacy" instead of "Import".

Enrico Parisi · May 2, 2024 go to post

Compact & Truncate are there EXACTLY to perform what you want/need, no other option.

If want to speed it up, start compacting with "little" space tio free up at the end, then truncate to free disk space and gain some time, then repeat...etc.

Enrico Parisi · Apr 29, 2024 go to post

Just guessing, please check this documentation:

About Creating a Custom CSP Login Page

And in particular the first step:

Ensure that the Web Gateway user (CSPSystem) has permissions to read the database for where the custom login page is located. Assign the desired database resource to an appropriate role, and then assign that role to the CSPSystem user.

Enrico Parisi · Apr 29, 2024 go to post

I suspect that's too small, but there are MANY missing details to consider and I might be wrong.

gmheap documentation is here.

Note that for new installation the value is 0 (zero), in that case:

the system will configure the size of gmheap to be 3% of the total memory configured for global buffers. The minimum gmheap will be configured to is 307,200 KB (300 MB) and the maximum is 2,097,000 KB (2 GB)

So, your gmheap is about 1/3 of current default.

Enrico Parisi · Apr 29, 2024 go to post

Beware that $System.SQL.Schema.SetDefault() sets the default schema (optionally) for a namespace systemwide, that is, for all processes, not only current process.

Enrico Parisi · Apr 28, 2024 go to post

It seems that in your system the routine ST.int is missing, can you check if it's in the %SYS namespace?

ST.int is part of Ensemble, it should be there but apparently is not (has been deleted?).

Enrico Parisi · Apr 27, 2024 go to post

Just curious, what's the value of gmheap?
You can find it in iris.cpf or in Management Portal, System Administration > Configuration > Additional Settings > Advanced Memory

Enrico Parisi · Apr 27, 2024 go to post

If you select the option you have highlighted, then CSP Gateway will not be installed, if you don't change it, then it will be installed.
What option do you use when you install? (first dialog)

However, is this a new fresh install or an upgrade of an existing Ensemble instance?

Enrico Parisi · Apr 26, 2024 go to post

It's long time I don't install Ensemble 2018, why are you still using Ensemble and not IRIS?

I just tested installing Ensemble 2018 and CSP Gateway is properly installed and configured.

When the setup kit is run the first dialog is:

Do you get the same dialog? What option you choose?
As you can see it is also possible to install only the CSP Gateway component.

If you choose Custom then this dialog is displayed:

As you can see the option to install CSP Gateway for IIS is there.

If I proceed to the install, at the end I have the CSP Gateway properly configured in C:\inetpub\CSPGateway

In order to help you, apart from saying that is not being installed, can you provide some information on what you are actually doing and what do you actually see/get during install?

Enrico Parisi · Apr 24, 2024 go to post

I think you need to enable/allow Unauthenticated access for Web Applications.

I can see that in Web Application configuration in "Allowed Authentication Methods" the option "Unauthenticated" is not available, this means is not enabled/allowed systemwide.

In Management Portal check System Administration > Security > System Security > Authentication/Web Session Options, and see if "Allow Unauthenticated access" (first option/checkbox) is enabled.

After that, enable the option "Unauthenticated" in the "Allowed Authentication Methods" of the Web Application.

Enrico Parisi · Apr 23, 2024 go to post

Only Client application is Bit 3 only, so in binary:

1000 = 8 decimal

Pass 8 as Type parameter.

Enrico Parisi · Apr 23, 2024 go to post

There is also SYS.Stats.Dashboard class, again, I'm not sure it was in 2014 as well.

This class provides an overview of the system "health", with all of the critical metrics and statuses gathered as properties in one class. It essentially contains all of the data that's available on the Dashboard in the System Management Portal. Each property is a different metric or status.

Enrico Parisi · Apr 23, 2024 go to post

On the other hand, are you sure that your method is that same that WRITE uses to interrogate the environment ?

Why should I care? Why do you care?