SouthbankSoftware / dbkoda

State of the art MongoDB IDE
https://www.dbkoda.com
GNU Affero General Public License v3.0
870 stars 43 forks source link

Update Queries Do Not Finish #7

Closed agieocean closed 6 years ago

agieocean commented 6 years ago

When the following query is run:

db.[redacted].update(
    { "name" : "[redacted]" },
    {
      $set: { "email": "[redacted]" }
    }
)

The taskbar shows these icons: image but the query never finishes. Also worth mentioning that the connection is done through an ssh tunnel.

gharriso commented 6 years ago

Hi Max,

Thanks for giving dbKoda a try. I attempted to reproduce the issue, including on a tunneled SSH connection but did not see that behavior. Can I ask if the collection is particularly massive and/or is sharded (I did try a sharded update but you never know...). It would be very helpful if we could see a support bundle - this is created by hitting the little Exclamation icon in the bottom right: image The support bundle includes our logs as well as version information, etc. You can check the contents if you want to make sure it didn't capture anything you regards as confidential.

Thanks, Guy

agieocean commented 6 years ago

To answer your question, it's a very small collection, only about 140 documents, and it is not sharded. I'm currently trying to create a support bundle but it is taking some time. I will add it as a new comment (redacted if need be) once it is done.

agieocean commented 6 years ago

It's...still going? Is there a way to fix that?

gharriso commented 6 years ago

The support bundle? That is disturbing. It really just zips up the log file. Seems like dbKoda has lost it's little mind on your system - profound apologies!!

If you select Development from the top menu and "Toggle Dev Tools" you'll open the Javascript console which may give some clues as to what is going wrong. I'd be interested to see a screenshot of that if possible.

Then I would kill dbKoda, relaunch and try collecting a support bundle again.

Sorry about all that Max.

Guy

agieocean commented 6 years ago

Here is the log that I was able to save from the console:

app.74f65b418916ae3b87c4.js:20 Mobx observer: You are trying to use 'observer' on a component that already has 'inject'. Please apply 'observer' before applying 'inject'
T @ app.74f65b418916ae3b87c4.js:20
app.74f65b418916ae3b87c4.js:43 load primus successfully.
app.74f65b418916ae3b87c4.js:140 Restoring Store:  Object
app.74f65b418916ae3b87c4.js:140 Last Store Version: 0.8.1
app.74f65b418916ae3b87c4.js:154 NOPROFILE
app.74f65b418916ae3b87c4.js:154 Telemetry Enabled: true
app.74f65b418916ae3b87c4.js:140 350bcb6d-9283-4018-874b-394bffd85b78
app.74f65b418916ae3b87c4.js:140 App Rendered successfully !!!!!!!
app.74f65b418916ae3b87c4.js:154 Load from config.yml
app.74f65b418916ae3b87c4.js:154 Config loaded successfully!
app.74f65b418916ae3b87c4.js:154 Save to config.yml
app.74f65b418916ae3b87c4.js:154 Telemetry Enabled: false
app.74f65b418916ae3b87c4.js:154 config.yml updated
app.74f65b418916ae3b87c4.js:140 region:  [{"cols":[0,0],"rows":[1,1]}]
app.74f65b418916ae3b87c4.js:140 region:  []
app.74f65b418916ae3b87c4.js:140 region:  []
app.74f65b418916ae3b87c4.js:140 region:  []
app.74f65b418916ae3b87c4.js:140 region:  []
app.74f65b418916ae3b87c4.js:154 do nothing as the profile might have been swaped by the dropdown.
app.74f65b418916ae3b87c4.js:154 LOADING
app.74f65b418916ae3b87c4.js:154 nextProps.isVisible: false
app.74f65b418916ae3b87c4.js:66 TEST:  Array(2)
app.74f65b418916ae3b87c4.js:154 LOADED
app.74f65b418916ae3b87c4.js:154 200
app.74f65b418916ae3b87c4.js:154 !!! -  Object
app.74f65b418916ae3b87c4.js:154 t
app.74f65b418916ae3b87c4.js:154 Object
app.74f65b418916ae3b87c4.js:154 false
app.74f65b418916ae3b87c4.js:154 nextProps.isVisible: false
app.74f65b418916ae3b87c4.js:140 TableView-350bcb6d-9283-4018-874b-394bffd85b78
app.74f65b418916ae3b87c4.js:140 Object
app.74f65b418916ae3b87c4.js:154 !!! -  Object
app.74f65b418916ae3b87c4.js:154 nextProps.isVisible: false
app.74f65b418916ae3b87c4.js:140 TableView-350bcb6d-9283-4018-874b-394bffd85b78
app.74f65b418916ae3b87c4.js:140 Object
app.74f65b418916ae3b87c4.js:140 No Highlighted Text, Executing Line:  2
app.74f65b418916ae3b87c4.js:140 Executing Highlighted Text.
app.74f65b418916ae3b87c4.js:140 No Highlighted Text, Executing Line:  1
app.74f65b418916ae3b87c4.js:154 200
app.74f65b418916ae3b87c4.js:154 !!! -  Object
app.74f65b418916ae3b87c4.js:154 nextProps.isVisible: false
app.74f65b418916ae3b87c4.js:140 TableView-350bcb6d-9283-4018-874b-394bffd85b78
app.74f65b418916ae3b87c4.js:140 Object
app.74f65b418916ae3b87c4.js:154 !!! -  Object
app.74f65b418916ae3b87c4.js:154 nextProps.isVisible: false
app.74f65b418916ae3b87c4.js:140 TableView-350bcb6d-9283-4018-874b-394bffd85b78
app.74f65b418916ae3b87c4.js:140 Object
app.74f65b418916ae3b87c4.js:140 No Highlighted Text, Executing Line:  1
app.74f65b418916ae3b87c4.js:140 No Highlighted Text, Executing Line:  1
app.74f65b418916ae3b87c4.js:154 200
app.74f65b418916ae3b87c4.js:154 !!! -  Object
app.74f65b418916ae3b87c4.js:154 nextProps.isVisible: false
app.74f65b418916ae3b87c4.js:140 TableView-350bcb6d-9283-4018-874b-394bffd85b78
app.74f65b418916ae3b87c4.js:140 Object
app.74f65b418916ae3b87c4.js:154 !!! -  Object
app.74f65b418916ae3b87c4.js:154 nextProps.isVisible: false
app.74f65b418916ae3b87c4.js:140 TableView-350bcb6d-9283-4018-874b-394bffd85b78
app.74f65b418916ae3b87c4.js:140 Object
app.74f65b418916ae3b87c4.js:154 200
app.74f65b418916ae3b87c4.js:154 !!! -  Object
app.74f65b418916ae3b87c4.js:154 nextProps.isVisible: false
app.74f65b418916ae3b87c4.js:140 TableView-350bcb6d-9283-4018-874b-394bffd85b78
app.74f65b418916ae3b87c4.js:140 Object
app.74f65b418916ae3b87c4.js:154 !!! -  Object
app.74f65b418916ae3b87c4.js:154 nextProps.isVisible: false
app.74f65b418916ae3b87c4.js:140 TableView-350bcb6d-9283-4018-874b-394bffd85b78
app.74f65b418916ae3b87c4.js:140 Object
app.74f65b418916ae3b87c4.js:154 Changing Tab to  350bcb6d-9283-4018-874b-394bffd85b78
app.74f65b418916ae3b87c4.js:154 nextProps.isVisible: false
app.74f65b418916ae3b87c4.js:140 350bcb6d-9283-4018-874b-394bffd85b78
app.74f65b418916ae3b87c4.js:140 db.user.update({ "name" : "[redacted]" },{$set: { "email": "[redacted]" }});
app.74f65b418916ae3b87c4.js:140 Sending data to feathers id  d4e5f680-e022-11e7-8c41-b5b2f6b7532a :  d4e61d90-e022-11e7-8c41-b5b2f6b7532a db.user.update({ "name" : "[redacted]" },{$set: { "email": "[redacted]" }}); .
app.74f65b418916ae3b87c4.js:154 Changing Tab to  TableView-350bcb6d-9283-4018-874b-394bffd85b78
app.74f65b418916ae3b87c4.js:154 nextProps.isVisible: false
app.74f65b418916ae3b87c4.js:140 TableView-350bcb6d-9283-4018-874b-394bffd85b78
app.74f65b418916ae3b87c4.js:140 Object
app.74f65b418916ae3b87c4.js:154 Changing Tab to  350bcb6d-9283-4018-874b-394bffd85b78
app.74f65b418916ae3b87c4.js:154 nextProps.isVisible: false
app.74f65b418916ae3b87c4.js:140 350bcb6d-9283-4018-874b-394bffd85b78
app.74f65b418916ae3b87c4.js:154 deleted editor  Object
app.74f65b418916ae3b87c4.js:154 350bcb6d-9283-4018-874b-394bffd85b78
app.74f65b418916ae3b87c4.js:154 activeDropdownId: d4e5f680-e022-11e7-8c41-b5b2f6b7532a , id: 350bcb6d-9283-4018-874b-394bffd85b78, shellId: d4e61d90-e022-11e7-8c41-b5b2f6b7532a
app.74f65b418916ae3b87c4.js:154 nextProps.isVisible: false
app.74f65b418916ae3b87c4.js:140 e
app.74f65b418916ae3b87c4.js:140 SimpleQuery
app.74f65b418916ae3b87c4.js:140 treeAction
app.74f65b418916ae3b87c4.js:39 dbe.sampleCollection("socks","user");
app.74f65b418916ae3b87c4.js:39 dbe.sampleCollection("socks","user");
app.74f65b418916ae3b87c4.js:39 dbe.sampleCollection("socks","user");
app.74f65b418916ae3b87c4.js:66 Query: db
app.74f65b418916ae3b87c4.js:154 t
app.74f65b418916ae3b87c4.js:140 5ac0c329-ca1b-4ff0-89b8-a3e761e58c0e
app.74f65b418916ae3b87c4.js:154 350bcb6d-9283-4018-874b-394bffd85b78
app.74f65b418916ae3b87c4.js:154 activeDropdownId: d4e5f680-e022-11e7-8c41-b5b2f6b7532a , id: 350bcb6d-9283-4018-874b-394bffd85b78, shellId: d4e61d90-e022-11e7-8c41-b5b2f6b7532a
app.74f65b418916ae3b87c4.js:154 LOADED
app.74f65b418916ae3b87c4.js:154 t
app.74f65b418916ae3b87c4.js:154 Object
app.74f65b418916ae3b87c4.js:154 false
app.74f65b418916ae3b87c4.js:140 350bcb6d-9283-4018-874b-394bffd85b78
app.74f65b418916ae3b87c4.js:154 5ac0c329-ca1b-4ff0-89b8-a3e761e58c0e
app.74f65b418916ae3b87c4.js:154 activeDropdownId: d4e5f680-e022-11e7-8c41-b5b2f6b7532a , id: 5ac0c329-ca1b-4ff0-89b8-a3e761e58c0e, shellId: a6923180-f496-11e7-91cd-09c7cb9817f2
app.74f65b418916ae3b87c4.js:140 5ac0c329-ca1b-4ff0-89b8-a3e761e58c0e
app.74f65b418916ae3b87c4.js:140 No Highlighted Text, Executing Line:  1
app.74f65b418916ae3b87c4.js:154 deleted editor  Object
app.74f65b418916ae3b87c4.js:154 5ac0c329-ca1b-4ff0-89b8-a3e761e58c0e
app.74f65b418916ae3b87c4.js:154 activeDropdownId: d4e5f680-e022-11e7-8c41-b5b2f6b7532a , id: 5ac0c329-ca1b-4ff0-89b8-a3e761e58c0e, shellId: a6923180-f496-11e7-91cd-09c7cb9817f2
app.74f65b418916ae3b87c4.js:154 deleted editor  Object
app.74f65b418916ae3b87c4.js:154 1: 5ac0c329-ca1b-4ff0-89b8-a3e761e58c0e
app.74f65b418916ae3b87c4.js:154 2: 350bcb6d-9283-4018-874b-394bffd85b78
app.74f65b418916ae3b87c4.js:154 t
app.74f65b418916ae3b87c4.js:154 Object
app.74f65b418916ae3b87c4.js:154 false
app.74f65b418916ae3b87c4.js:140 350bcb6d-9283-4018-874b-394bffd85b78
app.74f65b418916ae3b87c4.js:154 remove shell successfully,  Object
app.74f65b418916ae3b87c4.js:66 executeCommand: Handle rejected promise (Error: Timeout of 60000ms exceeded calling mongo-sync-execution::update) here.
app.74f65b418916ae3b87c4.js:140 resolveQueries: Handle rejected promise (Error: Timeout of 60000ms exceeded calling mongo-sync-execution::update) here.
app.74f65b418916ae3b87c4.js:140 getFieldsFromDefinitions: Handle rejected promise (Error: Timeout of 60000ms exceeded calling mongo-sync-execution::update) here.
app.74f65b418916ae3b87c4.js:140 CreateForm: Handle rejected promise (Error: Timeout of 60000ms exceeded calling mongo-sync-execution::update) here.
app.74f65b418916ae3b87c4.js:154 Changing Tab to  TableView-350bcb6d-9283-4018-874b-394bffd85b78
app.74f65b418916ae3b87c4.js:154 nextProps.isVisible: false
app.74f65b418916ae3b87c4.js:140 TableView-350bcb6d-9283-4018-874b-394bffd85b78
app.74f65b418916ae3b87c4.js:140 Object
app.74f65b418916ae3b87c4.js:140 !!! - Update Tree Topology:  false
localhost/:1 WebSocket connection to 'ws://127.0.0.1:3030/primus?_primuscb=M3Mo8SM' failed: WebSocket is closed before the connection is established.
localhost/:1 WebSocket connection to 'ws://127.0.0.1:3030/primus?_primuscb=M3NgZlR' failed: WebSocket is closed before the connection is established.
localhost/:1 WebSocket connection to 'ws://127.0.0.1:3030/primus?_primuscb=M3NghpC' failed: WebSocket is closed before the connection is established.
localhost/:1 WebSocket connection to 'ws://127.0.0.1:3030/primus?_primuscb=M3NgqFx' failed: WebSocket is closed before the connection is established.
localhost/:1 WebSocket connection to 'ws://127.0.0.1:3030/primus?_primuscb=M3Ng-k0' failed: WebSocket is closed before the connection is established.
localhost/:1 WebSocket connection to 'ws://127.0.0.1:3030/primus?_primuscb=M3NhDdL' failed: WebSocket is closed before the connection is established.
localhost/:1 WebSocket connection to 'ws://127.0.0.1:3030/primus?_primuscb=M3NhVJo' failed: WebSocket is closed before the connection is established.
localhost/:1 WebSocket connection to 'ws://127.0.0.1:3030/primus?_primuscb=M3Ni1yU' failed: WebSocket is closed before the connection is established.
localhost/:1 WebSocket connection to 'ws://127.0.0.1:3030/primus?_primuscb=M3Ninm4' failed: WebSocket is closed before the connection is established.
primus.js:3191 WebSocket connection to 'ws://127.0.0.1:3030/primus?_primuscb=M3NkOvr' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
opening @ primus.js:3191
app.74f65b418916ae3b87c4.js:154 Error: Timeout of 30000ms exceeded calling supportBundle::get
    at app.74f65b418916ae3b87c4.js:202
(anonymous) @ app.74f65b418916ae3b87c4.js:154
app.74f65b418916ae3b87c4.js:154 Uncaught (in promise) ReferenceError: reject is not defined
    at app.74f65b418916ae3b87c4.js:154
    at <anonymous>
app.74f65b418916ae3b87c4.js:154 Error: Timeout of 30000ms exceeded calling supportBundle::get
    at app.74f65b418916ae3b87c4.js:202
(anonymous) @ app.74f65b418916ae3b87c4.js:154
app.74f65b418916ae3b87c4.js:154 Uncaught (in promise) ReferenceError: reject is not defined
    at app.74f65b418916ae3b87c4.js:154
    at <anonymous>
app.74f65b418916ae3b87c4.js:154 Error: Timeout of 30000ms exceeded calling supportBundle::get
    at app.74f65b418916ae3b87c4.js:202
(anonymous) @ app.74f65b418916ae3b87c4.js:154
app.74f65b418916ae3b87c4.js:154 Uncaught (in promise) ReferenceError: reject is not defined
    at app.74f65b418916ae3b87c4.js:154
    at <anonymous>
(anonymous) @ app.74f65b418916ae3b87c4.js:154
app.74f65b418916ae3b87c4.js:154 Error: Timeout of 30000ms exceeded calling supportBundle::get
    at app.74f65b418916ae3b87c4.js:202
(anonymous) @ app.74f65b418916ae3b87c4.js:154
app.74f65b418916ae3b87c4.js:154 Uncaught (in promise) ReferenceError: reject is not defined
    at app.74f65b418916ae3b87c4.js:154
    at <anonymous>
(anonymous) @ app.74f65b418916ae3b87c4.js:154
agieocean commented 6 years ago

Here is the support bundle I was able to grab after the kill and restart:

LINK REMOVED

michaeljharrison commented 6 years ago

Hey Max,

We've been trying to reproduce the exact issue on machines here and we can't seem to get the behaviour to show up. Sorry for all this messing about but we really appreciate you taking the time to send us the logs so we can improve the product. We came up with a few things to get a bit more information so we can try to reproduce the issue:

Cheers, Michael from dbKoda.

agieocean commented 6 years ago

What Version of Windows are you running and do you have administrator privileges? I am running Windows 10 Home Insider Preview Build 17063.rs_prelease.171213-1610 and yes. If you do have admin privileges does running the app as Administrator solve the issue? No. Are you able to execute other simple queries in dbKoda like "show collections" No. However the gui shows my collections and I can view my collections as a table. Are you able to run the mongo client directly from powershell without issue? Apologies for this response, can you please link a suitable mongo powershell client so I can attempt that?

As a note, this setup does work, as I built a tool in python to get around this temporarily using mongoengine and sshtunnel.

michaeljharrison commented 6 years ago

Hi Max,

Sorry for the delay in responding, we've been working hard to reproduce this issue but we can't seem to get the exact same behaviour, we think it may be due to some back end dependencies so we've created a custom build of the product with updates that might at least shed some more light on the issue. You can download that custom binary here: https://s3-ap-southeast-2.amazonaws.com/southbanksoftware.com/appveyor/dbKoda-0.9.0-beta.1-75.master.exe

Here are some steps you can try within the new build of the product:

  1. Right click on your connection profile in the top left panel and select "New Local Terminal", once that terminal is started try entering the command "mongo", what do you get back?
  2. Create a new connection to your mongo server and run some commands, does that work?
  3. Create a new support bundle for us to analyse.

Again I'd just like to say sorry for all the problems you're encountering. Cheers, Michael from dbKoda.

agieocean commented 6 years ago

Now when I attempt to connect I get this:

<br/> MongoDB shell version v3.4.7
.Enter password:
.connecting to: mongodb://127.0.0.1:6005/[Database Redacted]
.MongoDB server version: 3.4.5
.2018-01-11T19:30:39.438-0500 E QUERY    [thread1] Error: Authentication failed. :
.DB.prototype._authOrThrow@src/mongo/shell/db.js:1461:20
.@(auth):6:1
.@(auth):1:2
.exception: login failed
.'[Password Redacted]' is not recognized as an internal or external command,
.operable program or batch file.
. <br/>

Here's my configuration, I had to redo it since installing the new build wiped out my config, let me know if I did something wrong. image

I'd also like to take a moment to thank you and this team for working on this tool!

michaeljharrison commented 6 years ago

That's pretty peculiar, could you send us through a support bundle after trying this so we can analyse the logs?

agieocean commented 6 years ago

redactedSupportBundle.zip

State store is left out because that contains database info.

michaeljharrison commented 6 years ago

Okay so we're still not 100% but we think we've found a valuable clue in there, thanks so much for bearing with us in all this and your patience, I think we're nearly there.

We've noticed in your logs, when we open your mongo shell we receive this output: , id=83dc83c0-f72f-11e7-a2f7-ed2c72bcd717, shellId=83dc83c1-f72f-11e7-a2f7-ed2c72bcd717, output=Enter password:

This enter password prompt is not something we expect to see from the Mongo Shell with default behaviour, as it should only occur if the --pasword option is set without any value when creating the shell (something we don't think we're doing, at least not deliberately). Do you have any modifications to your mongo binary or anything specified in your .mongorc file?

You can test if this is the behaviour you get by opening powershell as administrator and then:

Are you able to connect and execute commands, and were you prompted for your password at log in?

agieocean commented 6 years ago
  1. There is nothing in my .mongorc.js file
  2. Running these commands I was able to connect to a local instance, I was not prompted for a password and I was able to execute commands.
michaeljharrison commented 6 years ago

Hey Max, From our research it looks like the reason this password prompt may be occuring is if there are any special characters in your password like the & character, when we spawn a mongo instance those special characters can be interpreted wrongly and cause some odd behaviour. One of our developers has made a modified version of the product which should handle these characters a lot better. You can try that version of the product here:

https://s3-ap-southeast-2.amazonaws.com/southbanksoftware.com/appveyor/dbKoda-0.9.0-beta.1-78.master.exe

Again I'd like to thank you for helping us out with this issue and for all your patience, we'd like to send you some dbKoda swag as a thank you, if you could email support@southbanksoftware.com with your t-shirt size and preferred mailing address we can organize to deliver you some cool stuff :)

agieocean commented 6 years ago

Fantastic! That was it! Thank you so much for all your help, and I've emailed support with the requested info!