Skip to content

Commit f601bf6

Browse files
committed
Remove shared SimpleDateFormat instances in date adapters
Since SimpleDateFormat is not thread safe, we might be running into race conditions here actually. Re-creating a new instance is expensive, so this is only a temporary fix while we validate a change to DateTimeFormatter.
1 parent cce5bf9 commit f601bf6

File tree

2 files changed

+8
-5
lines changed

2 files changed

+8
-5
lines changed

libpretixsync/src/main/java/eu/pretix/libpretixsync/sqldelight/AndroidUtilDateAdapter.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,21 @@ import java.util.Date
66
import java.util.TimeZone
77

88
class AndroidUtilDateAdapter : ColumnAdapter<Date, String> {
9-
private val df = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").apply {
10-
timeZone = TimeZone.getTimeZone("UTC")
11-
}
12-
139
override fun decode(databaseValue: String): Date {
1410
try {
11+
val df = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").apply {
12+
timeZone = TimeZone.getTimeZone("UTC")
13+
}
1514
return df.parse(databaseValue)
1615
} catch (e: Throwable) {
1716
throw e
1817
}
1918
}
2019

2120
override fun encode(value: Date): String {
21+
val df = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").apply {
22+
timeZone = TimeZone.getTimeZone("UTC")
23+
}
2224
return df.format(value)
2325
}
2426
}

libpretixsync/src/main/java/eu/pretix/libpretixsync/sqldelight/JavaUtilDateAdapter.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@ import java.text.SimpleDateFormat
55
import java.util.Date
66

77
class JavaUtilDateAdapter : ColumnAdapter<Date, String> {
8-
private val df = SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")
98

109
override fun decode(databaseValue: String): Date {
10+
val df = SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")
1111
return df.parse(databaseValue)
1212
}
1313

1414
override fun encode(value: Date): String {
15+
val df = SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")
1516
return df.format(value)
1617
}
1718
}

0 commit comments

Comments
 (0)