Unable to Save New Piston


#1

Hey folks,

I’m running the latest code (v0.3.113). Tried creating a new piston this morning but I can’t get anything to save. It appears the piston got created (as a duplicate of another) but the save is not working. I get ‘Saving’ and ‘Finishing up’ messages then it just remains on the piston editing page. Live Logging shows the following:

error java.lang.reflect.UndeclaredThrowableException @line 1166 (api_intf_dashboard_piston_set_save)

Any help would be appreciated.


#2

Is it a large piston? Try cleanup & rebuild data cache first. Haven’t seen that error in this context before, in the past it has meant that a child app errored out.


#3

No, it’s very small and simple. I just tried the clean-up but it hasn’t helped. I’ll keep poking around.

UPDATE: I’m getting the same error on a brand new piston (not created as a duplicate of another) and if I try to save an existing piston.


#4

At account.smartthings.com > My Locations > smartapps can you find the newly created piston? If so, click it and let me know whether any of the following are set in the Settings section or if the piston data looks empty or inaccurate:

  • author
  • bin
  • chunk:0

How about these in the State section?

  • modifiedVersion
  • piston

Please do not share the values to any of those, just check whether they exist and have a non-blank value.


#5

Yes, the piston is shown there.

I have ‘modified’ not ‘modifiedVersion’ and it has a value.

However ‘piston’ is showing {}

All others have what look like valid values.

UPDATE: Hold on, checking something.

UPDATE: Okay, sorry. I thought perhaps ‘piston’ showed {} because I hadn’t put anything in the new test piston yet. But even if I add some statements ‘piston’ remains {} after the attempted save.


#6

Perfect, that was very helpful. So when a piston is created (after you choose a name and before you save anything to it) it has an author and pretty much nothing else. The fact that it has bin but not piston points at the exact line of code where that error is thrown (we have the line in the webCoRE smart app but it obscures the actual error which is in webCoRE Piston). Unfortunately I have no idea why it would fail here, let’s try something else.

Try editing the webCoRE Piston smart app to add three logging lines around line 502. Shown here with the line above and below, you can paste in just the debug log line then save and publish:

    state.build = (int)(state.build ? (int)state.build + 1 : 1)
    debug "${data.n} (${mem()}) initialized state"  // paste this line
    def piston = [
    app.updateSetting('author', [type: 'text', value: state.author ?: ''])
    debug "${data.n} (${mem()}) updated settings, now setting piston state ${groovy.json.JsonOutput.toJson(piston)}" // paste this line
    state.piston = piston
    debug "${data.n} (${mem()}) set piston state" // paste this line
    state.trace = [:]

Once that is done, try to create a new piston, blank is fine just click Save when the editor opens. You should see the new piston name pop up in Live Logging and at least one of these debug messages. In a normal case, the logs will show something like this:

debug ║ webCoRE Piston #39 (0% (416 bytes)) set piston state
debug ║ webCoRE Piston #39 (0% (360 bytes)) updated settings, now setting piston state {"o":{"ced":0,"cto":0},"r":[],"rn":false,"rop":"and","s":[],"v":[],"z":""}
debug ║ webCoRE Piston #39 (0% (346 bytes)) initialized state

Let me know which of those debug log lines you see.


#7

Very clear instructions, thanks.

Here’s the code snippit showing the debug lines added (so you can verify I did it right).

def setup(data, chunks) {
	if (!data) return false
    state.trace = [:]
    state.logs = []
    state.hash = [:]
	state.modified = now()
    state.build = (int)(state.build ? (int)state.build + 1 : 1)
    debug "${data.n} (${mem()}) initialized state"
    def piston = [
    	o: data.o ?: {},
    	r: data.r ?: [],
    	rn: !!data.rn,
		rop: data.rop ?: 'and',
		s: data.s ?: [],
        v: data.v ?: [],
        z: data.z ?: ''
    ]
    if (data.n) app.updateLabel(data.n)
    setIds(piston)
    for(chunk in settings.findAll{ it.key.startsWith('chunk:') && !chunks[it.key] }) {
    	app.updateSetting(chunk.key, [type: 'text', value: ''])
    }
    for(chunk in chunks) {
    	app.updateSetting(chunk.key, [type: 'text', value: chunk.value])
    }
    app.updateSetting('bin', [type: 'text', value: state.bin ?: ''])
    app.updateSetting('author', [type: 'text', value: state.author ?: ''])
    debug "${data.n} (${mem()}) updated settings, now setting piston state ${groovy.json.JsonOutput.toJson(piston)}"
    state.piston = piston
    debug "${data.n} (${mem()}) set piston state"
    state.trace = [:]
    state.schedules = []
    state.vars = state.vars ?: [:];
    state.modifiedVersion = version()

However, I’m not seeing anything new in Live Logging - just the prior error.

I did save and publish before doing the test create/save.


#8

Interesting, yep that code looks correct. So to make sure we’re on the same page, this is the test

  1. Create a new blank piston with a unique name (e.g. Broken Piston #1)
  2. When the editor opens, save the piston without making any changes
  3. Save fails

And the result of that test on the smartapps page:

  • Broken Piston #1 exists and has values for author, bin, and chunk:0 but not modifiedVersion or piston
  • Broken Piston #1 does not appear in Live Logging or does appear but logs nothing

Is all of that accurate?


#9

All correct except the last bullet. After attempting the save in the editor I get the message in live logging mentioned in post #1 above. I am not getting anything for the new debug lines. By the latter I mean nothing appears in Live Logging for those lines at all (versus debug lines present with no info).


#10

Perfect! Thanks for confirming. Unfortunately there is nothing more that I can do, but tomorrow I will try to get someone from SmartThings to take a look at your account to see if we can get more info on that error. Would you please PM me your ST username (account.smartthings.com > click your email in the upper right > Copy Username line beginning user_uuid:)?


#11

No worries. I do appreciate you trying to debug this with me this far.

PM coming.

Thanks


#12

If anyone else has this problem please post a reply and tag @ipaterson. @Nezmo was able to resolve the issue but I need to know if this affects anyone else.


#13

@ipaterson I currently am experiencing an issue with saving new and existing pistons and resuming paused pistons. I have done the following:

  • Rebooted my PC
  • Cleanup & Rebuild - success
  • Attempted to create a piston to resume one of the paused pistons - failure (could not save)
  • went to account.smartthings.com and went to my smart apps, all of my pistons have an author, but most have a bin value of “”.

Notes:

  • Pistons that are active continue to run.
  • v.0.3.113 (Latest)
  • This appears to have started 4 days ago, I found two pistons that were stuck and not reacting to new triggers. When I went to my dashboard, they appeared to have a clock indicating 4 days and growing so I assumed that was saying how long the piston had run for.

#14

Do you see any errors at account.smartthings.com > Live Logging when you try to create or resume a piston?


#15

@ipaterson If there is a cleaner way to present this please let me know, I saved a piston and here’s the output of the live logs

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:16 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:19 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:16 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:17 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[22f37ed3-e945-461d-9d9c-e088a4733c41](https://graph.api.smartthings.com/ide/logs#22f37ed3-e945-461d-9d9c-e088a4733c41) 1:50:23 PM: error java.util.concurrent.TimeoutException: Execution time exceeded 20 app execution seconds: 282206873277781 @line -1 (error)

[e18f025d-5b86-4c1c-bbb6-166ae76b04a7](https://graph.api.smartthings.com/ide/logs#e18f025d-5b86-4c1c-bbb6-166ae76b04a7) 1:50:20 PM: debug healthPoll()

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:18 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:18 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:17 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:17 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:14 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:12 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:13 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:12 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[73615e5c-c78a-4ec9-96a1-d8253ea7407a](https://graph.api.smartthings.com/ide/logs#73615e5c-c78a-4ec9-96a1-d8253ea7407a) 1:50:19 PM: info ╔ Event processed successfully (10259ms)

[73615e5c-c78a-4ec9-96a1-d8253ea7407a](https://graph.api.smartthings.com/ide/logs#73615e5c-c78a-4ec9-96a1-d8253ea7407a) 1:50:19 PM: info ║ Setting up scheduled job for Sat, Feb 13 2021 @ 12:54:18 PM PST (in 1s), with 1 more job pending

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:13 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[73615e5c-c78a-4ec9-96a1-d8253ea7407a](https://graph.api.smartthings.com/ide/logs#73615e5c-c78a-4ec9-96a1-d8253ea7407a) 1:50:19 PM: warn ║ Piston waited at a semaphore for 10125ms

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:18 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:18 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:16 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:13 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:12 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:10 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:19 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:17 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:09 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:09 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[73615e5c-c78a-4ec9-96a1-d8253ea7407a](https://graph.api.smartthings.com/ide/logs#73615e5c-c78a-4ec9-96a1-d8253ea7407a) 1:50:19 PM: error java.util.concurrent.TimeoutException: Execution time exceeded 20 app execution seconds: 282203818661961 @line -1 (error)

[73615e5c-c78a-4ec9-96a1-d8253ea7407a](https://graph.api.smartthings.com/ide/logs#73615e5c-c78a-4ec9-96a1-d8253ea7407a) 1:49:59 PM: info ╚ Received event [Home].time/recovery = 1613252999094 with a delay of 1ms

[2f93604f-75fc-4695-82f0-db49f767b3e4](https://graph.api.smartthings.com/ide/logs#2f93604f-75fc-4695-82f0-db49f767b3e4) 1:50:19 PM: info ╔ Event processed successfully (1708ms)

[2f93604f-75fc-4695-82f0-db49f767b3e4](https://graph.api.smartthings.com/ide/logs#2f93604f-75fc-4695-82f0-db49f767b3e4) 1:50:19 PM: info ║ Setting up scheduled job for Sat, Feb 13 2021 @ 1:54:47 PM PST (in 268s)

[2f93604f-75fc-4695-82f0-db49f767b3e4](https://graph.api.smartthings.com/ide/logs#2f93604f-75fc-4695-82f0-db49f767b3e4) 1:50:17 PM: info ╚ Received event [Hall Motion].motion = active with a delay of 80ms

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:16 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:15 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:12 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:11 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:10 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:14 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:12 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:50:11 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[1ac0dbff-3ae9-4af6-8bae-842aba16ca24](https://graph.api.smartthings.com/ide/logs#1ac0dbff-3ae9-4af6-8bae-842aba16ca24) 1:50:17 PM: info ╔ Event processed successfully (250ms)

[1ac0dbff-3ae9-4af6-8bae-842aba16ca24](https://graph.api.smartthings.com/ide/logs#1ac0dbff-3ae9-4af6-8bae-842aba16ca24) 1:50:17 PM: trace ║╔ Execution stage complete. (115ms)

[1ac0dbff-3ae9-4af6-8bae-842aba16ca24](https://graph.api.smartthings.com/ide/logs#1ac0dbff-3ae9-4af6-8bae-842aba16ca24) 1:50:17 PM: trace ║║ Executed [Hallway Lights].setLevel (34ms)

[1ac0dbff-3ae9-4af6-8bae-842aba16ca24](https://graph.api.smartthings.com/ide/logs#1ac0dbff-3ae9-4af6-8bae-842aba16ca24) 1:50:17 PM: trace ║╚ Execution stage started

[1ac0dbff-3ae9-4af6-8bae-842aba16ca24](https://graph.api.smartthings.com/ide/logs#1ac0dbff-3ae9-4af6-8bae-842aba16ca24) 1:50:17 PM: trace ║ Runtime (46604 bytes) successfully initialized in 32ms (v0.3.113.20210203) (125ms)

[1ac0dbff-3ae9-4af6-8bae-842aba16ca24](https://graph.api.smartthings.com/ide/logs#1ac0dbff-3ae9-4af6-8bae-842aba16ca24) 1:50:17 PM: info ╚ Received event [Hall Motion].motion = active with a delay of 107ms

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:49:54 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[5a4b0163-a190-45b8-b75d-0c60a429b8f0](https://graph.api.smartthings.com/ide/logs#5a4b0163-a190-45b8-b75d-0c60a429b8f0) 1:49:54 PM: info smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=77220537-36ac-4025-96c6-aa5baba263fe

[ce114cb5-3911-42be-b16e-f9f2190d319e](https://graph.api.smartthings.com/ide/logs#ce114cb5-3911-42be-b16e-f9f2190d319e) 1:50:17 PM: error java.util.concurrent.TimeoutException: Execution time exceeded 20 app execution seconds: 282200812849228 @line -1 (error)

[ce114cb5-3911-42be-b16e-f9f2190d319e](https://graph.api.smartthings.com/ide/logs#ce114cb5-3911-42be-b16e-f9f2190d319e) 1:49:57 PM: warn ║ Piston waited at a semaphore for 252ms

#16

Experiencing this exact same problem

The inability to save pistons after edit issue just started happening to my instance of webcore. The piston I’m trying to say if 2 chucks big. I tried the following

  1. Clean up and rebuild data cache
  2. Restarted hub
  3. Tried browser in incognito mode (to make sure no browser addons were impacting webcore)
  4. Removed some devices for webcore as this just started happening after I added a light strip
  5. Updated webcore to the latest version

Live logging:
smartapp_pause called by smartAppName=webCoRE, value=250, smartAppVersionId=e1c8ae07-4041-4db1-ad33-cf88bfd24d69
keeps repeating multiple times in a row

and

java.lang.reflect.UndeclaredThrowableException @line 1166 (api_intf_dashboard_piston_set_save)

error is being displayed.

@ipaterson @Nezmo

Any assistance is greatly appreciated


#17

Out of curiosity, what version were you using when this was first noticed?


#18

Would you please try rolling back to the previous webCoRE release (v0.3.110.20191009)? You can grab the code for each of the four smart apps here just click “Raw” to get an easy-to-copy version of each file.

Rolling back fixed the timeout problem for Nezmo. There are too many changes in the latest release to guess what might be causing this, but if anyone who has been affected wants to help debug I might have time in a few weeks to experiment.


Save piston after editing stays at editing
#19

Rolling back to v0.3.110.20191009 resolved the issue so thank you for the recommendation!

Also, is there a way I can see my manual update history so I can provide you with the version where this possibly started?


#20

Not that I can think of, but if the last time you updated was this year then we can be pretty sure it was something in 0.3.111 since the follow up releases were minor.