go to post Norman W. Freeman · Jun 9, 2023 This is exactly what I was looking for. Thanks a lot Robert.
go to post Norman W. Freeman · May 10, 2023 I did some a check on local machine : KeyLicenseUnits returns 10. So limit is somewhere else. What you say, by the way is true for CSP requests (which is example I give in the OP).
go to post Norman W. Freeman · Apr 7, 2023 Yes I did. Btw : is there a way, using code, to temporarily elevate current user to perform a specific task ? (eg: to call a function that require %Admin_Secure)
go to post Norman W. Freeman · Apr 5, 2023 This fixed the issue. Thanks. As Info : zw %objlasterror This does not output anything.
go to post Norman W. Freeman · Feb 9, 2023 It's possible to change (and thus disable) concurrency of a persistent object by calling this private method (eg: in constructor) : Method %OnNew() As %Status { do ..%ConcurrencySet(0) // <--- here quit $$$OK } Disclaimer : this is an undocumented method. It might be removed from IRIS implementation in the future, use it at your own risk. The parameter of that method accept same values as what is returned by $system.OBJ.GetConcurrencyMode().Once is concurrency is disabled, updates from other processes to related global can occurs even within transactions (data consistency is lost). A possible workaround is to create a single lock on the global : do ##class(Test.Test).%LockExtent() //same as lock +^Test.TestD //do something here //... do ##class(Test.Test).%UnlockExtent() //same as lock -^Test.TestD This prevent having many locks created during long duration transactions that create many persistent objects (but on the other side, it locks the whole global, not individual nodes).
go to post Norman W. Freeman · Feb 8, 2023 Transaction is created during import of data, so unless there is some serious optimization it's difficult to shrink time. Data consistency is important but it's might be OK to accept some tradeoffs.
go to post Norman W. Freeman · Feb 8, 2023 Thanks. I will take a look at it. I have some issues on a server where too many "delocks" are created because a lot of persistent objects are created in a long term transaction. I would like to avoid refactoring all the code to bypass persistent objects and use globals directly (which will require a lot of work).
go to post Norman W. Freeman · Jan 19, 2023 Both are set to "deu8". I checked properties : The only difference is in collation tables. Both are set to "German2", but "Additional" column is not the same : CACHE : Cache standard, German1, German3IRIS : German1, German3, German5, IRIS standardI guess that's the reason. Not sure how it can be fixed (so CACHE behave like IRIS). All "edit" buttons are grayed.
go to post Norman W. Freeman · Jan 19, 2023 Both servers have region set as "German (Switzerland)". I checked the rest (eg: "Time, Date, Advanced settings", ...) and everything seems 1:1. Is there a specific setting I should check ?
go to post Norman W. Freeman · Jul 1, 2022 I forgot to mention I am on Windows. "iris terminal" works somehow. There is several issues with this approach : - it does not redirect input/output (eg: echo 50 | iris terminal IRIS). One workaround is to put commands into a routine and call it explicitly : iris terminal IRIS MYROUTINE %SYS - it does not block/wait until completion (which is an issue since I use that command from a deployment tool that need to know once it's done) - there is no way to provide custom credentials (eg: execute commands with a specific user)
go to post Norman W. Freeman · Jul 1, 2022 Thanks. This is the same trick as what I found in "InterSystems IRIS Adoption Guide". If I wrote this in command line (eg: iris session IRIS), it outputs the command line documentation (which indicate something went wrong). "iris console IRIS" works by the way. Do I need to enable something before I can use session parameter ? EDIT : it seems that irissession.exe is the equivalent on Windows.
go to post Norman W. Freeman · Jun 28, 2022 Thanks. Out of curiosity, can you show the extended syntax to call a method from another namespace ? Also : when you say Config.MapGlobals use globals in %SYS, what are they used for ? AFAIK mappings are stored in IRIS.cpf file, not in globals (or maybe you are referring something else).
go to post Norman W. Freeman · Jan 18, 2022 If you want, i can post a skeleton class where you can start with. That would be really great.
go to post Norman W. Freeman · Jan 18, 2022 Did you added menu item by writing code (eg: to extend %Studio.Extension.Base) or is there another way ?
go to post Norman W. Freeman · Oct 29, 2021 Thank you. I missed the fact that what is below /mgr/ is indeed system manager DBs (seems obvious). Customer DB and code is actually somewhere else, in different namespaces and drive. I tried to rename CACHE.DAT to IRIS.DAT and it works (after proper backup). The only thing I need is to run some upgrade command on them.
go to post Norman W. Freeman · Oct 8, 2021 Thanks for the info. While there is probably something wrong with the OS (Windows in this case), is there a lighter way in Caché to execute a routine in a separate task ? I am thinking something like starting a new thread or using a thread pool. Does such thing exists ?
go to post Norman W. Freeman · Aug 27, 2021 Thanks for clarification about the name. I found it was called like that before I saw your post and edited OP.
go to post Norman W. Freeman · Aug 19, 2021 You are right. There is actually two ways the program send requests : either by submitting form (which result in fields being added to the body of the request as expected). And another way for server side validation, using a XMLHttpRequest. It append everything to the URI. I might fix that part.
go to post Norman W. Freeman · Aug 19, 2021 Here is some code example <form name="WWW" id="WWW" action="/csp/foo.cls" method="POST"> <textarea id="PARAM1" name="PARAM1"></textarea> </form> document.WWW.submit(); Which will result in the following request : POST https://something/csp/foo.cls?PARAM1=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX HTTP/1.1 Accept: */* Content-Type: text/html;charset=UTF-8 Referer: https://something/ Content-Length: 0 Connection: Keep-Alive Cache-Control: no-cache As you can see, input value is added to the url, just like a GET.
go to post Norman W. Freeman · May 26, 2021 Thanks, it works. I already tried something similar but put the the "}" and the "catch {" on separate lines. The trick is to put them on the same line.