I think that to get a definitive answer you should contact WRC Support.
- Log in to post comments
I think that to get a definitive answer you should contact WRC Support.
I can't think of a reason why you need to retry, normal, standard SQL update works just fine, if it does not in your case, post a sample code to reproduce your issue.
Unless your post is missing crucial code/info, the SQL update you posted is atomic and should work even with concurrent processes updating the same row. No need of %NOLOCK or retry (is that second update a retry?).
It will not be atomic if you use %NOLOCK.
If you want to use object code to update ProcessedCount, then:
Set obj=##class(Data.A).%OpenId(RowID,4)
Set obj.ProcessedCount=obj.ProcessedCount + 1Set sc=obj.%Save()
; handle error hereKill objI feel your post/code misses some info.
Also, what do you mean with "not working"?
Are you sure that the Routes you posted are the ones used by the called web application?
The error suggest there is an issue (invalid value?) with the Url attribute in the Routes.
You may want to check the generated method DispatchMap in the .int code of your dispatch class.
I think that ^ZAUTHLOG cannot be set because the process executing the ZAUTHENTICATE code has no privilege/access to %SYS for writing. If you follow the @Lucas Fernandes suggestion to enable and check audit log you probably find a <PROTECT> error.
If you are using a test system (no production!), you can temporary add %All role to the CSPSystem user and try again.
Remember to remove the %All role after your debug the issue.
Note that before authentication the process running ZAUTHENTICATE has VERY limited capabilities (privileges).
In general I think the ZAUTHENTICATE should check if it's called for the purpose you are implementing, something like:
If ServiceName="%Service_WebGateway" {
If$isobject($get(%request)) {
If (%request.Application="/ws/jarvis") {
; your code here
}
}
}You may also need/want to assign a role to the user:
Set Properties("Roles")="YourRequiredRole"
Is delegated authentication enabled in the Web Application used/called?
I suggest to have a look to the Discussion The new $system.external interface and the linked .NET samples available in GitHub.
If you want to store FHIR resources you need a FHIR Server, not a gateway, for more info:
Make sure your license include FHIR Server functionality.
Have you tried using the proper, official, documented and supported way to do that using Foreign Tables?
Does the memory leak happen using Foreign Tables ?
Maybe the way you are using the "FOR INTERNAL USE" classes is not proper/correct.
Why using something you are not supposed to use when there is a proper/supported way to do this?
I'm afraid I don't have an answer, I use JDBC regularly (admittedly , not Postgres and NOT using %XDBC classes) and I've never seen this behavior.
If anyone wants to dive deeper in this issue, more information are required to analyze and maybe try to reproduce it, like:
"....rapid increase in memory consumption by the IRIS server" What process is consuming memory?
What OS, Windows or Linux? If Linux, what flavor?
What Java version are you using?
What version of Postgres JDBC driver are you using?
Last but to least, note that class %XDBC.Gateway says:
"FOR INTERNAL USE - do not invoke directly"
LoadPageDir() compiles the subdirectories as well if/when in the Web Application definition the setting "Web Settings: Recurse" is flagged (enabled). (It's flagged/enabled by default when creating a Web App)
How is Recurse setting set in your "/CSP/ourapp/" Web Application definition/configuration?
Note that the directory you pass to LoadPageDir is in fact the path of a Web Application, not the physical path on disk.
To reconcile which user/process are associated with the license counts you can use the UserList Query in %SYSTEM.License (aka $system.License) class.
Quick test:
Set rs=$system.License.UserListFunc()
Do rs.%Display()
select * from INFORMATION_SCHEMA.SCHEMATA;
There are many tables in INFORMATION_SCHEMA schema you can query to get info, check:
select * from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA ='INFORMATION_SCHEMA';
Have you tried explicitly adding to the production a BP using Ens.ScheduleHandler class?
Make sure the CSPSystem user has read access to the database where your custom login page is located.
https://docs.intersystems.com/iris20253/csp/docbook/DocBook.UI.Page.cls…
Are you using the IRIS login page or a custom login page defined in the Web Application?
Please define "capture filename", I don't understand.
@Marcelo Witt, what product/version are you using?
The AI BOT answers are moderated, that means that must be approved by a moderator before being published.
I do not understand "That is troublesome, particularly if Vitaliy is a Global Masters user.", can you please elaborate your concern?
OK, thank you, now that you edited adding the link it makes more sense.
I'm afraid it's not correct, for example the first item:
For ResearcherId the parretn 1N means "One Number", EXACTLY one number
I think the correct pattern should be .N, this means any number of Number (digits).
Supposing ResearcherId is mandatory and my contains only numbers (at least one), the the pattern would be 1.N
Last name would be 1.A, that is at least one low/upper case character
Is the message queued in Ens.Alert? What kind of host and class in used by Ens.Alert?
I don't think there is a limit on the number of Business Services a production may contain, 30 is definitely not a big number of BS, I've seen production with more than 100 BS and it works just fine.
Concerning the conversion of system Tasks into (scheduled, I guess) BS, well, it depends 😊
Depending on your use case there can be advantages or disadvantages, the main differences that come to my mind are:
I would just decode the B64 then if it catch any error or returns nothing ("") is not valid.
Hi @Ariel Glikman, my bad, in the latest 2024-2025 "Healthcare Mirroring" documentation page I didn't see this:
To automatically configure and schedule this task, as well as mirror the HSSYS database, use the HSSYS Mirroring Utility.
Alternatively, manually schedule the task on each mirror member:
In fact until 2023.1 the (just released?! 😉) HSSYS Mirroring Utility was only mentioned in the Upgrade documentation.
Are you sure that the tool (browser? does not look like Postman) you use in the first picture is using a POST andf not a GET method?
The "405 Method Not Allowed" error means that POST (as used in your code) is not allowed.
Hi @Ariel Glikman, thank you for the tip regarding the HSSYS Mirroring Utility.
Is there any reason why that utility is mentioned in the "Upgrade reference" part of the documentation and not in the "Healthcare Mirroring" (installation) documentation?
This gives the impression that the utility is (only?) for upgrading IRIS for Health.
I don't think Try/Catch is the solution, but I don't know what you want to happen when an error occur.
Maybe an option could be using the "erropt" parameter in $ZDTH, like:
Set dateH=$ZDTH(whatevervalue,,,,,,,,,"invalid")
If dateH="invalid" ....