Vic Sun · Jun 21, 2021 go to post

Hello Rob,

Which part of this are you having trouble with? If the files are local you can set up a file service and point it to your SFTP operations. There are built-in HL7 classes that you can use for this (in HealthShare Unified Care Record, Health Connect, and IRIS for Health).

For picking files up hourly, here are some possibilities. 

https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=ECONFIG_reusable#ECONFIG_settings_sched_strings_limits

"You can configure your business service to use an inbound adapter with the implemented OnTask() method where you call the business service. InterSystems IRIS provides classes for many types of inbound adapters. See the Ens.InboundAdapterOpens in a new window entry in the Class Reference and the books in the Application Development: Using Adapters and Gateways in Productions set for details.

If you do not want to use an adapter, you can call the business service programmatically and schedule it to run using the System Operations > Task Manager page in the Management Portal. This gives you finer control in situations such as the system being down at 1:00 a.m.

The recommended approach is to configure the business service with Pool Size = 0 and then use the Task Manager to launch a task that calls CreateBusinessService() on it and invokes ProcessInput() on the resulting service instance object. The advantage of calling a business service this way is that you call it at the time you want and it runs only once. If InterSystems IRIS happens to be down at that time, your task can register an error."

Vic Sun · Jun 10, 2021 go to post

Hello Rahul - I didn't see your new post yet but this message is pretty clear. The problem is at the OS level in resolving the hostname, scsps2391082001. If you replace the hostname in your URL with the actual IP of your server, it should work fine. If you want the hostname to work, I'd work with your OS/networking team to set that up.

Vic Sun · Jun 10, 2021 go to post

Hello Rahul,

I'd check your messages.log to see messages regarding the private webserver. Then I'd check the OS to see if anything is holding your configured web server port.

This could be worth a new post, or contacting the WRC.

Vic Sun · Jun 9, 2021 go to post

To elaborate a bit more on this and add to the other comments - when you restarted Caché the contents of cachetemp are cleared out, so you won't be able to find out what was in there anymore. It would have been good to investigate prior to restarting, but now there's no direct record of what was in the database, unless you can determine indirectly what was happening on the DR to cause this.

Though the database is empty on startup, the database size on the OS level won't have changed. Cachetemp doesn't automatically truncate because once it expands to a certain size, it doesn't know if it will need to expand to that size again. To enforce what you think the appropriate size for cachetemp would be based on your environment, as Dmitry says, you can delete it to have it be recreated and reexpanded as necessary.

There is also a cpf parameter that limits cachetemp size at startup, MaxCacheTempSizeAtStart:

https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=RCPF_MaxCacheTempSizeAtStart

Vic Sun · Jun 8, 2021 go to post

Hello Mike,

I don't have a sample for scripting it, but if you haven't seen it already, the IRIS server migration guide contains a list of items and methods for exporting them. I think it's a good reference for keeping in mind the things you might want to bring over.

https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=AMIG

Also, I might agree with Armin that doing a multi-stage upgrade could be easier - perhaps you've already identified a reason why it won't work for you though.

Vic Sun · Jun 8, 2021 go to post

Hello Dustin,

You could try SFTP debugging in terminal (I also linked this in your other post):

https://community.intersystems.com/post/using-and-debugging-netsshsession-ssh-connections

I kind of suspect this may be a permissions issue on the target system; since you're placing the file, it shouldn't need to exist before it gets "Put". It is a bit weird that the file extension is written twice but I don't think that is a problem; can you see anywhere in your configuration (file path / name) that may be triggering that?

Vic Sun · Jun 8, 2021 go to post

Hello Dustin,

There are a few things you can try to find out more about this.

1. Making an SFTP connection in terminal so you add additional debugging - https://community.intersystems.com/post/using-and-debugging-netsshsession-ssh-connections

2. Trying a different SFTP client - this will help identify if there's a problem connecting between the servers (network / firewall change, for example). If no SFTP client works, then you likely want to involve your network team / the downstream's network team (or potentially security team, different orgs might label the relevant party differently).

3. If the SFTP connection was working earlier, but nothing was changed in Ensemble, then it seems pretty apparent that something changed outside of Ensemble. You could see when the problem started and ask around internally / externally to see what might have changed.

Vic Sun · Jun 7, 2021 go to post

Hello Nikhil,

What problem are you trying to solve or what exactly are you trying to do? See the below docs:

"The maximum length of a subscript is 511 encoded bytes (the corresponding number of characters depends on the characters in the subscript and the current locale)"

https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=GCOS_variables#GCOS_variables_subscripts

Maximum Length of a Global Reference

You can use $length to get the length of a string, but depending on what you want to do, that may determine how you can get the value of the subscript.

https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=RSQL_d_length

Vic Sun · Jun 2, 2021 go to post

Jen,

Perhaps more details would be helpful, and you may want to reach out to the WRC or your InterSystems rep to discuss. My thought is that this might be a matter of setting up the server-side to require TLS (as covered by the documentation linked in the article).
"System-wide Security Parameters page (System Administration > Security > System Security > System-wide Security Parameters) > Superserver SSL/TLS Support"

Vic Sun · Jun 2, 2021 go to post

Hello Jennifer, if you make (and place) the SSLDefs.ini file then it will be used for client connections that match the specified host/port.

I'm not sure I understand your second question, however; is there a reason you would not be able to create the config file? I don't know of an alternative.

Vic Sun · May 27, 2021 go to post

Maybe this is a silly suggestion, but if you have a test environment you could try removing sections of code until you find the one that, when removed, causes that line to disappear. I'm sure there's a cleaner way to do this, but if you don't see it in the code, that's what comes to mind.

Vic Sun · May 27, 2021 go to post

I was asking if it was a BPL or a router, mainly. Looks like a BPL. I think it would definitely take some looking at the code to figure out where the connection's coming from. I think if you looked at the class in Studio you could probably try to find in files to see where the reference is, might be easier than looking through the BPL in the portal.

Vic Sun · May 27, 2021 go to post

Hello Dustin,

What kind of business process is it? Can you attach some screenshots of what it is doing?

Vic Sun · May 27, 2021 go to post

Hello Wenjie,

^oddPROC is an internal global with metadata for your BAIYAOJIREQUEST class (I think in your custom Ensemble.Ens package, not sure exactly how the characters translate). I think for this issue you may want to reach out to InterSystems support so they can look into what may have happened to "corrupt" that global and look into solutions. Do you have any ideas of whether something unusual might have happened to that class?

Vic Sun · May 27, 2021 go to post

Hello Kathy,

This would be an installer/OS level issue so not something that SQL could help with. Do you still have the install kit and can you try to use that to uninstall? If you check the Windows event log do you see any errors from your first (or subsequent) uninstall attempts?

Can you check if there are any pending installation/uninstalls? Perhaps you could try restarting the server and then trying to uninstall?

Out of curiosity, have there been other instances installed/uninstalled on the same server?

Vic Sun · May 26, 2021 go to post

Hello Matthew,

Out of curiosity, what are some examples of things that you don't want shared within one instance?

I'm not sure about the per-instance overhead, I don't know how common of a scenario that is, so you may want to test it out. With multiple instances, you would have multiple write/journal daemons. I wonder if your current setup benefits from the shared buffer pool, or if your separate namespaces are handling totally different sets of data.

Re: the memory split, I think that depends on how much activity you're running through each instance. If you think they'll all need the same amount of memory, an even split might be fine.

Is there any consideration to splitting out to separate servers? It sounds like isolation/granularity are some of the things you are looking for, and separate servers would help with that.

Vic Sun · May 26, 2021 go to post

Is this what you mean by Rose? It's not a technology I'm familiar with, but from this page and your description it sounds like an HA cluster with shared storage:

https://www.rosedata.com/index_en.php/Prodetail/index/proid/1

Do you have any specific questions about this setup?

Can you provide more detail on what kind of disaster events you are looking to handle? What is your desired behavior? Basically, I would suggest thinking about different disaster scenarios and how this environment would react.

Failover Strategies for High Availability

Here are the docs regarding different HA strategies including HA clustering and mirroring. The main point they highlight for a HA cluster with shared storage is that the disk then becomes a single point of failure. Adding a mirror instance on separate hardware provides an option if your RoseHA disk fails.

Vic Sun · May 25, 2021 go to post

@wenjie zhao 

If I'm interpreting your question (and its translation) correctly, it sounds like you will have multiple mirror members on the same disk array. Is this a mirror member in the same mirror or different?

If the same, I think part of the value of a mirror is that you can failover if a problem happens to a piece of hardware, for example. If both mirrors are running on one disk array, if that disk array has a problem, you can't really failover.

If a separate mirror, then you could have two separate mirrors failing over if your 1 disk array has a problem - if that's acceptable to you, I don't necessarily see a problem.

Realistically, it's hard to provide advice without knowing exactly the architecture you are considering and the types of problems you want to be prepared for. I'd refer back to my initial reply, which is that I'd think about mirroring as I would any other HA architecture and think about what will happen if single items fail - generally, I think you would want your HA to be able to work around a single piece failing.

Vic Sun · May 24, 2021 go to post

Hello Wenjie,

Google translate wasn't able to help me understand the infrastructure you are suggesting. Perhaps a diagram would be helpful.

Mirroring can be used as part of a highly available architecture, but if you have concerns I would look at what your single points of failure are. 

Vic Sun · May 18, 2021 go to post

Great analogy Nigel, thanks for sharing a fun modern-day Aesop's fable!

Vic Sun · May 18, 2021 go to post

Great! This was an interesting topic and I'm sure one that will help future viewers of the community.

Vic Sun · May 18, 2021 go to post

Hey Matthew,

No technical suggestions from me, but I would say that there are pros/cons to file / global streams which have been covered quite well by the other commenters. For the performance concern in particular, it is difficult to compare different environments and use patterns. It might be helpful to test using file / global streams and see how the performance for your expected stream usage, combined with your system activity, plays into your decision to go with one or the other.

Vic Sun · May 17, 2021 go to post

Hello Nikhil,

There are a variety of learning resources for Caché / IRIS / ObjectScript.

From InterSystems documentation: ObjectScript Tutorial

Also linked in the top bar of the developer community, the InterSystems learning portal has many videos/courses: Learning.intersystems.com