go to post Yaron Munz · Aug 22 try to change:<Route Url="/{id:[0-9]+}" Method="GET" Call="NewsGetItem"/>
go to post Yaron Munz · Aug 22 try to open developer tools (shift-ctrl-P) then search for "developer tools" - check in console if there are any errors
go to post Yaron Munz · Aug 21 on any class that extends Ens.Request or Ens.Response you may use: Parameter COMPRESS = 2;Property JSON As %Stream.GblChrCompress;On large messages (or in a system with billions of messages per day) the save on storge is huge!- Visual trace working fine- You may search within the compressed property (but it will take time)- Property is visible in SQL queries against Ens.MessageHeader / Ens.MessageBody - The "out of the box" purge working fine
go to post Yaron Munz · Aug 21 instead of having each property stored with its name as a subscript, (e.g. ^Student(1,"Name") = "Alice" / ^Student(1,"Age") = 29 etc.)its much better to use the same format the class compiler is storing data on the D global:^Student(1)=$LB("Alice",29 ... ) when having globals with millions (or billions) of records it will have a huge impact on performance and storage footprint.
go to post Yaron Munz · Jul 29 There are 2 options: 1. access the raw code for classes is stored in ^oddDEF global. all class methods are store in this format: ^oddDEF(className,"m",methodName,11)=sequencewhere the sequence is 1,2,3...If you are going to manually manipulate this don't forget to compile: do $system.OBJ.Compile("className","ckr") 2. using SQL:SELECT ID,Name,SequenceNumber FROM %Dictionary.MethodDefinition where parent='className' order by SequenceNumberI'm not sure if you need to compile after an UPDATE to this table (but its easy test).
go to post Yaron Munz · Jul 28 1. Usually this indicates that the IRIS is sending an incomplete certificate chain2. The fact that you can access IRIS SMP has nothing to do with the outgoing HTTPS request, which I assume you do with %Net.HttpRequest and using the SSL property that match the SSL config3. I recommend accessing the https://myserver.com/api/gap/... from a browser and to check the certificate chain. Usually you will see 3 certificates (root CA, intermediate authority, the certificate itself) - you should put all those certificates (one after the other) in the PEM file that is configured in the SSL config in IRIS. Depending on the CA (which might be public, or company self-generated) you need to ask your sys admin
go to post Yaron Munz · Jul 25 Hello Malcolm, You should consider using a VIP (Virtual IP) to let users connect to the current primary regardless of a mirror switch. Usually, the arbiter machine, does not require IRIS to be installed, only the ISCAgent service, but if you have IRIS there with a license server than you lose the HA for licensing (in case arbiter machine is down).
go to post Yaron Munz · Jul 18 Very good article Ashok! If someone is going to calculate age in a production system, one should divide by 365.25 (to take into consideration leap years)
go to post Yaron Munz · Jul 10 As Alexey said, the issue could be with code, not ECP (as usually ECP is backward compatible)Make sure that code on app. servers in not mapped (no routine, package mapping) to a remote DB (on database server) - all code should be local to app. server If your 3 app. servers are identical (for HA, LB reasons) then if you can disable access to 1 app. server and still working with other 2 - it will give you an option to to the app. servers one by one without downtime. Another issue to concern is cached queries - on such upgrades its good to have all cached queries "un-freeze" to make sure all are compiled.
go to post Yaron Munz · Jul 10 You can call directly to: Do BACK^%ETN it will save the $ZE + the stack. (LOG is also calling this one)
go to post Yaron Munz · Jul 9 add a debug to OnPreHTTP and check the ^%globalk ^%global S a="" F s a=$O(%request.Data("")) Q:a="" m ^%global(a)=%request.Data(a) sometimes, better to check: $D(%request.Data("action",1)) and not $G
go to post Yaron Munz · Jul 9 try $GET(%Request.Data("action",1))Don't forget that you need to have the <input...> in a <form...> ... </form>
go to post Yaron Munz · Jun 12 Hello Norman, 1. to build a sync mirror with the server, then you can "set no failover" on primary" and "play" withe the backup, you could take IRIS down in any time on the backup, it will re-sync when its up again 2. O/S defragmentation - either by O/S tool, or to copy the DB to a new clean disk 3. Internal defragmentation - there are some options:A) to copy all data with GBLOCKCOPY to a new DB, with 1 process, to keep data as sequential as possible (will take a lot of time)B) to use the internal defragmentation tool (will need 2 x space on that DB) then compact globals 4. In general, its a good practice to split indices to a different DB (and use mapping) since the data ("D" globals) are usually not getting so fragmented over time. This will also help on future defragmentation, compact globals, DB "shrink" and other maintenance on less volume
go to post Yaron Munz · Jun 12 Hello Alex, I would suggest using MONLBL with all measures, to better understand any "bottlenecks" in code, memory issues or global access. In parallel, to monitor the VM to see if we hit CPU, disk I/O or memory thresholds there.it might be that there are some "internal" functions that can be optimized or written definitely to speed up code.I recommend that you open a WRC, since they have good tools to analyze almost every aspect of IRIS
go to post Yaron Munz · May 19 Thanks David, The issue is that tasks are flag as "Reschedule task after system restart" = Yes, but IRIS was not restarted.Only a mirror switch occurred. I;m not sure if a mirror switch does this re-calculation on times.
go to post Yaron Munz · Apr 29 Ashok,I recommend that You have:Set sc = workMgr.Queue("..Cleanup",QueueId)and also:Set sc = workMgr.WaitForComplete() Do workMgr.Clear()All this will ensure a relegable and smooth completion of the queue manager.We never used any hung when adding tasks into the queue.
go to post Yaron Munz · Apr 11 Hi Ashok, For the queue manager to recognize a proper completion of any code, it should be defined as a function.If you test the sc for subr1 you will see a <PARAMETER> error. This is why the () is required.It is better to have a quit $$$OK (or Quit 1) at the end, but this is not mandatory.