David Underhill · Sep 29, 2016 go to post

We have built our own schedulers in the main but for the odd Cache Task Manager task we have created we just export and import the subclass.

David Underhill · Apr 2, 2017 go to post

Another clarification, ppg's are not limited only by disk space, just like all other databases the maximum size of cachetemp can be set to stop infinite growth, this means the ppg's have the same limit.

Also remember, the more you use them the more cachetemp fills.

One last point is that other parts of cache such as odbc queries also use cachetemp for storage and so the whole of cachetemp is not always available.

As ever you have to plan usage appropriately based on the application and the database configuration.

David Underhill · Dec 1, 2017 go to post

If you have an equivalent version of Cache installed with the manager source code available then take a look at briefsub^%GSIZE. 

You can copy this code and amend as you require, remember to include the sub routines it calls and you will have to set a few things up first.  I've done similar things in the past on older systems, the code can look daunting at first but isn't hard to understand enough to use.

On newer systems you would use the %Library.GlobalEdit class.

David Underhill · May 9, 2019 go to post

If you want to store the files in the database rather than the filesystem then you can use the Global* streams instead of File*, these also do not create the .stream files in the filesystem.

David Underhill · Aug 20, 2019 go to post

Hello Gagan,

Have you checked the value in sc from ftp.Store?

Also at that point you can check the values in ftp.ReturnCode and ftp.ReturnMessage for more details on the failure. 

This is also assuming that the status from ftp.Connect is ok and ftp.Connected is true.

David Underhill · Aug 21, 2019 go to post

We coded all the journal and data file monitoring in Cache itself and just had simple checks on the running status and alerts.log externally, keeps it fairly platform independent.

On windows we used vbscript to check service status and log contents.

David Underhill · Oct 3, 2019 go to post

We had a similar issue at a site and it turned out the routine index was corrupt, recompiling all routines solved this.

David Underhill · Nov 6, 2019 go to post

Open devices for a process can be seen in the Processes section of the portal.  The initial process list shows the principal or current device and in the individual process page it shows all open devices, this can also be found using the %SYS.ProcessQuery OpenDevices
 method so you could write code that goes through all processes checking.

What these show may depend on how you open the device in the first place.

David Underhill · Apr 6, 2020 go to post

To get the remote filesize over SFTP you would use the FileInfo method in %Net.SSH.SFTP.

To get the stream size you would use the SizeGet method on the stream.

However, be aware that during the transfer, depending on OS and methods used there may be translations of line terminators which would affect file size (often called ASCII mode).  This is not very common in SFTP, unlike standard FTP, but can still occur.  Also, I have found in the past that on a non-file stream the SizeGet is not always the same as the final file size when saved but that might just be my findings in special cases.

David Underhill · May 20, 2020 go to post

Hello Alexander,

I did eventually find that, we don't use Ensemble and I had expected some central classes but they are only available in an Ensemble enabled namespace.

It does look like the EnsLib.FTP.InboundAdaptor eventually breaks down the strings from LIST using expressions defined in OnInit based on the remote OS which I assume they get using SYST.

I still don't understand why this isn't part of %Net.FtpSession as I cannot use this without Ensemble and Ensemble namespaces have their own complications, such as 2 extra databases, we currently avoid.

I think I will raise a WRC to request this.

Thanks for the help.

David Underhill · Jul 6, 2020 go to post

Unfortunately Gartner won't accept your review if you work for a company that is linked to Intersystems in any way such as a VAR.

David Underhill · Jul 6, 2020 go to post

This is bringing back some nightmares memories, good old days of DSM, MSM, MaxiMumps, ISM, showing my age now.

David Underhill · Jul 6, 2020 go to post

All the current suggestions are possible, however, usually if it is a Cache/Ensemble start issue the exe will not crash but will report the database failed to start.

In this case the error is that the EXE itself crashed and this is likely why there is nothing in alerts.log or cconsole.log as it did not progress that far.

This implies either an issue with the EXE or with the config details it will read from the registry.

If you check Windows Event Viewer there may be more information there to help resolve.

Should you be unable to resolve then the simplest option would be to install a fresh copy of Cache/Ensemble, first try the repair option with the same version then try upgrading with a newer version, over the top.  This should not lose anything and will either highlight an installation issue or rebuild the problem configuration.

If that fails, keep a copy of the database files, wipe the existing installation and then rebuild, extreme but it depends on how long you want to spend trying to find the problem.

David Underhill · Jul 29, 2020 go to post

Thanks, that isn't in the Cache documentation but the property does exist and I have found the section in the Iris documantation though it would be helpful if it actually mentioned Implicit or Explicit rather than LegacySSL as this is not very meaningful when creating the connection.

David Underhill · Sep 7, 2020 go to post

Hello Robert,

Did you resolve this or log with our helpdesk?

Regards

David Underhill @ Chess

David Underhill · Sep 7, 2020 go to post

Just as a note, where you are manually building up your global in gbl you could use the $name function instead, for example...

setgbl="^NigelGlobal(""Subscript1"""_","_"""Subscript2"")"

can be

set gbl=$name(^NigelGlobal("Subscript1","Subscript2"))

which makes it easier to handle quotes etc...

update: ignore the very odd formatting this editor applied to the objectscript.

David Underhill · Dec 11, 2020 go to post

A dashboard for monitoring when SAM or a third party tool is not available.
Make sure there is the ability to add custom elements for the application and to select what elements are displayed to a user.
Also provide access to screens such as locks and processes with granular control over what they are able to do.

Essentially you don't want such users to have full management portal access just selected screens which are useful fronted by a monitor/dashboard that allows them to keep an eye on the database and application.

David Underhill · Dec 16, 2020 go to post

Ok, it requires a commercial license for DevExtreme which is a shame.

I think this is best as a configurable built-in dashboard but perhaps the demand is limited.

David Underhill · Feb 3, 2021 go to post

Assuming CacheBasic supports an asterisk as per ObjectScript (it is not mentioned in that documentation), I think it should be in the 'From' field not the 'To' field, i.e. one less comma before *.

David Underhill · Feb 9, 2021 go to post

It is far too long since I worked on Hospital systems to give an authoritative answer given extra restrictions you may have but for https the connection and data are already secure.

For outbound infrastructure can ensure it is routed outside appropriately and you could even limit traffic to specific external endpoints.

For inbound a load balancer or reverse proxy in the DMZ can keep your system away from the outside world and limit traffic both between the two and only allow specific external endpoints to have access.

David Underhill · Feb 24, 2021 go to post

As Eduard suggests, you need to know the class that the pInput object is derived from as it doesn't seem to be a valid Stream if .Size fails.

It also looks like you might be expecting a file as you retrieve the name so why not use the %File class if the file already exists.

In fact, noting how you get the Filename using the Attributes method this looks like the pInput object is a response with content which means the actual stream will be in pInput.Content

David Underhill · Mar 1, 2021 go to post

As far as I recall this isn't logged at the point the status becomes "dead" only when cleaned up.

We once wrote a scheduled task that looks for and logs these processes using IsGhost() as they can sit there a while waiting to be cleaned up at times.

There is a mention in the IRIS documentation that says these are logged to the Event Log but I am not sure what happens if you aren't using Interoperability or Productions in IRIS, I suspect there is no logging then as it is part of Production Monitoring.

David Underhill · Mar 3, 2021 go to post

That command isn't available and versions are held in the Windows Registry (HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Intersystems\IRIS\Configurations\{configuration}).

This is set up when you install an instance/configuration and shouldn't be edited.