Mathew Lambert · Oct 25, 2021 go to post

That's for sure, changing the $Timezone is the last approach.

However I've been testing with HS.Timezone.Server.Service and I think that I'm getting something useful, and seeing the docs I'm seeing that it has the TZ database embedded

Mathew Lambert · Oct 23, 2021 go to post

Of course future can't be predicted but each release can have the up to date DB.

Will do it via Java or Py with a connector

Mathew Lambert · Oct 22, 2021 go to post

It shows the server offset to UTC.

My tasks look like this:

Take out trash 08:00 Europe/Madrid
Take out trash 08:00 Asia/Tokyo
Take out trash 08:00 America/New York

These tasks are executed every day, and need to be executed on my server that is in Africa/Cairo timezone, but need to be executed at the correct UTC time.

Today (22 October 2021) the UTC conversions for 08:00 of the indicated timezones are as following

06:00 22.Oct

23:00 21.Oct

12:00 22.Oct

But on november the 10th it will be

07.00 10.Nov

23:00 9.Nov

13:00 10.Nov

That times are the UTC times when I need to execute my task.

How can I convert 22 October 2021 08:00 Asia/Tokyo to 21 October 2021 23:00 UTC

Mathew Lambert · Oct 22, 2021 go to post

Using any of both method I've got the same problem, how do I know what is the offset for "Europe/Madrid" today, tomorrow, or any given day?

Mathew Lambert · Jan 14, 2021 go to post

Until now in caché we where checking $ZERROR, but as InterSystems is descouraging the use of that variable, I don't know how to surely test this command.

Mathew Lambert · Jan 14, 2021 go to post

The issue with this option is that on a productive environment, inmediately after purguing the queries, I've got new queries.

Mathew Lambert · Dec 14, 2020 go to post

System configuration. There are so much settings all over the application that it would be great to have a configuratino wizard divided into categories.

Mathew Lambert · Dec 10, 2020 go to post

Having a configuration tool in the management portal to help with all the settings.

Mathew Lambert · Oct 19, 2020 go to post

Well this kind of old post revives again... I have two mirror members that say "This member is not connected to the arbiter".

The three machines are in the same subnet, all IPs configured, pings responding...

Mathew Lambert · Jul 7, 2020 go to post

As it seems that there is not the possibility to do this as of now, we will be talking with InterSystems.

Mathew Lambert · Jul 7, 2020 go to post

So, to sum up, the best strategy would be to define properties on each of the tables and then also FKs to ensure referential integrity

Mathew Lambert · Jun 16, 2020 go to post

I'm trying to avoid wrapping %persistent methods because

  • this could lead to problems between releses
  • those methods are final (so I would need to wrap them in a different named method

Regarding your points, we don't generate classes via DDL and to force inheritance I would just implement a test and add it to our Persistent classes Best Practices.

Thank you

Mathew Lambert · Jun 16, 2020 go to post

I know how to obtain the status from the call, but I want to have a method that I can implement in an abstract class, that I inherit in all my persistent classes, and with very few lines of code I can track all CRUD operations.

Mathew Lambert · Jun 15, 2020 go to post

There is no pretty way to do it via management portal.

Either use a JDBC tool like squirrel or sql workbench, or use an sql file with do $System.SQL.DDLImport

Mathew Lambert · Jun 15, 2020 go to post

We use the license via a customized page that imports the file, the validation is done by zipping the license file and an expected checksum.

The user workflow is that we link the type of request with the type of license to use in our delegated authentication, consuming depending on the entry endpoint.

Mathew Lambert · Jun 15, 2020 go to post

In our case we have wrapped the cspsessionid in a jwt token, and in our other frontends (we use Zen + React) we validate that the jwt token is valid and we request then to backend to see if it's still valid. Then all the calls are made using this token and via delegated authentication we do the login

Mathew Lambert · Apr 29, 2020 go to post

do %session.Logout()

Ends the session. Next request starts the new session.

I know that this ends the session, but an approach could be with one client request end it, and return a new one. With this solution you need to wait until the next request to create the new one so you no longer know if the client is authenticated.

The other option as mentioned is to encript trafic and therefore the cookie can no longer be used.

Mathew Lambert · Apr 29, 2020 go to post

That is right, but as long as the cookie session timeout is valid (let's say 60 seconds) anybody that intercepts that cookie is effectively authenticated as long as the timeout is valid.

Some ideal situation as mentioned by Joan would be to have a cookie that is used since the user accesses the first page until it want's to log in, and then, when the login request is received, invalidate that cookie and sessionID, create a new session identifier and return it.

Isn't there any way of invalidating a sessionID manually and creating a new one?

Mathew Lambert · Apr 29, 2020 go to post

I did some test back ago about backing up mirror scenarios (and restoring them), with an arbiter and hot backups.

There is indeed an important thing to keep in mind to avoid an final awkward situation, both nodes (A and B) end up in secondary mode and therefore readonly: this happens if you have both nodes up and synced, you turn off your primary (A) node (to backup or for maintenaince) then your secondary (B) becames primary, for whatever reason you remove the mirror configuration (in B as primary) and then A goes online again.

We found this situation in a scenario where B was kept as primary for some time, decided to remove mirror configuration, and then A was brought online,  for some reason both become secondary and readonly and the only solution was to restore a backup in the "most" functional node that was B.

Mathew Lambert · Apr 29, 2020 go to post

Also when we are testing our scenarios we do phisically sometimes execute the network isolation amongst other tests

Mathew Lambert · Apr 29, 2020 go to post

As stated by user Mario Sanchez on the spanish community:

The query freezing are based on cached queries, so we can assure that if there are no cached queries there will no be frozen queries. 

Saying that, the best way to be sure to not have frozen queries:

  1. Unfreeze
  2. Purge

It can be that overwriting the LOGIC some queries are automatically purged, and the later would not be needed, but knowing that both steps are fast and clear we can take it as assured.

Mathew Lambert · Mar 30, 2020 go to post

Are there any news regarding establishing a websocket connection from COS as a client?

Mathew Lambert · Mar 30, 2020 go to post

Are there any news regarding establishing a websocket connection from COS as a client?