MetaEdit+ 5.5 documentation updates

MetaEdit+ 5.5 includes HTML manuals, and as we make updates, additions or other formats of the manuals available we will provide them here.

The FAQ and Forums are also useful sources of information.

Efficient SOAP scaling with persistent connections

MetaEdit+ SOAP API server will use persistent connections if the client program allows. Some client SOAP libraries do not enable persistent connections by default, and then each SOAP call will open and close its own connection. As each connection has a Timer to enable timeout after 20 minutes, an API client program that uses non-persistent connections and makes over around 15,000 calls can start to run out of Timer resources, and run slowly.

To use persistent connections, see your SOAP client library documentation. The result will be visible in the HTTP exchanges in the log in the API Tool, as HTTP/1.1 without "Connection: close", or HTTP/1.0 with "Connection: keep-alive". E.g. in gSOAP, you can set this in the initialization with the SOAP_IO_KEEPALIVE flag:

soap_init1(&soap, SOAP_IO_KEEPALIVE);

With this change, an API program that previously took 42 minutes ran in 2½ minutes.

Windows Git bug workaround

Git on Windows has a bug with repositories created with --shared (i.e. core.sharedRepository = true). When committing in Git as part of Save Version etc., it results in errors:

error: unable to create temporary file: No such file or directory
error: xxx: failed to insert into database
error: unable to index file 'xxx'
fatal: adding files failed

The bug is easily reproducible in Windows Git without MetaEdit+, and has been reported to the Windows Git maintainers, but they have no immediate intention of fixing it. The bug seems to have appeared after 5.5 SR1 was released; it does not occur in Git 2.9.3.windows.2 (2016), is reported in the wild in 2017, and confirmed in 2.26.2.windows.1 and later.

For now, you can run the following in the Git repository directory, e.g. X:\git\demo:

git config --unset core.sharedRepository

MetaEdit+ Git integration used the --shared parameter in case users in a multi-user repository wanted to share not only the MetaEdit+ repository and remote Git repository, but also the local Git repository. This is not necessary or recommended, nor is it the default, so you can also change the MERL Git code in Graph to stop initializing repositories as shared, avoiding the Git bug and the need to turn sharing off.

  • in _vcsInit_git(), remove --shared at the start
  • in _vcsInitClone_git(), remove the whole line:
    ' --config core.sharedRepository=true'