firebase / firebase/firebase-tools

\s regex breaks database emulator

Open
#3,057 2 comments 4 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
4.5k
Forks
1.3k
Avg merge
1d 12h
Merged PRs (30d)
84

Description

### [REQUIRED] Environment info

**firebase-tools:** 9.2.1

**Platform:** Manjaro 20.1 Linux

### [REQUIRED] Test case

rules.bolt:
```bolt
type HasSpace extends String {
validate() { this.test(/^\s*$/i) }
}
path / is HasSpace { }
```
firebase.json:
```json
{
"database": {
"rules": "rules.bolt"
}
}
```
package.json:
```json
{
"name": "firebase-tests",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "firebase emulators:start"
},
"author": "",
"license": "ISC",
"dependencies": {
"firebase": "8.2.3",
"firebase-bolt": "0.8.4",
"firebase-tools": "9.2.1"
}
}
```

### [REQUIRED] Steps to reproduce

`npm install`, `npm start`

### [REQUIRED] Expected behavior

Emulators should start

### [REQUIRED] Actual behavior

Database emulator crashes

database-debug.log

```
01:08:49.593 [NamespaceSystem-akka.actor.default-dispatcher-4] INFO akka.event.slf4j.Slf4jLogger - Slf4jLogger started
01:08:49.761 [main] INFO com.firebase.server.forge.App$ - Listening at localhost:9000
java.io.InvalidClassException: dk.brics.automaton.Automaton; local class incompatible: stream classdesc serialVersionUID = 10001, local class serialVersionUID = -1184065148373069656
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1830)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2121)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1647)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:483)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:441)
at dk.brics.automaton.Automaton.load(Automaton.java:714)
at dk.brics.automaton.Datatypes.load(Datatypes.java:470)
at dk.brics.automaton.Datatypes.get(Datatypes.java:426)
at dk.brics.automaton.RegExp2.toAutomaton(RegExp2.java:352)
at dk.brics.automaton.RegExp2.findLeaves(RegExp2.java:371)
at dk.brics.automaton.RegExp2.toAutomaton(RegExp2.java:285)
at dk.brics.automaton.RegExp2.toAutomaton(RegExp2.java:306)
at dk.brics.automaton.RegExp2.toAutomatonAllowMutate(RegExp2.java:271)
at dk.brics.automaton.RegExp2.toAutomaton(RegExp2.java:190)
at com.firebase.core.namespace.rules.ast.RegexLiteral.validate(Literals.scala:86)
at com.firebase.core.namespace.rules.ast.members.string.Matches$.validate(Matches.scala:16)
at com.firebase.core.namespace.rules.ast.FunctionCall.validate(FunctionCall.scala:32)
at com.firebase.core.namespace.rules.ast.And.validate(LogicalOperators.scala:25)
at com.firebase.core.namespace.rules.tree.RuleExpression.validate(RuleExpression.scala:76)
at com.firebase.core.namespace.rules.tree.RuleNode.$anonfun$validateRule$3(RuleNode.scala:70)
at com.firebase.core.namespace.rules.tree.RuleNode.$anonfun$validateRule$3$adapted(RuleNode.scala:70)
at scala.Option.foreach(Option.scala:407)
at com.firebase.core.namespace.rules.tree.RuleNode.validateRule(RuleNode.scala:70)
at com.firebase.core.namespace.rules.tree.RuleNodeParser$.$anonfun$parse$1(RuleNodeParser.scala:36)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
at com.firebase.core.namespace.rules.tree.RuleNodeParser$.parse(RuleNodeParser.scala:27)
at com.firebase.core.namespace.NamespaceManager.parseUntrustedRules(NamespaceManager.scala:426)
at com.firebase.core.namespace.NamespaceManager.updateRules(NamespaceManager.scala:469)
at com.firebase.core.namespace.NamespaceActor.handleNewRules(NamespaceActor.scala:1535)
at com.firebase.core.namespace.NamespaceActor.handleAllowedAdminMessage(NamespaceActor.scala:592)
at com.firebase.core.namespace.NamespaceActor.$anonfun$handleAdminMessage$1(NamespaceActor.scala:582)
at com.firebase.core.namespace.NamespaceActor.$anonfun$withCredential$1(NamespaceActor.scala:534)
at com.firebase.util.result.package$Result.map(package.scala:45)
at com.firebase.util.result.package$Result.map$(package.scala:43)
at com.firebase.util.result.package$Value.map(package.scala:163)
at com.firebase.core.namespace.NamespaceActor.withCredential(NamespaceActor.scala:531)
at com.firebase.core.namespace.NamespaceActor.handleAdminMessage(NamespaceActor.scala:575)
at com.firebase.core.namespace.NamespaceActor.$anonfun$handleEnvelope$3(NamespaceActor.scala:522)
at com.firebase.core.namespace.NamespaceActor.checkActive(NamespaceActor.scala:256)
at com.firebase.core.namespace.NamespaceActor.$anonfun$handleEnvelope$2(NamespaceActor.scala:510)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
at com.firebase.util.misc.DynamicShutdownFlag$.using(ShutdownFlag.scala:41)
at com.firebase.core.namespace.NamespaceActor.$anonfun$handleEnvelope$1(NamespaceActor.scala:510)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
at com.firebase.core.util.CurrentOperationInfo$.set(CurrentOperationInfo.scala:20)
at com.firebase.core.namespace.NamespaceActor.handleEnvelope(NamespaceActor.scala:509)
at com.firebase.core.namespace.NamespaceActor.$anonfun$handleSingleMessage$1(NamespaceActor.scala:490)
at com.firebase.core.stats.NamespaceStats.measureNamespaceHandleMessageBytesAllocated(NamespaceStats.scala:1187)
at com.firebase.core.namespace.NamespaceActor.handleSingleMessage(NamespaceActor.scala:490)
at com.firebase.core.namespace.NamespaceActor.$anonfun$handleBatchOfMessages$7(NamespaceActor.scala:451)
at com.firebase.util.logging.Logging.withRenamedThread(Logging.scala:90)
at com.firebase.util.logging.Logging.withRenamedThread$(Logging.scala:85)
at com.firebase.core.namespace.NamespaceActor.withRenamedThread(NamespaceActor.scala:98)
at com.firebase.core.namespace.NamespaceActor.$anonfun$handleBatchOfMessages$6(NamespaceActor.scala:449)
at com.firebase.util.concurrent.Dispatcher.$anonfun$dispatch$2(Dispatcher.scala:28)
at com.firebase.core.stats.NamespaceStats.timeNamespaceActorMessage(NamespaceStats.scala:1614)
at com.firebase.core.namespace.NamespaceDispatcher$NamespaceDispatcherStats.onAtom(NamespaceDispatcher.scala:67)
at com.firebase.core.namespace.NamespaceDispatcher$NamespaceDispatcherStats.onAtom(NamespaceDispatcher.scala:54)
at com.firebase.util.concurrent.Dispatcher.$anonfun$dispatch$1(Dispatcher.scala:28)
at scala.collection.immutable.List.flatMap(List.scala:366)
at com.firebase.util.concurrent.Dispatcher.dispatch(Dispatcher.scala:22)
at com.firebase.core.namespace.NamespaceActor.$anonfun$handleBatchOfMessages$1(NamespaceActor.scala:444)
at com.firebase.util.logging.Logging.withRenamedThread(Logging.scala:90)
at com.firebase.util.logging.Logging.withRenamedThread$(Logging.scala:85)
at com.firebase.core.namespace.NamespaceActor.withRenamedThread(NamespaceActor.scala:98)
at com.firebase.core.namespace.NamespaceActor.handleBatchOfMessages(NamespaceActor.scala:425)
at com.firebase.core.namespace.BatchingThrottler.com$firebase$core$namespace$BatchingThrottler$$sendBatch(BatchingThrottler.scala:137)
at com.firebase.core.namespace.BatchingThrottler$$anonfun$startThrottling$2.applyOrElse(BatchingThrottler.scala:219)
at com.firebase.core.namespace.BatchingThrottler$$anonfun$startThrottling$2.applyOrElse(BatchingThrottler.scala:216)
at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
at akka.actor.FSM.processEvent(FSM.scala:801)
at akka.actor.FSM.processEvent$(FSM.scala:798)
at com.firebase.core.namespace.NamespaceActor.processEvent(NamespaceActor.scala:98)
at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:795)
at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:790)
at akka.actor.Actor.aroundReceive(Actor.scala:533)
at akka.actor.Actor.aroundReceive$(Actor.scala:531)
at com.firebase.core.namespace.NamespaceActor.aroundReceive(NamespaceActor.scala:98)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:573)
at akka.actor.ActorCell.invoke(ActorCell.scala:543)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:269)
at akka.dispatch.Mailbox.run(Mailbox.scala:230)
at akka.dispatch.Mailbox.exec(Mailbox.scala:242)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:175)
01:08:51.061 [Thread-1] INFO com.firebase.server.forge.App$ - Attempting graceful shutdown.
01:08:51.070 [NamespaceSystem-akka.actor.default-dispatcher-5] INFO com.firebase.core.namespace.Terminator$Terminator - 1 actors left to terminate: criisp-dev-mocanu
01:08:51.080 [NamespaceSystem-akka.actor.default-dispatcher-5] INFO com.firebase.core.namespace.NamespaceActor - Stopping namespace actor for criisp-dev-mocanu
01:08:51.082 [NamespaceSystem-akka.actor.default-dispatcher-5] INFO com.firebase.core.namespace.NamespaceActor - Gauges removed for criisp-dev-mocanu
01:08:51.089 [Thread-1] INFO com.firebase.server.forge.App$ - Graceful shutdown complete.
```

firebase-debug.log

```
[debug] [2021-01-19T23:08:48.187Z] ----------------------------------------------------------------------
[debug] [2021-01-19T23:08:48.189Z] Command: /home/rontav/.nvm/versions/node/v14.15.4/bin/node /mnt/date/Projects/temp/firebase-tests/node_modules/.bin/firebase emulators:start
[debug] [2021-01-19T23:08:48.189Z] CLI Version: 9.2.1
[debug] [2021-01-19T23:08:48.189Z] Platform: linux
[debug] [2021-01-19T23:08:48.190Z] Node Version: v14.15.4
[debug] [2021-01-19T23:08:48.190Z] Time: Wed Jan 20 2021 01:08:48 GMT+0200 (Eastern European Standard Time)
[debug] [2021-01-19T23:08:48.190Z] ----------------------------------------------------------------------
[debug] [2021-01-19T23:08:48.190Z]
[debug] [2021-01-19T23:08:48.196Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
[debug] [2021-01-19T23:08:48.196Z] > authorizing via signed-in user
[info] i emulators: Starting emulators: database {"metadata":{"emulator":{"name":"hub"},"message":"Starting emulators: database"}}
[debug] [2021-01-19T23:08:48.217Z] [hub] writing locator at /tmp/hub-criisp-dev-mocanu.json
[debug] [2021-01-19T23:08:48.240Z] database rules config: [{"instance":"criisp-dev-mocanu","rules":"/mnt/date/Projects/temp/firebase-tests/rules.bolt"}]
[debug] [2021-01-19T23:08:48.244Z] Ignoring unsupported arg: projectId {"metadata":{"emulator":{"name":"database"},"message":"Ignoring unsupported arg: projectId"}}
[debug] [2021-01-19T23:08:48.244Z] Ignoring unsupported arg: auto_download {"metadata":{"emulator":{"name":"database"},"message":"Ignoring unsupported arg: auto_download"}}
[debug] [2021-01-19T23:08:48.245Z] Ignoring unsupported arg: rules {"metadata":{"emulator":{"name":"database"},"message":"Ignoring unsupported arg: rules"}}
[debug] [2021-01-19T23:08:48.245Z] Starting Database Emulator with command {"binary":"java","args":["-Duser.language=en","-jar","/home/rontav/.cache/firebase/emulators/firebase-database-emulator-v4.7.2.jar","--host","localhost","--port",9000],"optionalArgs":["port","host","functions_emulator_port","functions_emulator_host"],"joinArgs":false} {"metadata":{"emulator":{"name":"database"},"message":"Starting Database Emulator with command {\"binary\":\"java\",\"args\":[\"-Duser.language=en\",\"-jar\",\"/home/rontav/.cache/firebase/emulators/firebase-database-emulator-v4.7.2.jar\",\"--host\",\"localhost\",\"--port\",9000],\"optionalArgs\":[\"port\",\"host\",\"functions_emulator_port\",\"functions_emulator_host\"],\"joinArgs\":false}"}}
[info] i database: Database Emulator logging to database-debug.log {"metadata":{"emulator":{"name":"database"},"message":"Database Emulator logging to \u001b[1mdatabase-debug.log\u001b[22m"}}
[debug] [2021-01-19T23:08:49.595Z] 01:08:49.593 [NamespaceSystem-akka.actor.default-dispatcher-4] INFO akka.event.slf4j.Slf4jLogger - Slf4jLogger started
{"metadata":{"emulator":{"name":"database"},"message":"01:08:49.593 [NamespaceSystem-akka.actor.default-dispatcher-4] INFO akka.event.slf4j.Slf4jLogger - Slf4jLogger started\n"}}
[debug] [2021-01-19T23:08:49.761Z] 01:08:49.761 [main] INFO com.firebase.server.forge.App$ - Listening at localhost:9000
{"metadata":{"emulator":{"name":"database"},"message":"01:08:49.761 [main] INFO com.firebase.server.forge.App$ - Listening at localhost:9000\n"}}
[debug] [2021-01-19T23:08:50.041Z] Ignoring unsupported arg: auto_download {"metadata":{"emulator":{"name":"ui"},"message":"Ignoring unsupported arg: auto_download"}}
[debug] [2021-01-19T23:08:50.042Z] Ignoring unsupported arg: port {"metadata":{"emulator":{"name":"ui"},"message":"Ignoring unsupported arg: port"}}
[debug] [2021-01-19T23:08:50.042Z] Starting Emulator UI with command {"binary":"node","args":["/home/rontav/.cache/firebase/emulators/ui-v1.4.1/server.bundle.js"],"optionalArgs":[],"joinArgs":false} {"metadata":{"emulator":{"name":"ui"},"message":"Starting Emulator UI with command {\"binary\":\"node\",\"args\":[\"/home/rontav/.cache/firebase/emulators/ui-v1.4.1/server.bundle.js\"],\"optionalArgs\":[],\"joinArgs\":false}"}}
[info] i ui: Emulator UI logging to ui-debug.log {"metadata":{"emulator":{"name":"ui"},"message":"Emulator UI logging to \u001b[1mui-debug.log\u001b[22m"}}
[debug] [2021-01-19T23:08:50.178Z] Web / API server started at http://localhost:4000
{"metadata":{"emulator":{"name":"ui"},"message":"Web / API server started at http://localhost:4000\n"}}
[debug] [2021-01-19T23:08:50.498Z] >>> HTTP REQUEST PUT http://localhost:9000/.settings/rules.json?ns=criisp-dev-mocanu
{
"rules": {
".validate": "(newData.isString() && newData.val().matches(/^\\s*$/i))"
}
}

[debug] [2021-01-19T23:08:51.004Z] java.io.InvalidClassException: dk.brics.automaton.Automaton; local class incompatible: stream classdesc serialVersionUID = 10001, local class serialVersionUID = -1184065148373069656
{"metadata":{"emulator":{"name":"database"},"message":"java.io.InvalidClassException: dk.brics.automaton.Automaton; local class incompatible: stream classdesc serialVersionUID = 10001, local class serialVersionUID = -1184065148373069656\n"}}
[debug] [2021-01-19T23:08:51.005Z] at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1964)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1830)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2121)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1647)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:483)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:441)
at dk.brics.automaton.Automaton.load(Automaton.java:714)
at dk.brics.automaton.Datatypes.load(Datatypes.java:470)
at dk.brics.automaton.Datatypes.get(Datatypes.java:426)
at dk.brics.automaton.RegExp2.toAutomaton(RegExp2.java:352)
at dk.brics.automaton.RegExp2.findLeaves(RegExp2.java:371)
at dk.brics.automaton.RegExp2.toAutomaton(RegExp2.java:285)
at dk.brics.automaton.RegExp2.toAutomaton(RegExp2.java:306)
at dk.brics.automaton.RegExp2.toAutomatonAllowMutate(RegExp2.java:271)
{"metadata":{"emulator":{"name":"database"},"message":"\tat java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699)\n\tat java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1964)\n\tat java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1830)\n\tat java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2121)\n\tat java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1647)\n\tat java.io.ObjectInputStream.readObject(ObjectInputStream.java:483)\n\tat java.io.ObjectInputStream.readObject(ObjectInputStream.java:441)\n\tat dk.brics.automaton.Automaton.load(Automaton.java:714)\n\tat dk.brics.automaton.Datatypes.load(Datatypes.java:470)\n\tat dk.brics.automaton.Datatypes.get(Datatypes.java:426)\n\tat dk.brics.automaton.RegExp2.toAutomaton(RegExp2.java:352)\n\tat dk.brics.automaton.RegExp2.findLeaves(RegExp2.java:371)\n\tat dk.brics.automaton.RegExp2.toAutomaton(RegExp2.java:285)\n\tat dk.brics.automaton.RegExp2.toAutomaton(RegExp2.java:306)\n\tat dk.brics.automaton.RegExp2.toAutomatonAllowMutate(RegExp2.java:271)\n"}}
[debug] [2021-01-19T23:08:51.005Z] at dk.brics.automaton.RegExp2.toAutomaton(RegExp2.java:190)
at com.firebase.core.namespace.rules.ast.RegexLiteral.validate(Literals.scala:86)
at com.firebase.core.namespace.rules.ast.members.string.Matches$.validate(Matches.scala:16)
at com.firebase.core.namespace.rules.ast.FunctionCall.validate(FunctionCall.scala:32)
at com.firebase.core.namespace.rules.ast.And.validate(LogicalOperators.scala:25)
at com.firebase.core.namespace.rules.tree.RuleExpression.validate(RuleExpression.scala:76)
at com.firebase.core.namespace.rules.tree.RuleNode.$anonfun$validateRule$3(RuleNode.scala:70)
at com.firebase.core.namespace.rules.tree.RuleNode.$anonfun$validateRule$3$adapted(RuleNode.scala:70)
at scala.Option.foreach(Option.scala:407)
at com.firebase.core.namespace.rules.tree.RuleNode.validateRule(RuleNode.scala:70)
at com.firebase.core.namespace.rules.tree.RuleNodeParser$.$anonfun$parse$1(RuleNodeParser.scala:36)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
at com.firebase.core.namespace.rules.tree.RuleNodeParser$.parse(RuleNodeParser.scala:27)
at com.firebase.core.namespace.NamespaceManager.parseUntrustedRules(NamespaceManager.scala:426)
{"metadata":{"emulator":{"name":"database"},"message":"\tat dk.brics.automaton.RegExp2.toAutomaton(RegExp2.java:190)\n\tat com.firebase.core.namespace.rules.ast.RegexLiteral.validate(Literals.scala:86)\n\tat com.firebase.core.namespace.rules.ast.members.string.Matches$.validate(Matches.scala:16)\n\tat com.firebase.core.namespace.rules.ast.FunctionCall.validate(FunctionCall.scala:32)\n\tat com.firebase.core.namespace.rules.ast.And.validate(LogicalOperators.scala:25)\n\tat com.firebase.core.namespace.rules.tree.RuleExpression.validate(RuleExpression.scala:76)\n\tat com.firebase.core.namespace.rules.tree.RuleNode.$anonfun$validateRule$3(RuleNode.scala:70)\n\tat com.firebase.core.namespace.rules.tree.RuleNode.$anonfun$validateRule$3$adapted(RuleNode.scala:70)\n\tat scala.Option.foreach(Option.scala:407)\n\tat com.firebase.core.namespace.rules.tree.RuleNode.validateRule(RuleNode.scala:70)\n\tat com.firebase.core.namespace.rules.tree.RuleNodeParser$.$anonfun$parse$1(RuleNodeParser.scala:36)\n\tat scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)\n\tat com.firebase.core.namespace.rules.tree.RuleNodeParser$.parse(RuleNodeParser.scala:27)\n\tat com.firebase.core.namespace.NamespaceManager.parseUntrustedRules(NamespaceManager.scala:426)\n"}}
[debug] [2021-01-19T23:08:51.006Z] at com.firebase.core.namespace.NamespaceManager.updateRules(NamespaceManager.scala:469)
at com.firebase.core.namespace.NamespaceActor.handleNewRules(NamespaceActor.scala:1535)
at com.firebase.core.namespace.NamespaceActor.handleAllowedAdminMessage(NamespaceActor.scala:592)
at com.firebase.core.namespace.NamespaceActor.$anonfun$handleAdminMessage$1(NamespaceActor.scala:582)
at com.firebase.core.namespace.NamespaceActor.$anonfun$withCredential$1(NamespaceActor.scala:534)
at com.firebase.util.result.package$Result.map(package.scala:45)
at com.firebase.util.result.package$Result.map$(package.scala:43)
at com.firebase.util.result.package$Value.map(package.scala:163)
at com.firebase.core.namespace.NamespaceActor.withCredential(NamespaceActor.scala:531)
at com.firebase.core.namespace.NamespaceActor.handleAdminMessage(NamespaceActor.scala:575)
at com.firebase.core.namespace.NamespaceActor.$anonfun$handleEnvelope$3(NamespaceActor.scala:522)
at com.firebase.core.namespace.NamespaceActor.checkActive(NamespaceActor.scala:256)
at com.firebase.core.namespace.NamespaceActor.$anonfun$handleEnvelope$2(NamespaceActor.scala:510)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)
at com.firebase.util.misc.DynamicShutdownFlag$.using(ShutdownFlag.scala:41)
at com.firebase.core.namespace.NamespaceActor.$anonfun$handleEnvelope$1(NamespaceActor.scala:510)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:62) {"metadata":{"emulator":{"name":"database"},"message":"\tat com.firebase.core.namespace.NamespaceManager.updateRules(NamespaceManager.scala:469)\n\tat com.firebase.core.namespace.NamespaceActor.handleNewRules(NamespaceActor.scala:1535)\n\tat com.firebase.core.namespace.NamespaceActor.handleAllowedAdminMessage(NamespaceActor.scala:592)\n\tat com.firebase.core.namespace.NamespaceActor.$anonfun$handleAdminMessage$1(NamespaceActor.scala:582)\n\tat com.firebase.core.namespace.NamespaceActor.$anonfun$withCredential$1(NamespaceActor.scala:534)\n\tat com.firebase.util.result.package$Result.map(package.scala:45)\n\tat com.firebase.util.result.package$Result.map$(package.scala:43)\n\tat com.firebase.util.result.package$Value.map(package.scala:163)\n\tat com.firebase.core.namespace.NamespaceActor.withCredential(NamespaceActor.scala:531)\n\tat com.firebase.core.namespace.NamespaceActor.handleAdminMessage(NamespaceActor.scala:575)\n\tat com.firebase.core.namespace.NamespaceActor.$anonfun$handleEnvelope$3(NamespaceActor.scala:522)\n\tat com.firebase.core.namespace.NamespaceActor.checkActive(NamespaceActor.scala:256)\n\tat com.firebase.core.namespace.NamespaceActor.$anonfun$handleEnvelope$2(NamespaceActor.scala:510)\n\tat scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)\n\tat com.firebase.util.misc.DynamicShutdownFlag$.using(ShutdownFlag.scala:41)\n\tat com.firebase.core.namespace.NamespaceActor.$anonfun$handleEnvelope$1(NamespaceActor.scala:510)\n\tat scala.util.DynamicVariable.withValue(DynamicVariable.scala:62)"}}
[debug] [2021-01-19T23:08:51.006Z]
at com.firebase.core.util.CurrentOperationInfo$.set(CurrentOperationInfo.scala:20)
at com.firebase.core.namespace.NamespaceActor.handleEnvelope(NamespaceActor.scala:509)
at com.firebase.core.namespace.NamespaceActor.$anonfun$handleSingleMessage$1(NamespaceActor.scala:490)
at com.firebase.core.stats.NamespaceStats.measureNamespaceHandleMessageBytesAllocated(NamespaceStats.scala:1187)
at com.firebase.core.namespace.NamespaceActor.handleSingleMessage(NamespaceActor.scala:490)
at com.firebase.core.namespace.NamespaceActor.$anonfun$handleBatchOfMessages$7(NamespaceActor.scala:451)
at com.firebase.util.logging.Logging.withRenamedThread(Logging.scala:90)
at com.firebase.util.logging.Logging.withRenamedThread$(Logging.scala:85)
at com.firebase.core.namespace.NamespaceActor.withRenamedThread(NamespaceActor.scala:98)
at com.firebase.core.namespace.NamespaceActor.$anonfun$handleBatchOfMessages$6(NamespaceActor.scala:449)
at com.firebase.util.concurrent.Dispatcher.$anonfun$dispatch$2(Dispatcher.scala:28)
at com.firebase.core.stats.NamespaceStats.timeNamespaceActorMessage(NamespaceStats.scala:1614)
at com.firebase.core.namespace.NamespaceDispatcher$NamespaceDispatcherStats.onAtom(NamespaceDispatcher.scala:67)
at com.firebase.core.namespace.NamespaceDispatcher$NamespaceDispatcherStats.onAtom(NamespaceDispatcher.scala:54)
at com.firebase.util.concurrent.Dispatcher.$anonfun$dispatch$1(Dispatcher.scala:28)
at scala.collection.immutable.List.flatMap(List.scala:366)
at com.firebase.util.concurrent.Dispatcher.dispatch(Dispatcher.scala:22)
at com.firebase.core.namespace.NamespaceActor.$anonfun$handleBatchOfMessages$1(NamespaceActor.scala:444) {"metadata":{"emulator":{"name":"database"},"message":"\n\tat com.firebase.core.util.CurrentOperationInfo$.set(CurrentOperationInfo.scala:20)\n\tat com.firebase.core.namespace.NamespaceActor.handleEnvelope(NamespaceActor.scala:509)\n\tat com.firebase.core.namespace.NamespaceActor.$anonfun$handleSingleMessage$1(NamespaceActor.scala:490)\n\tat com.firebase.core.stats.NamespaceStats.measureNamespaceHandleMessageBytesAllocated(NamespaceStats.scala:1187)\n\tat com.firebase.core.namespace.NamespaceActor.handleSingleMessage(NamespaceActor.scala:490)\n\tat com.firebase.core.namespace.NamespaceActor.$anonfun$handleBatchOfMessages$7(NamespaceActor.scala:451)\n\tat com.firebase.util.logging.Logging.withRenamedThread(Logging.scala:90)\n\tat com.firebase.util.logging.Logging.withRenamedThread$(Logging.scala:85)\n\tat com.firebase.core.namespace.NamespaceActor.withRenamedThread(NamespaceActor.scala:98)\n\tat com.firebase.core.namespace.NamespaceActor.$anonfun$handleBatchOfMessages$6(NamespaceActor.scala:449)\n\tat com.firebase.util.concurrent.Dispatcher.$anonfun$dispatch$2(Dispatcher.scala:28)\n\tat com.firebase.core.stats.NamespaceStats.timeNamespaceActorMessage(NamespaceStats.scala:1614)\n\tat com.firebase.core.namespace.NamespaceDispatcher$NamespaceDispatcherStats.onAtom(NamespaceDispatcher.scala:67)\n\tat com.firebase.core.namespace.NamespaceDispatcher$NamespaceDispatcherStats.onAtom(NamespaceDispatcher.scala:54)\n\tat com.firebase.util.concurrent.Dispatcher.$anonfun$dispatch$1(Dispatcher.scala:28)\n\tat scala.collection.immutable.List.flatMap(List.scala:366)\n\tat com.firebase.util.concurrent.Dispatcher.dispatch(Dispatcher.scala:22)\n\tat com.firebase.core.namespace.NamespaceActor.$anonfun$handleBatchOfMessages$1(NamespaceActor.scala:444)"}}
[debug] [2021-01-19T23:08:51.007Z]
at com.firebase.util.logging.Logging.withRenamedThread(Logging.scala:90)
at com.firebase.util.logging.Logging.withRenamedThread$(Logging.scala:85)
at com.firebase.core.namespace.NamespaceActor.withRenamedThread(NamespaceActor.scala:98)
at com.firebase.core.namespace.NamespaceActor.handleBatchOfMessages(NamespaceActor.scala:425)
at com.firebase.core.namespace.BatchingThrottler.com$firebase$core$namespace$BatchingThrottler$$sendBatch(BatchingThrottler.scala:137)
at com.firebase.core.namespace.BatchingThrottler$$anonfun$startThrottling$2.applyOrElse(BatchingThrottler.scala:219)
at com.firebase.core.namespace.BatchingThrottler$$anonfun$startThrottling$2.applyOrElse(BatchingThrottler.scala:216)
at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)
at akka.actor.FSM.processEvent(FSM.scala:801)
at akka.actor.FSM.processEvent$(FSM.scala:798)
at com.firebase.core.namespace.NamespaceActor.processEvent(NamespaceActor.scala:98)
at akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:795)
at akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:790)
at akka.actor.Actor.aroundReceive(Actor.scala:533)
at akka.actor.Actor.aroundReceive$(Actor.scala:531)
at com.firebase.core.namespace.NamespaceActor.aroundReceive(NamespaceActor.scala:98) {"metadata":{"emulator":{"name":"database"},"message":"\n\tat com.firebase.util.logging.Logging.withRenamedThread(Logging.scala:90)\n\tat com.firebase.util.logging.Logging.withRenamedThread$(Logging.scala:85)\n\tat com.firebase.core.namespace.NamespaceActor.withRenamedThread(NamespaceActor.scala:98)\n\tat com.firebase.core.namespace.NamespaceActor.handleBatchOfMessages(NamespaceActor.scala:425)\n\tat com.firebase.core.namespace.BatchingThrottler.com$firebase$core$namespace$BatchingThrottler$$sendBatch(BatchingThrottler.scala:137)\n\tat com.firebase.core.namespace.BatchingThrottler$$anonfun$startThrottling$2.applyOrElse(BatchingThrottler.scala:219)\n\tat com.firebase.core.namespace.BatchingThrottler$$anonfun$startThrottling$2.applyOrElse(BatchingThrottler.scala:216)\n\tat scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:38)\n\tat akka.actor.FSM.processEvent(FSM.scala:801)\n\tat akka.actor.FSM.processEvent$(FSM.scala:798)\n\tat com.firebase.core.namespace.NamespaceActor.processEvent(NamespaceActor.scala:98)\n\tat akka.actor.FSM.akka$actor$FSM$$processMsg(FSM.scala:795)\n\tat akka.actor.FSM$$anonfun$receive$1.applyOrElse(FSM.scala:790)\n\tat akka.actor.Actor.aroundReceive(Actor.scala:533)\n\tat akka.actor.Actor.aroundReceive$(Actor.scala:531)\n\tat com.firebase.core.namespace.NamespaceActor.aroundReceive(NamespaceActor.scala:98)"}}
[debug] [2021-01-19T23:08:51.007Z]
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:573)
at akka.actor.ActorCell.invoke(ActorCell.scala:543)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:269)
at akka.dispatch.Mailbox.run(Mailbox.scala:230)
at akka.dispatch.Mailbox.exec(Mailbox.scala:242)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:175)
{"metadata":{"emulator":{"name":"database"},"message":"\n\tat akka.actor.ActorCell.receiveMessage(ActorCell.scala:573)\n\tat akka.actor.ActorCell.invoke(ActorCell.scala:543)\n\tat akka.dispatch.Mailbox.processMailbox(Mailbox.scala:269)\n\tat akka.dispatch.Mailbox.run(Mailbox.scala:230)\n\tat akka.dispatch.Mailbox.exec(Mailbox.scala:242)\n\tat java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)\n\tat java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)\n\tat java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)\n\tat java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:175)\n"}}
[debug] [2021-01-19T23:08:51.053Z] <<< HTTP RESPONSE 400 {"content-length":"81","content-type":"application/json; charset=utf-8","access-control-allow-origin":"*","cache-control":"no-cache","x-firebase-project-id":"criisp-dev-mocanu","x-firebase-project-number":"123456789","x-firebase-uuid":"f470a31d-0efc-4438-9210-3e02845bfc3f"}
[debug] [2021-01-19T23:08:51.053Z] <<< HTTP RESPONSE BODY {
"error" : "3:64: Illegal regular expression, 'whitespacechar' not found\n"
}

[info] i emulators: Shutting down emulators. {"metadata":{"emulator":{"name":"hub"},"message":"Shutting down emulators."}}
[info] i ui: Stopping Emulator UI {"metadata":{"emulator":{"name":"ui"},"message":"Stopping Emulator UI"}}
[warn] ⚠ Emulator UI has exited upon receiving signal: SIGINT
[info] i database: Stopping Database Emulator {"metadata":{"emulator":{"name":"database"},"message":"Stopping Database Emulator"}}
[debug] [2021-01-19T23:08:51.062Z] 01:08:51.061 [Thread-1] INFO com.firebase.server.forge.App$ - Attempting graceful shutdown.
{"metadata":{"emulator":{"name":"database"},"message":"01:08:51.061 [Thread-1] INFO com.firebase.server.forge.App$ - Attempting graceful shutdown.\n"}}
[debug] [2021-01-19T23:08:51.070Z] 01:08:51.070 [NamespaceSystem-akka.actor.default-dispatcher-5] INFO com.firebase.core.namespace.Terminator$Terminator - 1 actors left to terminate: criisp-dev-mocanu
{"metadata":{"emulator":{"name":"database"},"message":"01:08:51.070 [NamespaceSystem-akka.actor.default-dispatcher-5] INFO com.firebase.core.namespace.Terminator$Terminator - 1 actors left to terminate: criisp-dev-mocanu\n"}}
[debug] [2021-01-19T23:08:51.081Z] 01:08:51.080 [NamespaceSystem-akka.actor.default-dispatcher-5] INFO com.firebase.core.namespace.NamespaceActor - Stopping namespace actor for criisp-dev-mocanu
{"metadata":{"emulator":{"name":"database"},"message":"01:08:51.080 [NamespaceSystem-akka.actor.default-dispatcher-5] INFO com.firebase.core.namespace.NamespaceActor - Stopping namespace actor for criisp-dev-mocanu\n"}}
[debug] [2021-01-19T23:08:51.082Z] 01:08:51.082 [NamespaceSystem-akka.actor.default-dispatcher-5] INFO com.firebase.core.namespace.NamespaceActor - Gauges removed for criisp-dev-mocanu
{"metadata":{"emulator":{"name":"database"},"message":"01:08:51.082 [NamespaceSystem-akka.actor.default-dispatcher-5] INFO com.firebase.core.namespace.NamespaceActor - Gauges removed for criisp-dev-mocanu\n"}}
[debug] [2021-01-19T23:08:51.089Z] 01:08:51.089 [Thread-1] INFO com.firebase.server.forge.App$ - Graceful shutdown complete.
{"metadata":{"emulator":{"name":"database"},"message":"01:08:51.089 [Thread-1] INFO com.firebase.server.forge.App$ - Graceful shutdown complete.\n"}}
[info] i hub: Stopping emulator hub {"metadata":{"emulator":{"name":"hub"},"message":"Stopping emulator hub"}}
[info] i logging: Stopping Logging Emulator {"metadata":{"emulator":{"name":"logging"},"message":"Stopping Logging Emulator"}}
[debug] [2021-01-19T23:08:51.604Z]
[error]
[error] Error: An unexpected error has occurred.
```

I assume this is an incompatibility between Javascript and Java Regex notations. Maybe we can replace `\s` with the [complete character list](https://stackoverflow.com/a/2429180/3440021).

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.