diff --git a/cats/cats-sql/src/main/kotlin/com/netflix/spinnaker/cats/sql/cache/SqlCache.kt b/cats/cats-sql/src/main/kotlin/com/netflix/spinnaker/cats/sql/cache/SqlCache.kt index 5676d2298e5..423bc1ae84b 100644 --- a/cats/cats-sql/src/main/kotlin/com/netflix/spinnaker/cats/sql/cache/SqlCache.kt +++ b/cats/cats-sql/src/main/kotlin/com/netflix/spinnaker/cats/sql/cache/SqlCache.kt @@ -65,7 +65,7 @@ class SqlCache( private val schemaVersion = SqlSchemaVersion.current() private val useRegexp = """.*[\?\[].*""".toRegex() private val cleanRegexp = """\.+\*""".toRegex() - private val typeSanitization = """[:/\-]""".toRegex() + private val typeSanitization = """[^A-Za-z0-9_]""".toRegex() private val log = LoggerFactory.getLogger(SqlCache::class.java) } diff --git a/cats/cats-sql/src/test/groovy/com/netflix/spinnaker/cats/sql/SqlCacheSpec.groovy b/cats/cats-sql/src/test/groovy/com/netflix/spinnaker/cats/sql/SqlCacheSpec.groovy index 5f865dafb7b..6796a216f9d 100644 --- a/cats/cats-sql/src/test/groovy/com/netflix/spinnaker/cats/sql/SqlCacheSpec.groovy +++ b/cats/cats-sql/src/test/groovy/com/netflix/spinnaker/cats/sql/SqlCacheSpec.groovy @@ -32,6 +32,19 @@ class SqlCacheSpec extends WriteableCacheSpec { SqlTestUtil.cleanupDb(context) } + def 'should handle invalid type'() { + given: + def data = createData('blerp', [a: 'b']) + ((SqlCache) cache).merge('foo.bar', data) + + when: + def retrieved = ((SqlCache) cache).getAll('foo.bar') + + then: + retrieved.size() == 1 + retrieved.findAll { it.id == "blerp" }.size() == 1 + } + def 'should not write an item if it is unchanged'() { setup: def data = createData('blerp', [a: 'b'])