From 0d61b8db38d80c9b3302e5676919d554cdf233f4 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Fri, 1 Apr 2022 11:56:00 -0400 Subject: [PATCH] Fixed threading issues with Spinner recent queries. --- spinner/lib/src/main/assets/query.hbs | 10 ++++++---- .../src/main/java/org/signal/spinner/SpinnerServer.kt | 8 +++++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/spinner/lib/src/main/assets/query.hbs b/spinner/lib/src/main/assets/query.hbs index 75eb95e5e..52870b6cd 100644 --- a/spinner/lib/src/main/assets/query.hbs +++ b/spinner/lib/src/main/assets/query.hbs @@ -5,12 +5,12 @@ {{> partials/prefix isQuery=true}} -
+ - + or - + or
@@ -57,6 +57,7 @@ function submitOnEnter(event){ if (event.which === 13 && event.shiftKey) { event.target.form.submit(); + onQuerySubmitted(); event.preventDefault(); } } @@ -99,7 +100,8 @@ return JSON.parse(historyRaw); } - document.querySelector('.query-input').addEventListener("keypress", submitOnEnter); + document.querySelector('.query-input').addEventListener('keypress', submitOnEnter); + document.getElementById('query-form').addEventListener('submit', onQuerySubmitted, false); renderQueryHistory(); diff --git a/spinner/lib/src/main/java/org/signal/spinner/SpinnerServer.kt b/spinner/lib/src/main/java/org/signal/spinner/SpinnerServer.kt index dec82a675..f81177d3b 100644 --- a/spinner/lib/src/main/java/org/signal/spinner/SpinnerServer.kt +++ b/spinner/lib/src/main/java/org/signal/spinner/SpinnerServer.kt @@ -14,6 +14,8 @@ import java.lang.IllegalArgumentException import java.text.SimpleDateFormat import java.util.Date import java.util.Locale +import java.util.Queue +import java.util.concurrent.ConcurrentLinkedQueue import kotlin.math.ceil import kotlin.math.max import kotlin.math.min @@ -39,7 +41,7 @@ internal class SpinnerServer( registerHelper("neq", ConditionalHelpers.neq) } - private val recentSql: MutableMap> = mutableMapOf() + private val recentSql: MutableMap> = mutableMapOf() private val dateFormat = SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS zzz", Locale.US) override fun serve(session: IHTTPSession): Response { @@ -70,11 +72,11 @@ internal class SpinnerServer( } fun onSql(dbName: String, sql: String) { - val commands: MutableList = recentSql[dbName] ?: mutableListOf() + val commands: Queue = recentSql[dbName] ?: ConcurrentLinkedQueue() commands += QueryItem(System.currentTimeMillis(), sql) if (commands.size > 100) { - commands.removeAt(0) + commands.remove() } recentSql[dbName] = commands