Add experimental string parse failure recovery.

pull/2188/head
Hunter Trujillo 2017-11-28 16:18:06 -07:00
parent d462226099
commit 4d7d06891d
2 changed files with 47 additions and 23 deletions

View File

@ -48,7 +48,7 @@
'arrow-parens': 0,
'comma-dangle': [2, 'always-multiline'],
'no-cond-assign': 2,
'no-console': ['error', {allow: ['error']}],
'no-console': ['error', {allow: ['error', 'warn']}],
'no-constant-condition': 2,
'no-control-regex': 2,
'no-debugger': 2,

View File

@ -28,6 +28,7 @@ class TickscriptPage extends Component {
isEditingID: true,
logs: [],
areLogsEnabled: false,
failStr: '',
}
}
@ -48,20 +49,22 @@ class TickscriptPage extends Component {
return
}
this.setState({
areLogsEnabled: true,
logs: [
{
id: uuid.v4(),
key: uuid.v4(),
lvl: 'info',
msg: 'created log session',
service: 'sessions',
tags: 'nil',
ts: new Date().toISOString(),
},
],
})
if (this.state.logs.length === 0) {
this.setState({
areLogsEnabled: true,
logs: [
{
id: uuid.v4(),
key: uuid.v4(),
lvl: 'info',
msg: 'created log session',
service: 'sessions',
tags: 'nil',
ts: new Date().toISOString(),
},
],
})
}
const response = await getLogStreamByRuleID(kapacitor, ruleID)
@ -77,16 +80,37 @@ class TickscriptPage extends Component {
stream: !result.done,
})
const json = `[${chunk.split('}\n{').join('},{')}]`
const json = chunk.split('\n')
const logs = JSON.parse(json).map(log => ({
...log,
key: uuid.v4(),
}))
let logs = []
let failStr = this.state.failStr
this.setState({
logs: [...logs, ...this.state.logs],
})
try {
for (let objStr of json) {
objStr = failStr + objStr
failStr = objStr
const jsonStr = `[${objStr.split('}{').join('},{')}]`
logs = [
...logs,
...JSON.parse(jsonStr).map(log => ({
...log,
key: uuid.v4(),
})),
]
failStr = ''
}
this.setState({
logs: [...this.state.logs, ...logs],
failStr,
})
} catch (err) {
console.warn(err, failStr)
this.setState({
logs: [...this.state.logs, ...logs],
failStr,
})
}
}
} catch (error) {
console.error(error)