Check amount of connections left on Community Edition
I am aware that we have 5 License Units on Community Edition. But I have issues figuring out how it's working.
I have Community Edition
USER>write $system.License.KeyCustomerName() InterSystems IRIS Community
Freshly started system, only terminal session open, so, only one license units used, and 4 left. As expected
USER>write $system.License.LUConsumed() 1 USER>write $system.License.LUAvailable() 4
Quote from documentation - $SYSTEM.License.MaxConnections() returns the maximum number of connections a user can make while consuming one license unit.
USER>write $system.License.MaxConnections() 25
It says 25 connections, let's try using them, and start a few background jobs (Running ^Integrity as a background job this way, was not a good idea though, as it run into endless loop and took 100% of CPU)
USER>zn "%SYS" %SYS>for i=1:1 { Job ^Integrity::0 Quit:'$Test write !,$ZChild } 21694 21695 21696 21697
So, I got only 4 child processes, well, in sum we have 5 connections only, not 25 as MaxConnections says, check the License Units, stays the same
%SYS>w $system.License.LUConsumed() 1 %SYS>write $system.License.LUAvailable() 4
Looks like I have some space left, but not exactly. So, looks like this user (irisowner in case of docker, it uses system user) does not have any access, anymore
$ docker exec -it iris iris session iris <LICENSE LIMIT EXCEEDED>
I tried, to login as another user, and wanted to switch off Operation System login
But, it did not work, I keep getting <LICENSE LIMIT EXCEEDED> error
So, I stopped one of the background jobs, so, I'll get some place for irisowner. And now I got username prompt. This is not what I would expect at all. Why is that user affect at all.
irisowner@352dab0e513d:/opt/irisapp$ iris session iris Node: 352dab0e513d, Instance: IRIS Username:
Then I decided to login as another user, for this time as _SYSTEM, and check how many background jobs I can run
%SYS>for i=1:1 { Job ^Integrity::0 Quit:'$Test write !,$ZChild } %SYS>write $username _SYSTEM
looks like, no space left, at all. we have the first session, 4 jobs with ^Integrity, -1 killed, and one more session already under _SYSTEM, so, only 5 connections again
%SYS>write $system.License.LUAvailable() 4 %SYS>w $system.License.LUConsumed() 1
License Units, keeps, saying the same, that I still have some place
Ok, let's try another way. We have python out of the box. Let's try it
irisowner@352dab0e513d:/opt/irisapp$ /usr/irissys/bin/irispython Python 3.8.10 (default, Nov 26 2021, 20:14:08) [GCC 9.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import iris Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/irissys/lib/python/iris.py", line 14, in <module> from pythonint import * ImportError: IrisStart failed: IRIS_LICENSE (-20) >>>
Nope, no way.
So, I decided to free one connection, and try python again
>>> import iris Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/irissys/lib/python/iris.py", line 14, in <module> from pythonint import * ImportError: IrisStart failed: IRIS_ACCESSDENIED (-15)
That was completely unexpected again, so. I was just tried to import library, it was not supposed to fail even if no licenses left. Well, that happens because, default configuration does not permit it at all (%Service_Callin not enabled), kind of weird.
Am, I'm doing something wrong? How to get real numbers and usage from $SYSTEM.License, I found nothing close to what I would expect. License Usage keeps saying, that I have some more license units available, but, it is not so.
From what I see, that. It does not matter how many License units available, only 5 connections, no matter which user is using it will be available, and there is no way to monitor it.
%SYS>w $system.License.ConnectionCount("_SYSTEM") 0 %SYS>w $system.License.ConnectionCount("irisowner") 0