Release Notes

Public Feb 13 2020


All platforms - Gluon: Gluon now properly handles file system permissions (r-xr-xr-x). This was available only in the Plastic client until today!

The client will set the permissions on disk during the update and configure operations. Also, the checkin operation will save the changes you might do to them.

This improvement applies to 'cm partial' commands as well.


All platforms - Plastic: The Incoming Changes feature doesn't support the sub-branches. Before these changes, you weren't explicitly notified about this scenario. Now, Plastic will detect this situation and it will let you know that you need to perform a merge to get the head changes.

What is a sub-branch, then? We call "sub-branches" the situation that happens when a single branch has more than one line of changesets evolving in parallel. This scenario is often seen when working on distributed mode. Let's say there are 2 developers, John and Kate, who have workspaces pointing to the same branch. They checkin new changes each one in their server, and eventually, John pulls Kate's changes. They'll end up having something like this:


All platforms - Plastic: The Incoming Changes feature doesn't support workspace with transformer rules. Before these changes, you weren't explicitly notified about this scenario. Now, Plastic detects this situation and it lets you know the steps you need to do to get the head changes.


All platforms - Plastic: The Incoming Changes feature doesn't support a writable Xlink edited to point to a previous changeset. Before these changes, you weren't explicitly notified about this scenario. Now, Plastic detects this situation and it lets you know the steps you need to do to get the head changes.


Windows - Gluon: Incoming changes: The incoming changes view now allows you to check the items to update/resolve instead of obtaining all incoming changes.


All platforms - Command line client: calling cm workspace with the wrong number of arguments now shows the help for the workspace command, rather than the workspace create subcommand.


All platforms - Server: We optimized the performance checking the security of a query or a branch explorer.

Checking the security of 13000 branches:

* Before: It took 2300 ms.

* After: It takes 110 ms

The problem was that the server read the administrator over and over for each object that needed a security check. Now, it's only read once for all the objects to check.

This only improves Jet backend performance, since the sql-based backends already used an internal cache for the server administrator.


All platforms - Server: The security checks were slower after the first operation that a user runs after a server restart. It happened due to some internal cache clearing. This will not happen anymore.


All platforms - Server: Fixed the log that prints enqueued requests.

The log did not print the line "Max threads have been reached. No new thread is created. Waiting for a free thread." since we allowed to create several new threads in chunks a few months ago.


All platforms - Server: We improved the message when the client abruptly disconnects.

We were sometimes printing "end of file" in the logs when in reality the client side was closing the socket.


All platforms - Gluon: Improved the way the Incoming Changes deals with files that are locally changed in the workspace, out of date and are configured to use exclusive locking.

The local changes done in these files cannot be merged with the server changes since they were configured to use the exclusive checkout.

This scenario should be avoided by the user by locking (checking-out) the file before doing any change in it. Anyway, Gluon helped nothing once it occurred.

Now, Gluon gives a better feedback to the user in two ways:

1) The "Explore workspace" view shows the 'Cannot merge' status for the files under the previous circumstances.

2) The "Incoming changes" view reports that these changes cannot be applied with a proper explanation:

"Cannot checkout '/game/art/texture.bin' because you don't have the latest version. You will need to undo your changes to update to latest and lock. If you really need to preserve your changes, backup them manually. Please remember to lock this file in the future before making changes."


Plastic SCM Wwise Plugin: we improved the way we handle resources during potentially long operations like add, checkin, update and undo. Now, the GUI remains responsive during long operations, and you can cancel operations at any point.


Plastic SCM WWise Plugin: We now check the Plastic client version when you click "Test Connection" in the configuration dialog.

Note: the current minimum Plastic client version to use the Wwise plugin is


All platforms - Plastic, Gluon: We updated the pending changes in all our GUIs (or Checkin views, as you Gluon users may know them) to include a "Check/Clear all" checkbox right above the changes tree. This was already present in Windows, so now the remaining platforms have one less reason to be jealous. This new control is quite useful when you have a lot of changes, or they're distributed more than one category.


Linux - Plastic, Gluon: We've enhanced the pending changes tree. You'll notice that categories will display an intermediate state when some but not all changes inside them are checked. This provides better visual feedback when you have a lot of changes in a category, especially when you have checked items inside it but the scroll position doesn't have them on display.

Please note that not all GTK themes show this intermediate state. In that case, you'll only see it checked or unchecked.


Visual Studio Package: Our Visual Studio Package now supports the Incoming Changes.

You can find more info about Incoming Changes here


All platforms - Server: you can now configure the server by running plasticd configure.

The "configure" subcommand takes the same arguments as the deprecated clconfigureserver.exe.


Where previously you would have run

$ clconfigureserver

You can now run

$ plasticd configure

And, instead of

$ clconfigureserver --WorkingMode=UPWorkingMode --port=8084 --language=English

You can now run

$ plasticd configure --WorkingMode=UPWorkingMode --port=8084 --language=English


All platforms - Server: Servers that use a floating license wrongly included unauthenticated users in the Users Monitor. Now it will only list valid (i.e. authenticated) users.

These unauthenticated users come from calls from wrongly configured clients or connection profiles. These users cannot access the server, but they were still wrongly included on the Users monitor.

See an example: John has a local client & server, and he has its client configured with the user 'John'. When he tries to connect against the central server, the call fails and asks for valid user credentials.

Remarks: This was NOT a security issue. Unauthenticated users were not able to access the server. The problem was that wrong and valid users were listed all together in the Users Monitor.


All platforms - Proxy server: The download operation failed if the path to the cached storage files was incomplete, i.e. there were missing directories in the path, not just a missing file. This could happen if a client requested dehydrated revisions (i.e. replicated with --nodata) through a proxy. Those revisions don't get written to files, so the cache wasn't able to handle the missing directories in the path.


macOS - Server: We fixed an uncommon scenario in which the checkin operation could fail. The bug affects only servers running on newer macOS versions and using a SQL database backend (such as SQLite).

The issue was a zlib compress output buffer smaller than required. We could only reproduce this issue while checking in specific trees - and only when the server had just started. So, you've probably never encountered this, and now never will! Let's thank our automated test suite for finding this one, as otherwise it well could have gone unnoticed for years.


All platforms - Server: We fixed an issue with Active Method Calls that reported calls mistakenly.

We saw logs like these on our internal servers:

Name                 Request   IP             Time       Thread   Status    Protocol   Sec   User
Unknown-remoting       67793   77.231.x.x     00:00:01   1584     Proto     Remoting   SSL
Unknown-remoting       67792   51.38.x.x      00:00:01   1583     SslAuth   Remoting   None
Unknown-remoting       67791   77.231.x9.x0   00:00:03   1580     Proto     Remoting   SSL
Unknown-remoting       67790   77.231.x9.x0   00:00:03   1579     Proto     Remoting   SSL
Unknown-remoting       67789   77.231.x9.x0   00:00:03   1574     Proto     Remoting   SSL
Unknown-remoting       67788   77.231.x9.x0   00:00:03   1581     Proto     Remoting   SSL
Unknown-remoting       67787   77.231.x9.x0   00:00:03   1582     Proto     Remoting   SSL
Unknown-remoting       67750   77.231.x9.x0   00:05:45   1575     Proto     Remoting   SSL
Unknown-remoting       67749   77.231.x9.x0   00:05:45   1576     Proto     Remoting   SSL
Unknown-remoting       67748   77.231.x9.x0   00:05:45   1573     Proto     Remoting   SSL

And we suspected that some requests were 'hanged' somehow. But it wasn't true.

The problem was that when some requests failed due to network issues, we were not tracking that the request exited, so it looked like it was there already, but it wasn't true.


All platforms - Command line client: cm pull hydrate now lets you hydrate a changeset specified by GUID. Previously it accepted changeset ids, but failed for changeset GUIDs if you did not choose to specify the source branch.

For example:

cm pull hydrate cs:cadcf131-d7a4-4e4c-a665-fc04accb8c7f@myrepo@myserver:myport

...will now hydrate the specified changeset.


macOS - Plastic: The code review window reported index out of range errors when:

a) you opened a code review window whose first change is a changed file with semantic support

b) the semantic diff failed

c) the diff fell back correctly to text mode

d) you clicked the "toggle comments" button in the toolbar - the one that hides and shows the list of comments for the diffed file

This happened because the review comments didn't load after the error and the toggle button logic didn't consider the possibility of an uninitialized comments list.

We protected that scenario so that toggle button will check whether it can operate and also fallback text diffs will properly load the list of comments.


All platforms - Command line client: cm remove private now gives the correct output if you try to remove a file which does not exist.


a)Before this release:

$> cm remove private nonExistentFile --verbose
Deleted 1 individual files and 0 directory trees.
Deleted file:      /nonExistentFile

b)With this release:

$> cm remove private nonExistentFile --verbose
Deleted 0 individual files and 0 directory trees.
Could not delete 1 individual files and 0 directory trees.
Skipped missing file or directory: /nonExistentFile 


All platforms - Plastic, Gluon, Command line client: the new connection timeout didn't work with server aliases.

We introduced an issue with the new connection timeout we created back in version when a connection timed out, the alias system was not triggered. This is now fixed!

We also modified the internal network code so when a socket gets a timeout (it can be due to several reasons), the calls are not repeated and it fails fast.


Windows - Installer: We have detected a situation in which the workspace could be corrupted if you upgraded Plastic to version or higher with Office Plugin installed and any Word/Excel/PowerPoint instances opened.

Now, during a upgrade installation, when the Office Plugin is installed, the installer checks for any running instance of Word, Excel or PowerPoint. You need to close them before continuing with the upgrade installation.