Robo 3T 1.2 is released

We are very happy to announce the release of Robo 3T 1.2! In this release we have focused mostly on solving some popular issues. However, we still have some improvements. One major improvement is Qt version upgrade from 5.7.0 to 5.9.3 for better program stability, UI experience and Hi-DPI support. All of the changes can be seen below in “Table of Contents”:

Table of Contents

Bug Fixes
  1. Big double numbers are showing incorrectly (#1447)
  2. Aggregate query results are not pagaeble (#1058)
  3. Editing a projected document causes data override/loss (#881)
  4. Error when starting up SSH session (#1189)
  5. Robo 3T 1.1 fails to start on Ubuntu 17.XX (#1385)
  6. Robo 3T is not opening on MacOS High Sierra (#1412)
  7. Cannot load list of indexes (#1454)

Improvements:
  1. Qt version upgraded from Qt 5.7.0 to Qt 5.9.3
  2. Auto switch from HTTPS to HTTP feature
  3. Robo 3T is not buildable on latest MacOS High Sierra


Bug Fixes

1. Big double numbers are showing incorrectly (#1447)

Wit this version, we have some fixes for some representation problems of big double numbers and some enhancements for better usability of them.

Let’s start with a quick presentation of one of the problematic case and how it was fixed, then continue with more examples and details.

Below, we see the problem where users were unable to save the document due to trailing ‘.0’ characters in scientific notation of big double numbers.

In general, our goal was to represent and behave exactly like mongo shell does. With this in mind, we tried to achieve this goal as much as possible with the following changes:

  • Fix: Disabled trailing zeros for scientific format
  • Enhancement: For better usability, frequently used e+15 and e+16 values are shown in non-scientific format. (Note: Similarly, in mongo shell, from e+15 to e+20 values are shown non-scientific format, we wanted to behave exactly this way but could not due to some conversion problems)
  • Fix: ‘-inf’ was shown incorrectly as ‘Infinity’ in text mode
  • Fix: ‘Infinity/-Infinity’ are now always shown as ‘Infinity/-Infinity’. (The problem before was ‘Infinity’ was shown ‘inf’ in table mode and ‘Infinity’ in text mode.)

A short comparison of problematic (on the left) and fixed (on the right) cases with examples:

Robo 3T 1.1 (before)                Robo 3T 1.2 (after) -----------------------------       -------------------------"e14": 150512101156575.0,           "e14": 150512101156575.0,    "e15": 1.50512101156575e+15.0,      "e15": 1505121011565750.0,"e16": 1.50512101156575e+16.0,      "e16": 15051210115657500.0,"e17": 1.50512101156575e+17.0       "e17": 1.50512101156575e+17"e18": 1.50512101156575e+18.0       "e17": 1.50512101156575e+18"inf": inf                          "inf": Infinity"inf_": -inf                        "inf_": -Infinity

Finally, let’s see how these values are shown in mongo shell:

> db.getCollection('double').find({}).pretty(){        "e14" : 150512101156575,        "e15" : 1505121011565750,        "e16" : 15051210115657500,        "e17" : 150512101156575000,        "e18" : 1505121011565750000,        "inf" : Infinity,        "inf_" : -Infinity,}

2. Aggregate query results are not pagaeble (#1058)

The problem here was that aggregate query results were shown without paging bar (skip and batch fields). As a result it was not possible to page through the results.

The problematic case and the fix are shown below:


3. Editing a projected document causes data override/loss (#881)

4. SSH: Error when starting up SSH session (#1189)

This problem has kept us busy for a long time. The biggest challenge here was, we tried many different setups and configurations, but still we were unable to reproduce this issue in our systems.

We attempted to fix this problem with a small code change and decided to include this change in a Beta to let the users test. Fortunately, we have ‘mostly’ positive results. (See results: issues/1189#issuecomment-353354032)

Users who have this problem, mostly report errors in the format Error: Resource temporarily unavailable ..., two examples seen below:

Error: Resource temporarily unavailable. No supported authentication methods found. (Error #35)
Error: Resource temporarily unavailable. Error when starting up SSH session: -8. (Error #35)

Details
Also, this fix seems to be fixing SSH errors for systems which have this error in their SSH server logs:
kex protocol error: type 30 seq 1 [preauth]

Alternative Solution
In the link below, an alternative workaround solution can be seen submitted by one of our users:
issues/1125#issuecomment-323303611


5. Robo 3T 1.1 fails to start on Ubuntu 17.XX (#1385)

~/robo3t$ bin/robo3t This application failed to start because it could not find or load the Qt platform plugin "xcb"in "".Available platform plugins are: xcb....

Users have started to have this problem mostly on Ubuntu 17.04 which was an Ubuntu development release at the time of Robo 3T 1.1 release.
(Note: Later on, Ubuntu 17.xx release download link has been removed on official Ubuntu download page due to some security issues. Currently, the download links seems to be back again.)

With Robo 3T 1.2 (after Qt version upgrade to 5.9.3), this issue seems to be fixed.

Workaround Solution:
Luckily, we also had a relatively simple workaround solution which was to delete (or move) robo3t-1.1.1-linux-x86_64-c93c6b0/lib/libstdc++* file:

rm robo3t-1.1.1-linux-x86_64-c93c6b0/lib/libstdc++*

Details:
issues/1385#issuecomment-310014331

Note: We were unable to reproduce this issue, that’s why we released an unofficial Robo 3T 1.2 Beta in order to make sure this issue is fixed. (See results: issues/1385#issuecomment-353275110)


6. Robo 3T is not opening on MacOS High Sierra (#1412)

This issue was started be seen on MacOS High Sierra where users were unable to open/start Robo 3T program.

In order to solve this problem, we have upgraded our Qt version from 5.7.0 to Qt 5.9.3 and included a crash prevention change in our code with Robo 3T 1.2.

These changes were also included in version 1.2 Beta since we were unable to reproduce these crashes in our systems. For this issue also, we have mostly positive results. (See results: issues/1412#issuecomment-353276002)


7. Cannot load list of indexes problem (#1454)

This problem was seen when the index options document has unexpected values, such as "background" : 1 or "sparse" : 0 instead of correct values "background" : true or "sparse" : false.

Index document as an example below:

    {        "v" : 1,        "unique" : true,        "key" : {            "services.OS.id" : 1        },        "name" : "services.OS.id_1",        "ns" : "OS.users",        "sparse" : 1 // should be 'true' not 1    }

In this case, Robo 3T was unable to show/load indexes. After this fix, indexes were visible.

Both the problem and the solution can seen below:

Reference:
db.collection.createIndex:
https://docs.mongodb.com/manual/reference/method/db.collection.createIndex


Improvements:

1. Qt version upgraded from Qt 5.7.0 to Qt 5.9.3

We have upgraded Qt version from 5.7.0 (15-Jun-2016) to 5.9.3 (21-Nov-2017). Main reasons for this upgrade were to fix crashes and build problems for MacOS High Sierra.


2. Auto switch from HTTPS to HTTP feature

The reason to add this feature was some low level HTTPS related crashes mostly seen on Linux systems. With this feature, Robo 3T switches to HTTP in the next program start, after it detects HTTPS caused program abnormal exit/crash.

This feature is designed to be used for Welcome Tab where the data being exchanged is not user/critical data.

Note:
It is also possible to manually enable/disable this flag in config file.

robo-3t.json:

... "useHttps" : false,...

3. Robo 3T is not buildable on latest MacOS High Sierra

In order to solve this problem, we had to upgrade Qt version from 5.7.0 to .5.9.3 and also apply a QScintilla patch (QScintilla-2.9.3-xcode8.patch).

After these changes, Robo 3T could be built on MacOS High Sierra.

Download

Download Robo 3T 1.2, our best version of Robo 3T.

Enjoy!

Follow us on Twitter (@robomongo) to be notified about future releases. Please submit any found issues to our GitHub.