Release Notes

Public Jan 31 2020


Command line client: We edited the explanation of the cm attribute edit command to show you how to specify a default list of values for an attribute. We also included an example to be clearer.


All platforms - Server: Improved the ChannelCall log with more details:

* Added mt (method time) to plasticproto, it was always zero before.

* Changed prt (process time, basically request time) in remoting to measure the entire request, now it is comparable to plasticproto.

* Added precise tracking to network times (millisecond precision) and lz4 compression/decompression

* Plastic Protocol and Remoting calls are now easier to compare - they are properly aligned!

2020-01-24 15:45:17,495 21 (null)    INFO  ChannelCall - conn:     2 protocol:plasticproto sec:none recb:      21|rect:   0|sentb: 4232249|sendt:  17|queuedt:       0|prt:     203|th:   21|dest:   0|mt:       0|sert: 186|zip:   0|cpu:     203||user:pablo|GetChangesetTree
2020-01-24 15:45:49,187 24 (null)    INFO  ChannelCall - conn:     3 protocol:    remoting sec:none recb:     762|rect:   0|sentb: 5835118|sendt:   3|queuedt:       0|prt:      62|th:   24|dest:   0|mt:       0|sert:  47|zip:   0|cpu:      62||user:pablo|GetChangesetTree


All platforms - Server: Serialization in Plastic protocol improved even more.

We are working on performance to boost Plastic Protocol performance as much as we can. Starting from this release, Plastic Protocol will serialize data (big trees) faster than remoting. We still need to add a buffer pool but this will come soon.


All platforms - Server: We optimized the Plastic Protocol serialization performance.

We use a binary protocol for network serialization that we called Plastic Protocol. We still have an ancient one called Remoting. We found out that remoting was serializing trees (and metadata in general) faster, due to the way we serialize in Plastic Protocol.

The problem was an intermediate buffer we used to group metadata before sending it to the network. Writing to it was slow and it was killing performance.

We fixed it and now serialization time in Plastic Protocol is as good as Remoting. It means that Plastic Protocol calls (the defaults) are now consistently faster than Remoting.

With the test trees we used:

* Before: Remoting needed 31-47 ms to serialize a 5MB tree. Plasticproto needed 87-113.

* After: Plasticproto is now 40-50 ms. We still have some room for improvement. But, since remoting sends more data (less effective protocol), Plasticproto should be consistently faster now.


All platforms - Server, Plastic, Command line client: We changed a message for when SSL negotiation fails.

Before, we printed:

Server yourserver:8084 does not support SSL.

Whilst now it says:

SSL negotiation with server yourserver:8084 failed.

And it will print extra info if possible.

We found this while debugging some unit tests that failed sporadically, and we thought it would be good in production too.


macOS - Plastic: Great news! You'll notice that branch code reviews now allow you to review changeset by changeset! There is a new switcher in the upper left corner of the window that enables you to switch back and forth between this new mode and the already supported "entire branch" review.

Selecting a changeset in the list will recalculate the changes you see in the upper right panel so you can diff any of them. This provides a quick way to go through all changes in the branch you're reviewing.

We're really excited about this, as we encourage our users to review their peers changeset by changeset. This provides a better insight about what the developer had in their mind and their thought process.

You can see it in action in this video we recorded for you. We hope you'll like this as much as we do!


All platforms - Plastic: Workspaces pointing to Cloud repositories did not support Global Configuration. There were invalid characters in the name of the workspace pointing to the global configuration (the @ bit). That's fixed now! You can create and use your plastic-global-config repository in the Cloud.

You can read more about Global Configuration in the documentation


All platforms - Plastic: The Pending Changes view did not show cloaked controlled changes (e.g. after performing a merge operation that involved them). It is fixed now!


Windows - Plastic: Closing a Plastic view while loading its content could break the workspace metadata under very specific concurrency circumstances. That left the workspace pointing to the changeset 0 and created files plastic.wktree.bak and plastic.changes.bak inside the workspace metadata folder ($workspace_root/.plastic).

Using different Plastic clients concurrently (e.g. Plastic GUI, cm CLI, Visual Studio Plugin or Unreal plugin) increased the chances of hitting this issue.

This happened because we handled the abort exception as an actual problem reading the workspace tree. Now it's fixed.