go to post Lorenzo Scalese · Apr 17, 2022 Hi @Robert Cemper ! Good Idea! I tested, but unfortunately, It seems already too late, the rollback is already performed. %ZSTOP routine ROUTINE %ZSTOP %ZSTOP Quit SYSTEM Set ^zJob($i(^zJob)) = $ZDATETIME($HOROLOG, 3, 1) _" LABEL-SYSTEM (" _ $JOB _ ") "_$NAMESPACE _ " TLEVEL: "_$TLEVEL Do ZFORCECOMMIT Quit LOGIN Quit JOB Set ^zJob($i(^zJob)) = $ZDATETIME($HOROLOG, 3, 1) _" LABEL-JOB (" _ $JOB _ ") "_$NAMESPACE _ " TLEVEL: "_$TLEVEL Do ZFORCECOMMIT Quit CALLLIN Quit ZFORCECOMMIT If $Data(^zForceCommit($Job)) { While $TLEVEL { TCOMMIT } } Quit Even if the process is in a transaction before "terminate", the ^zJob trace records a $TLEVEL with the value 0. Maybe it's just not possible (or possible with a not documented procedure). Thank you.
go to post Lorenzo Scalese · Apr 7, 2022 Hi @Benjamin De Boe, Yes, I recently took a look, but indeed I need it on an old version (2018 ) However, our customers should migrate but I think that i can't use DataMove on production systems before the end of 2023. In my opinion, DataMove is complete but just needs to be wrapped for special use cases (ex: manage global mapping on mirror switch). It's not a problem, we can do this easily with a simple global and ZSTART routine (such as the sample). Maybe, I should modify this tool in this way if there is an interest.
go to post Lorenzo Scalese · Apr 5, 2022 Hi @Harshdeep Acharya , You should take a look to this repository : iris-healthtoolkit-service OEX Link : iris-healthtoolkit-service This is a solution provided by @Guillaume Rongier
go to post Lorenzo Scalese · Apr 4, 2022 Hi @Alexey Maslov, Interesting, we have the same problem and apply the same solution :-) ! There is more than 10 years ago, I have written an archiving tool to move document stream to a share and just keep the file reference. The process is long, but there is no downtime. It's exactly the same situation. The archive tool is included in our application administration panel and the customer can decide himself to archive. Today, I have read-only globals nodes (not documents) that became very bigger. So, I try an approach with an "archive" database to reduce the volume of our main database(s).If you are interested in global moving without downtime there is (live-global-mover)[https://openexchange.intersystems.com/package/isc-live-global-mover], but it's not designed for mirroring and ECP.
go to post Lorenzo Scalese · Mar 30, 2022 Hi, You can use 8 for the date format part, but there is no time format parameter for HHMM. Try with this line : w $tr($ZDATETIME($zdth($zstrip("2022-03-29T15:10:00+0100","<>W"), 3,5),8,2)," :","")
go to post Lorenzo Scalese · Mar 22, 2022 Génial !@Yann Simons @Aurélien LANSMANNE @Damiano Porrovecchio
go to post Lorenzo Scalese · Mar 8, 2022 Thank you for your quick reply @David Loveluck ! Indeed, the task Update SQL query statistics was in suspend state. I resume, start and try again :-)
go to post Lorenzo Scalese · Mar 8, 2022 Hello, Thank you for this useful tool. I have an install using HealtShare 2018.1.4 where the node "stat" does not exists . ^rINDEXSQL("sqlidx",1,hash,"stat") There is something to enabled ? I don't have this problem on my own install. Thank you.
go to post Lorenzo Scalese · Feb 8, 2022 Congrats to everyone! 3rd for io-redirect. How it's possible. It is also unexpected!
go to post Lorenzo Scalese · Feb 8, 2022 Hello, There is another repository with webgateway and apache here.
go to post Lorenzo Scalese · Sep 29, 2021 Interesting. I don't have environment to test wit Native API, but perhaps you could test explicitly "ProcedureBlock" instead of default behavior. Just by using the class key word "ProcedureBlock" ex: Class ZUser.NewClass1 Extends %Persistent [ ProcedureBlock ] edit : also you can try with [ ProcedureBlock = 1 ] on the classmethod. doc link
go to post Lorenzo Scalese · Sep 29, 2021 Code snipet to expose the problem. Class ZUser.NewClass1 Extends %Persistent [ Not ProcedureBlock ] { ClassMethod Demo() { Do ..TestLock() ; This class is Not ProcedureBlock the record still locked ; If the class is ProcedureBlock the record is released. ; try by yourself :-) } ClassMethod TestLock() As %Status { Set id = $Order(^ZUser.NewClass1D("")) If id = "" { Set obj = ##class(ZUser.NewClass1).%New() Do obj.%Save() Kill obj } Set id = $Order(^ZUser.NewClass1D("")) Set obj = ##class(ZUser.NewClass1).%OpenId(id, 4) ; in case of usage Not ProcedureBlock you should ; kill obj or set obj="" (and all others variables with this object reference) to release the lock Return $$$OK } }
go to post Lorenzo Scalese · Sep 29, 2021 Ok, Could you test with Set checking = "" ; due to the reference Set checking.Person Set person = "" I guess the lock should be released after leaving the classmethod, but if the class is procedure block or not the behavior could be different.
go to post Lorenzo Scalese · Sep 29, 2021 Hi @Matjaz Murko,It's strange. For example, If the object is open with concurrency 4. The lock should be released on set object=""Documentation : Object Concurrency OptionsHave you got a simple example to reproduce?
go to post Lorenzo Scalese · Sep 19, 2021 Hi @Pete Greskoff @Evgeny Shvarov This article is very helpful.I develop PKI-Script in order to do this without manual intervention.This lib is focused on PKI steps, for mirroring I prepare something else.
go to post Lorenzo Scalese · May 6, 2021 Solved. Finally, It was simple. The routine has been installed after the switch, but before my investigation. So, I thought the routine was there and not performed.