Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Disable fetching all schemas? #18

Open
jpommerening opened this issue Nov 5, 2018 · 10 comments
Open

Disable fetching all schemas? #18

jpommerening opened this issue Nov 5, 2018 · 10 comments
Assignees
Labels
enhancement New feature or request
Milestone

Comments

@jpommerening
Copy link

Hi!

I'm just trying out splice for work.
We have a bunch of Oracle servers and each server is pre-configured with a bunch of enumerated schemas for each developer (think username01 through username20).

When connecting to one of those servers, Splice fetches all of these schemas giving me a list of a couple hundred items in the outline (of which I can only access the one matching my username) and freezing Splice for about a minute.

Since this is related to the way we set up our database server I guess there won't be a one-size-fits-all solution.
Is there a way to filter the schemas when setting up the connection? Maybe some advanced config option I don't know of?

@marcprux
Copy link
Member

marcprux commented Nov 5, 2018

Oracle's slow schema retrieval is a known issue. One thing that might help is to edit the connection's "Advanced" properties and change the "restrictGetTables" property from "false" to "true". That may reduce the number of schemas that are returned.

Other than that, we don't currently have a good way to restrict the schemas that are queried when you first connect, but you can hide the schema items that you aren't interested in seeing by selecting all the schema/table items and right-clicking to see the "Hide Item(s)" menu item, which will prevent the undesired schema items from being displayed. If you want to see the hidden items again later, you can select "View"/"Display Hidden Items".

Please let us know if this helps your scenario or not.

@marcprux marcprux added the enhancement New feature or request label Nov 5, 2018
@jpommerening
Copy link
Author

Hey Marc,

thanks for your super quick reply!

The "restrictGetTables" property does not seem to make a difference. I followed your advice hiding the schemas I'm not interested in and it works as expected, giving me a pleasantly snappy UI, thanks!
However, upon restarting Splice and reconnecting to that same database the app freezes again … and hasn't come back to life since. But it's maxing out one core, and keeps consuming memory (10GB and counting) so it seems to be doing something

@jpommerening
Copy link
Author

jpommerening commented Nov 5, 2018

In case it is of any help, here's a snippet I copied from Apple's crash reporter:

Date/Time:       2018-11-05 17:36:47 +0100
OS Version:      Mac OS X 10.13.6 (Build 17G65)
Architecture:    x86_64h
Report Version:  26

Data Source:     Stackshots

Command:         Splice
Path:            /Applications/Splice.app/Contents/MacOS/Splice
Identifier:      io.glimpse.Splice
Version:         1.1.0 (74)
App Item ID:     1363505768
App External ID: 828125501
Parent:          launchd [1]
PID:             46684

Event:           hang
Duration:        1.00s (process was unresponsive for 304 seconds before sampling)
Steps:           10 (100ms sampling interval)

Hardware model:  MacBookPro14,2
Active cpus:     4

Time Awake Since Boot: 870000s
Time Since Wake: 6700s

Fan speed:       4081 rpm

--------------------------------------------------
Timeline format: stacks are sorted chronologically
Use -i and -heavy to re-report with count sorting
--------------------------------------------------

Heaviest stack for the main thread of the target process:
  10  start + 1 (libdyld.dylib + 4117) [0x7fff714b3015]
  10  ??? (Splice + 11833) [0x10b3ede39]
  10  NSApplicationMain + 804 (AppKit + 23154) [0x7fff46bd5a72]
  10  -[NSApplication run] + 764 (AppKit + 223365) [0x7fff46c06885]
  10  -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 3044 (AppKit + 8224308) [0x7fff473a7e34]
  10  _DPSNextEvent + 2085 (AppKit + 268915) [0x7fff46c11a73]
  10  _BlockUntilNextEventMatchingListInModeWithFilter + 64 (HIToolbox + 194692) [0x7fff48960884]
  10  ReceiveNextEventCommon + 613 (HIToolbox + 195334) [0x7fff48960b06]
  10  RunCurrentEventLoopInMode + 286 (HIToolbox + 195990) [0x7fff48960d96]
  10  CFRunLoopRunSpecific + 483 (CoreFoundation + 545107) [0x7fff49676153]
  10  __CFRunLoopRun + 2586 (CoreFoundation + 548346) [0x7fff49676dfa]
  10  __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9 (CoreFoundation + 801817) [0x7fff496b4c19]
  10  _dispatch_main_queue_callback_4CF + 1148 (libdispatch.dylib + 54165) [0x7fff71485395]
  10  _dispatch_client_callout + 8 (libdispatch.dylib + 7608) [0x7fff71479db8]
  10  _dispatch_call_block_and_release + 12 (libdispatch.dylib + 38394) [0x7fff714815fa]
  10  ??? (<9825DEB3-0BC2-3916-8510-983B89C1ADF4> + 759696) [0x10bd8a790]
  10  ??? (<9825DEB3-0BC2-3916-8510-983B89C1ADF4> + 30325) [0x10bcd8675]
  10  ??? (<A8DBDF2A-47DE-394F-9785-98B0E5525A3E> + 2536390) [0x10d4fa3c6]
  10  ??? (<A8DBDF2A-47DE-394F-9785-98B0E5525A3E> + 2536214) [0x10d4fa316]
  10  ??? (<A8DBDF2A-47DE-394F-9785-98B0E5525A3E> + 507207) [0x10d30ad47]
  10  _NSSetObjectValueAndNotify + 262 (Foundation + 417393) [0x7fff4b7b7e71]
  10  -[NSObject(NSKeyValueObservingPrivate) _changeValueForKey:key:key:usingBlock:] + 61 (Foundation + 27685) [0x7fff4b758c25]
  10  -[NSObject(NSKeyValueObservingPrivate) _changeValueForKeys:count:maybeOldValuesDict:usingBlock:] + 769 (Foundation + 1543358) [0x7fff4b8cacbe]
  10  NSKeyValueDidChange + 475 (Foundation + 242477) [0x7fff4b78d32d]
  10  NSKeyValueNotifyObserver + 350 (Foundation + 244345) [0x7fff4b78da79]
  10  -[NSTreeControllerTreeNode observeValueForKeyPath:ofObject:change:context:] + 295 (AppKit + 10235511) [0x7fff47592e77]
  10  -[NSTreeControllerTreeNode updateChildNodesForKeyPath:affectedIndexPaths:] + 3422 (AppKit + 3143372) [0x7fff46ecf6cc]
  10  NSKeyValueDidChangeWithPerThreadPendingNotifications + 132 (Foundation + 1539664) [0x7fff4b8c9e50]
  10  NSKeyValueDidChange + 475 (Foundation + 242477) [0x7fff4b78d32d]
  10  NSKeyValueNotifyObserver + 350 (Foundation + 244345) [0x7fff4b78da79]
  10  -[NSOutlineViewBinder observeValueForKeyPath:ofObject:change:context:] + 425 (AppKit + 3152538) [0x7fff46ed1a9a]
  10  -[NSOutlineViewBinder _childrenChangedForNode:] + 123 (AppKit + 7346246) [0x7fff472d1846]
  10  -[NSOutlineView reloadItem:reloadChildren:] + 2828 (AppKit + 3432289) [0x7fff46f15f61]
  10  -[NSTableRowData _doWorkAfterEndUpdates] + 85 (AppKit + 1278608) [0x7fff46d08290]
  10  -[NSTableRowData _updateVisibleViewsBasedOnUpdateItemsAnimated] + 234 (AppKit + 2127328) [0x7fff46dd75e0]
  10  -[NSTableRowData _updateVisibleViewsBasedOnUpdateItems] + 3748 (AppKit + 2131408) [0x7fff46dd85d0]
  10  -[NSTableRowData _addRowViewForVisibleRow:withPriorView:] + 392 (AppKit + 1330897) [0x7fff46d14ed1]
  6  -[NSTableRowData _preparedRowViewForRow:storageHandler:] + 154 (AppKit + 10692970) [0x7fff4760296a]
  6  -[NSTableRowData _initializeRowView:atRow:] + 397 (AppKit + 1338020) [0x7fff46d16aa4]
  6  -[NSTableRowData _addViewsToRowView:atRow:] + 211 (AppKit + 1344545) [0x7fff46d18421]
  4  -[NSTableRowData _addViewToRowView:atColumn:row:] + 342 (AppKit + 1345351) [0x7fff46d18747]
  4  -[NSTableView(NSTableViewViewBased) makeViewForTableColumn:row:] + 87 (AppKit + 1347268) [0x7fff46d18ec4]
  4  ??? (<A8DBDF2A-47DE-394F-9785-98B0E5525A3E> + 4422141) [0x10d6c69fd]
  3  ??? (<A8DBDF2A-47DE-394F-9785-98B0E5525A3E> + 4421440) [0x10d6c6740]
  3  ??? (<7F7D2993-C5CF-398F-994F-0310B4E4659F> + 13273) [0x10b4023d9]
  3  ??? (<A8DBDF2A-47DE-394F-9785-98B0E5525A3E> + 4421980) [0x10d6c695c]
  2  ??? (<A8DBDF2A-47DE-394F-9785-98B0E5525A3E> + 4421616) [0x10d6c67f0]
  1  -[NSObject(NSKeyValueBindingCreation) bind:toObject:withKeyPath:options:] + 198 (AppKit + 611987) [0x7fff46c65693]
  1  +[NSProxy alloc] + 1 (Foundation + 303733) [0x7fff4b79c275] (running)

@marcprux
Copy link
Member

marcprux commented Nov 6, 2018

Thanks for the debug info. If the app ever comes back after the hang, are the schemas successfully hidden? And if you then "show hidden items", do they appear again?

@jpommerening
Copy link
Author

I gave it another shot, but it's been completely stuck for the past 10 minutes …

@marcprux
Copy link
Member

marcprux commented Nov 6, 2018

We're working on the performance issue and we will be issuing an update within the next few days. For the time being, your best bet is to delete the .splice file and create a new one and no hide the schemas for the Oracle connection. Once the update is released on the App Store, you should be able to go back to hiding the schemas.

Out of curiosity, about how many schemas are we talking about? Dozens, or hundreds?

@marcprux marcprux self-assigned this Nov 6, 2018
@marcprux marcprux modified the milestones: 1.1, 1.1.1 Nov 6, 2018
@marcprux
Copy link
Member

marcprux commented Nov 7, 2018

Release 1.1.1 should be available now. Can you try it out and see if it help address your issue?

@jpommerening
Copy link
Author

jpommerening commented Nov 7, 2018 via email

@marcprux
Copy link
Member

Did you manage to test this out? We're also working on a new release that provides some more performance improvements to schema fetching and hiding.

@jpommerening
Copy link
Author

Ah, sorry Marc, I wanted to reply earlier but it slipped my mind before I got around to it.

I tried it again with

Path:            /Applications/Splice.app/Contents/MacOS/Splice
Identifier:      io.glimpse.Splice
Version:         1.1.1 (76)
App Item ID:     1363505768
App External ID: 829202096

But no luck, still hangs. Let me know if I can help you out with more data :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants