go to post Mario Sanchez Macias · Sep 5, 2022 @Dmitry Maslennikov , WIJ file of 8GB means that the system wrote 8GB of cache buffers. This doesn't have to be a bad sign by itself and can be perfectly normal.
go to post Mario Sanchez Macias · Sep 5, 2022 These warnings suggest a performance problem with the CPU and disk bottlenecks. If you are running very intensive processes, you should see these warnings go away after they finish. However, if you keep seeing them continuously, I recommend going deeper and analyzing the performance. Analyzing the performance takes time, and it's not always easy for non-experts. There is a great series of articles written in this community that can help with this: https://community.intersystems.com/post/intersystems-data-platforms-capa... If you don't want to go through all these series and can easily increase the system resources, it would be an easy way to probe and solve the problem ;-). What I mean by increasing system resources is by adding more CPUs and faster disks. Nowadays, with Virtual machines and cloud systems, this is quite simple. And let me insist again, if this is a production system, you may want to open a WRC problem for extra help. Having the disk too stressed will end in User/Application pauses.
go to post Mario Sanchez Macias · Sep 5, 2022 Ups! I just realized you wrote the system is Caché and not Iris. So, instead of the messages.log, you should read cconsole.log. Instead of ^SystemCheck, it would be ^Buttons, and, instead of ^PerformanceCheck, it will be ^pButtons.
go to post Mario Sanchez Macias · Sep 5, 2022 This is not a nice error to see in a production environment. If this is a production site, I recommend contacting the Support department. To find the problem, you can look at the messages.log. There should be an error written with more details. Most of the time, these errors are related to disk permissions or disk stress. Tools like ^SystemCheck and/or ^SystemPerformance will gather the required information to diagnose the problem. If you contact Support, they will probably ask for this.
go to post Mario Sanchez Macias · Aug 29, 2022 As it is not a class method you need either to create/open an object for the class or rewrite the method as ClassMethod (instead of Method). But as the SetSensor call is also pointing to the same object (See do ..SetSensor), the simplest would be to create/open the object: set obj=##class(Package.YourClass).%New() do obj.ResponseTimeCurrentMonth("USER") You may also need to add some Writes to the terminal to see something. For example: write !,"Date:",InDate write !, "time taken:",timeTaken
go to post Mario Sanchez Macias · Aug 29, 2022 To me, the simplest is CSP. You require an HTML file with some Server Side code, and you already have some samples. A more modern (but also simple) would be REST. You require a little extra setup with ObjectScript class (To handle the REST) + HTML code + Javascript Code to call the rest pages.
go to post Mario Sanchez Macias · Aug 29, 2022 They look very old! So they may not be used anymore and could be removed (report it internally). I must say that I hardly remember a Wizard to import XML/WDSL where you could see the World icon... but I may be wrong as my memory is quite bad ;-)
go to post Mario Sanchez Macias · Aug 29, 2022 Hi Andy, If you have problems with production servers, I advise contacting Support directly. (Looking at the question's date, you may have contacted us already). The issue you show here is not common and can be related to file permissions (reinstalling may help) or a product bug. To diagnose the problem, Support may need to ask you for more details, logs, etc.
go to post Mario Sanchez Macias · Aug 26, 2022 I am a little surprised you asked this :-P ..... and the answer, as you can imagine, is using the magical $Z functions! In this case, searching a little you can find: $ZISWIDE (ObjectScript) Checks whether a string contains any 16-bit wide characters. See: https://docs.intersystems.com/iris20221/csp/docbook/Doc.View.cls?KEY=RCO... I think playing with other functions could give you what we are looking for here. Therefore, now that we have a utility that can check if something is Unicode or not, the rest would be to do a routine to read all the globals and check for the content with this function. I have seen routines getting all the globals and looping before but don't have it handy. This programmatic way of looping and checking all the globals gives you more control and allows you to find where there is something not expected. But, as it takes some time to write if the original question is something you just want to do once, a backup + restore seems quicker and simpler.
go to post Mario Sanchez Macias · Aug 25, 2022 There isn't any flag telling whether a database is Unicode or not inside the database file. If a Unicode database has no UNICODE characters, it will be accessible by an 8-bit version without problems. If you want to know if a database has wide characters (Unicode chars), you could try to read all the globals inside an 8-bits instance and wait for a <WIDE CHAR> error. In order to read all the globals, there are several alternatives, like building a small routine, doing a backup and/or restore, exporting/importing globals, etc. Of course, there are more elegant ways to check the globals and data than expecting an error.
go to post Mario Sanchez Macias · Jun 1, 2022 Kevin, You should run it over the weekend, if the system is busy, the operation may take longer or not fully complete. See notes from the documentation: Compacting a Database The compact database operation is designed to run concurrently with normal database activity. The operation does consume some system resources, however, and may not complete if the system is under extremely high load. For these reasons, InterSystems recommends running this and other database reorganization operations (including compacting and defragmenting globals) during off-peak hours, and running only one such operation on a system at a time.
go to post Mario Sanchez Macias · Nov 16, 2021 Thanks a lot! That was my intention, trying to show something as simple as possible so anyone can look inside and adapt the code to what they need. To make it simpler I could have used the API methods and calls provided by default, but I preferred to "hack" those methods to allow restore where I wanted without requesting any prompt and finally running the Integrity check with multiple process. This also allow me to control the return of the integrity report and execute an IF to check if there was an error or not.
go to post Mario Sanchez Macias · Nov 16, 2021 I was logging to the messages.log (which is also displayed in the docker logs) just in case you prefer to run it not interactively or in a docker up session. You can of course leave the instance up and call the method. I didn't want to spend much time in the way of calling the docker instance as I am sure that in a real environment most of the customers will have to write a script moving or renaming the .cbk files and executing the app.
go to post Mario Sanchez Macias · Mar 18, 2020 So you didn't find another simpler alternatives to %ConvertJSONToObject from the %ZEN package? I will report to my colleagues from development, as not sure using %ZEN is the best way to do this. Thanks Mario
go to post Mario Sanchez Macias · Mar 5, 2020 This has been implemented by the %JSON.Adaptor https://docs.intersystems.com/irislatest/csp/docbook/Doc.View.cls?KEY=GJ... But Salva, you were first! 👍
go to post Mario Sanchez Macias · Feb 19, 2020 Well, the way you were guessing also should work but it is not complex at all. If you add the following to your docker compose: networks: msc: external: name: othercontainername_default it should work.
go to post Mario Sanchez Macias · Feb 19, 2020 Hola Hector, Maybe another javascript error is causing the problem and that's why you are not reaching to the console.log line. In order to find the problem I would keep simplifying the page, remove code from above, down, etc... until it works. Being a CSP page is not affecting, as the output seen by the browser would be html. Another tip would be ti open the console window and checking for other errors. Also look at the code from the browser, not the one from the server. That will give you where the problem is. If you keep getting problem, even after simplifying the page, please paste it here so I can have a look and try to reproduce it locally. Of course if this becomes something urgent, you should open a WRC problem with support.
go to post Mario Sanchez Macias · Oct 14, 2019 Yes, I saw it and borrowed some tricks! thanks for them Dmitry! Anyway, I preferred to publish these scripts as are a little bit simpler and easyer to follow (at least for me ;-) I also added a folder for old versions, where you need to pass credentials to login. It maybe useful for people using older versions.
go to post Mario Sanchez Macias · Sep 18, 2019 Yes!It is the second command (and you don't need the first one, go directly to the docker-compose up , it will do the build if needed. And good catch with VS code, I also use it for sessions, stop/start containers and prune!