In this article, we’ll build a highly available IRIS configuration using Kubernetes Deployments with distributed persistent storage instead of the “traditional” IRIS mirror pair. This deployment would be able to tolerate infrastructure-related failures, such as node, storage and Availability Zone failures. The described approach greatly reduces the complexity of the deployment at the expense of slightly extended RTO.
In this series of articles, I'd like to present and discuss several possible approaches toward software development with InterSystems technologies and GitLab. I will cover such topics as:
- Git 101
- Git flow (development process)
- GitLab installation
- GitLab Workflow
- Continuous Delivery
- GitLab installation and configuration
- GitLab CI/CD
- Why containers?
- Containers infrastructure
- GitLab CI/CD using containers
In the first article, we covered Git basics, why a high-level understanding of Git concepts is important for modern software development, and how Git can be used to develop software.
In the second article, we covered GitLab Workflow - a complete software life cycle process and Continuous Delivery.
In the third article, we covered GitLab installation and configuration and connecting your environments to GitLab
In the fourth article, we wrote a CD configuration.
In the fifth article, we talked about containers and how (and why) they can be used.
In this article let's discuss main components you'll need to run a continuous delivery pipeline with containers and how they all work together.
When calling out to web services there are several settings of the Business Operation that play together in controlling what will happen when a response is not returned in the desired time.
Hi All,
We are doing capacity planning. I want to track the number of rows and size of each table (or at least the top ~10). Any ideas?
Thanks
One useful feature of our REST framework is the ability for a dispatch class to identify request prefixes and forward them to another dispatch class. This approach of modularizing your URL map will improve code readability, enable you to easily maintain separate versions of an interface, and provide a means to protect API calls that only certain users will be allowed to access.
Overview
To set up a REST Service on your Caché instance, you need to define a dedicated CSP application and create the associated dispatch class that handles incoming requests. The dispatch class extends %CSP.
New Tool Available
Please see PerfTools IO Test Suite for a later version of the Random Read IO tool.
Purpose
This tool is used to generate random read Input/Output (IO) from within the database. The goal of this tool is to drive as many jobs as possible to achieve target IOPS and ensure acceptable disk response times are sustained. Results gathered from the IO tests will vary from configuration to configuration based on the IO sub-system. Before running these tests ensure corresponding operating system and storage level monitoring are configured to capture IO performance metrics for later analysis.
ObjectScript has at least three ways of handling errors (status codes, exceptions, SQLCODE, etc.). Most of the system code uses statuses but exceptions are easier to handle for a number of reasons. Working with legacy code you spend some time translating between the different techniques. I use these snippets a lot for reference. Hopefully they're useful to others as well.
///Status from SQLCODE: set st = $$$ERROR($$$SQLError, SQLCODE, $g(%msg)) //embedded SQL set st = $$$ERROR($$$SQLError, rs.%SQLCODE, $g(rs.%Message)) //dynamic SQL ///Exception from SQLCODE: throw ##class(%Exception.
Hi Developers,
We invite you to write a review on the InterSystems IRIS on Capterra. The first 100 reviewers will get a $20 USD gift card from Capterra and $25 VISA card from InterSystems for the published review!
See the rules below.
A quick start guide to connect Ensemble to RabbitMQ using the RabbitMQ Java Client, a Java proxy class and the Ensemble Java Gateway.
Word and PDF documentation, source code and utilities available at https://github.com/toncat/ensemble2rabbitmq.
#Software Versions Server
- Windows Server 2012 R2 x64
- Erlang OTP 19.1
- RabbitMQ Server 3.6.5
- RabbitMQ Java Client 3.6.5
Client
- Windows Server 2012 R2 x64
- Java JDK SE 8u111
- RabbitMQ Java Client 3.6.5
- Ensemble 2016.2.0.736.0
#RabbitMQ
##Install Server http://www.rabbitmq.com/install-windows.
You have a global ^CODE("TNO","BIO",291,"AKI") that may or may not exist. On the data side of the global ref it can have a boolean value of 0 (false) or 1 (true) and this global is wrapped up in a Caché class accessible from myobject.AKI property. At the object level, how do you check whether the property is defined ie. is there a $DATA equivalent for Cache Object properties? Also, how would you kill /null the property as opposed to making the value 0 (false) or an empty string?
Hello,
When we need to create a utf-8 encoded XML file, we use the Charset property of %XML.Writer:
set writer=##class(%XML.Writer).%New()
set writer.Charset="UTF-8"
How can we create regular txt files with such encoding?
Our Cache Installations are 8 bit and not unicode.
Thanks,
Nael Naser eldeen
Hi Community!
We're pleased to announce that that InterSystems IRIS Community Edition is available on the Docker Store! InterSystems IRIS Community Edition is the no-cost developer edition designed to lower the barriers to entry to get started with IRIS. Now that it is listed on the Docker Store, running an IRIS Community instance is as easy as -
docker run -d -p 52773:52773 store/intersystems/iris:2019.1.0.511.0-community
For more on running IRIS in containers check out our Documentation or one of the many Community posts on the topic!

In this article I'll cover testing and debugging Caché web applications (mainly REST) with external tools. Second part covers Caché tools.
You wrote server-side code and want to test it from a client or already have a web application and it doesn't work. Here comes debugging. In this article I'll go from the easiest to use tools (browser) to the most comprehensive (packet analyzer), but first let's talk a little about most common errors and how they can be resolved.
What are the difference between Caché and Cache.
Hi !
I am getting below error in my .NET MVC project, I am IRIS Entity Framwork, in the database table filed and model having the same datatype int.
The specified cast from a materialized 'System.Int64' type to the 'System.Int32' type is not valid db Table creation Id field is created with [xDBC Type = BIGINT]
Please kindly advice me.
Thank you
Hello, one of our application partner, is considering modernizing their old CSP laboratory portal by using Zen Mojo with Bootstrap. They have a lot of experience with COS, CSP and some ZEN. They are new to REST/JSON and have some limited knowledge of javascript - perhaps not enough to the extent used by client framework.
Hi,
I'm doing a query in SQL and I need to sort my data by some non-repeated field.
Unfortunately, my data is grouped in a way that I cannot guarantee that any column will not have repeated data, so one solution would be to take the row number.
Also, the Cache is not accepting Row_Number () in my querry and I would like to know if there is another solution to return line numbers or some way to add this function to the Cache.
Best regards.
Hi-
Im curious if there is any specific configuration that has to be done on an IIS web server to serve up RESTful web services.
I have a server that has IIS installed, with the CSP gateway. a second server that has Cache installed on it.
I have configured a web application using the Cache System Management Portal for the web services that has a dispatch class pointing to my dispatch class.
I have created an application mapping in my CSP Gateway Management Portal on the web server such that url's with /webservices prefix are routed to my cache server.
Terminal scripts can be used to run pre-designed commands on the terminal, like a batch file. You can write anything that can be executed on terminal, like for loop, if else and so on, inside Terminal scripts. In this article, I will show you how to call Terminal scripts, how to use parameters in Terminal scripts and how to avoid session disconnected when running Terminal scripts. If you have any information about how to use Terminal scripts or you have any feedback, please feel free to leave a comment.
1.
Hi,
I want to access a Stored Procedure in a remote SQL Server Database. I am quite new to Object script.
The stored procedure has 3 parameters: 2 datetime parameters and 1 integer.
Which is the best way to do that? I'm wondering if I can use the link stored procedure feature inside object script or some SQL statement in Object Script.
This SP returns a set of rows which I want to read, transform and save in a persistent class.
Thanks in advance,
Hi
I'm using %XML.Writer to write XML files from a database source, and I see that it is not encoding carriage return or line feed as 
 and 
 respectively, and is instead leaving them unencode.
What can I do to have them encoded?
Andy
Hi dev community,
I am currently working on a project to send documents to a RESTful based API that supports bearer
Token Authorization.
When we try to fire a JSON request from our EnsLib.Rest.Operation towards the 3rd party API with a
valid Token we keep receiving Authorization Error codes HTTP 401 back.
If we use the same request and same Token from a test utility such as Postman the request is
successful and we are able to move past the authorization stage.
We are inputting the Token in the header of the HTTP request as specified by the 3rd party API
specification.
In .NET Core you have an option to extend a session using a "sliding expiration". This means that if over half the time has passed and the user actively uses their session then the expiry timer gets reset and the user remains logged in. This can lead to the curious situation where you have an active authenticated user with an expired access token being used in data-access requests.
Hi All,
I am encountered <INVALID OREF> error in one of the components in the namespace as we are processing and generating huge files and sending them to downstream systems. One possible way we tried was to allocate more memory for the namespace in ensemble, but this kind of intermittent error still occurred only if processing the huge files. Also we tried to resend the failed message and the error would be gone. Another possible solution is to kill unused local variables to release memory space.
Two fairly common requests we receive from HL7 customers are (1) how to remove all trailing delimiters for fields and segments in HL7 messages and (2) how to "find and replace" for an entire HL7 message (as opposed to one segment/field at a time). The code sample below shows a custom function that solves for item 1 and by extension item 2 above. In other words the same approach can be used for finding/replacing any sequence of chars in an entire HL7 message, with some tweaks to the custom function.
Here’s an example of how to actually call the function from DTL.
Hi,
I have been reading the posts and the documentation around JSON support available with 2016.2 (which is my version) and following versions, but haven't found a concrete example of how to design and implement a complex JSON entity object. I'm working on creating a REST client to connect to an external service and working on modeling the request and response objects, but keep running into invalid OREF when trying to access elements. I've tried creating a container class 'request', which extends
Hey Developers!
We're pleased to announce the next competition of creating open-source solutions using InterSystems IRIS! Please welcome:
⚡️ InterSystems Full Stack Contest ⚡️
Duration: September 21 - October 11, 2020
Hi Community,
In this article, I will demonstrate below steps to create your own chatbot by using spaCy (spaCy is an open-source software library for advanced natural language processing, written in the programming languages Python and Cython):
-
Step1: Install required libraries
-
Step2: Create patterns and responses file
-
Step3: Train the Model
-
Step4: Create ChatBot Application based on the trained model
So Let us start.
Would like to know if there is an alternative or better way to paginate through a dataset using dynamic SQL than what I am using below. The problem is that as the potential pool of data gets larger, this code slows down to the point of not being useable. In analyzing each line of code below, it appears the slow down is related to the initial rset.%Next() iteration. Is there anything available which does not require a subquery/%VID such as a simple LIMIT/OFFSET?
My code is similar to :
s sql=##class(%SQL.Statement).
Greetings,
Is it possible to save Cache code into a file and then run it via command line?
IE: csession [ini] -U [ini] /path/cacheCodeFile.?
What I need to do is run a Cache script from the Linux command line. The script will navigate data to produce a file and then it will exit back to the command line.
Thanks in advance for everyone's time.



