Stop a Tableau Extract Refresh without stopping Server

Oh no! I kicked off this Tableau extract and I need to take it back!! How do I stop it?

As long as I’ve been using Tableau, the ‘run-away’ extract has always eluded me. Sure, there’s netstat and procexp that can sort of get you there in a pretty raw way. If it’s late at night and there’s just one job running, that’s pretty easy to find the port and process ID (netstat -ano in PowerShell 3+).

bye-bye-ts-2
Oops. We didn’t want to run that one.

The challenge is when you have multiple backgrounders (on multiple machines) and they’re all active; you then start asking: which one is it? Hopefully, you guess correctly and, voila, it’s gone.

Until now.

bye-bye-ts-1
The process id for the currently running extract

Here’s what we’ll do:

1.) grab the log from this directory: C:\ProgramData\Tableau\Tableau Server\data\tabsvc\vizqlserver\Logs and follow (or parse) this log: backgrounder*.txt

NOTE: If you have a Log Analytics strategy, you can easily follow this log file and leverage some of the vendor’s command line tools to make this process entirely automatic.

2.) Wrap your code in a PowerShell function which allows you to enter your TWB/TDS name.

Stop-TsExtract -ExtractName '<some name>'
bye-bye-ts-3
The result of stopping the process.

3.) The file in #1 is JSON so it’s super easy to parse and dig out the ‘PID’ which, believe it or not, corresponds to the process on your Tableau Server box. We’re going to look for this key/value pair:

k="ds-parser-connect-extract" AND v.caption=<name of your data source/workbook>

NOTE: You could also look for the session via “k=lock-session” (which you then have to correlate from the other backgrounder log file) but this next value gives you the ability to grab (and enter) the data source/workbook name.

4.) Now, if you’ve set up PowerShell remoting or SSH, you remote into your Tableau Server (via Invoke-Command) and enter (where the variable procID is the backgrounder process):

gps -Id $procID | kill -Verbose

 

BONUS

If you remember, I posted about refreshing your Tableau extracts via Slack here. Well, the next step (if you want to open this up outside the admin group) is the let users drop the name of a data source/workbook in a Slack channel. Those background jobs they enter will be stopped if they’re accidentally started.

Oh, and, I should mention: test, test, test.  This isn’t supported by Tableau, but people believe it should be:) Make your vote count.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s