diff --git a/README.md b/README.md index 13f850c..0b0ee14 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ docker run -p3000:3000 -e API_URL=http://$DOCKER_LOCALHOST:8080 -e COMPLETER_B You need nodejs (tested with 8.5.0) -this assumes that the completer is running on 127.0.0.1:8081 and the corresponding functions server is running on 8081 +this assumes that the completer is running on 127.0.0.1:8081 and the corresponding functions server is running on 8080 ```bash npm install diff --git a/dumpevents.js b/dumpevents.js index edf2ff3..bbaf3bb 100755 --- a/dumpevents.js +++ b/dumpevents.js @@ -1,45 +1,38 @@ #!/usr/bin/env node - -var WebSocket = require('ws'); var fs = require('fs'); +var oboe = require('oboe'); -var graphId = process.argv[2]; +var flowId = process.argv[2]; -if ( !graphId){ - console.log("Specify a graph iD"); +if ( !flowId){ + console.log("Specify a flow iD"); return 1; } -console.log("Getting graphId", graphId); +console.log("Getting flowId", flowId); -const ws = new WebSocket('ws://localhost:8081/wss'); var events = {}; var creates = []; var eventCount =0; - -ws.on('message', function (msgString) { - //console.log('got data ',msgString); - - var msg = JSON.parse(msgString); - if (msg.sub !== '_all') { + +oboe(`http://localhost:8081/v1/flows/${flowId}/stream`) + .done((data) => { + console.log("Received event from stream", data.result); eventCount++; - if(!events[msg.sub]){ - events[msg.sub] = [msg]; + if(!events[data.result.flow_id]){ + events[data.result.flow_id] = [data.result]; + } else { + events[data.result.flow_id].push(data.result); } - events[msg.sub].push(msg); - if(msg.type === "model.GraphCreatedEvent"){ - const newMsg = JSON.parse(msgString); - newMsg.sub = "_all"; - creates.push(newMsg); + + if (data.result.graph_created) { + creates.push(data.result); } - } -}); -ws.on('open', function () { - console.log("Connection open subscribing to ",graphId); - console.log("Hit Ctrl+C to save data when you are done"); - ws.send(JSON.stringify({command: 'subscribe', graph_id: graphId})); -}); + }) + .fail((error) => { + events.error("Failed to subscribe to stream", error); + }); process.on('SIGINT', () => { diff --git a/package-lock.json b/package-lock.json index 49b0e96..a989567 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4833,6 +4833,11 @@ "statuses": "1.3.1" } }, + "http-https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", + "integrity": "sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs=" + }, "http-parser-js": { "version": "0.4.8", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.8.tgz", @@ -6441,6 +6446,14 @@ "is-extendable": "0.1.1" } }, + "oboe": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.4.tgz", + "integrity": "sha1-IMiM2wwVNxuwQRklfU/dNLCqSfY=", + "requires": { + "http-https": "1.0.0" + } + }, "obuf": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", diff --git a/package.json b/package.json index 2f8060c..1c92f0c 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "bootstrap3": "^3.3.5", "express": "^4.15.4", "http-proxy-middleware": "^0.17.4", + "oboe": "^2.1.4", "react": "^15.6.1", "react-bootstrap": "^0.31.3", "react-dom": "^15.6.1", @@ -34,5 +35,84 @@ "react-vis-force": "^0.3.1", "ws": "^3.1.0" }, - "description": "FnFlow completer UI demo" + "description": "FnFlow completer UI demo", + "resolutions": { + "array-flatten": "2.1.1", + "debug": "3.1.0", + "path-to-regexp": "1.7.0", + "qs": "6.5.1", + "setprototypeof": "1.1.0", + "statuses": "1.4.0", + "mime-db": "1.32.0", + "inherits": "2.0.3", + "mime": "1.6.0", + "is-glob": "4.0.0", + "is-extglob": "2.1.1", + "kind-of": "4.0.0", + "is-number": "3.0.0", + "isarray": "1.0.0", + "glob-parent": "3.1.0", + "object-assign": "4.1.1", + "core-js": "2.5.1", + "process": "0.11.10", + "source-map": "0.6.1", + "chalk": "2.3.0", + "ansi-styles": "3.2.0", + "strip-ansi": "4.0.0", + "supports-color": "4.5.0", + "ansi-regex": "3.0.0", + "jsesc": "1.3.0", + "minimist": "1.2.0", + "balanced-match": "1.0.0", + "loader-utils": "1.1.0", + "pify": "3.0.0", + "find-up": "2.1.0", + "path-exists": "3.0.0", + "regexpu-core": "2.0.0", + "glob": "7.1.2", + "postcss": "6.0.14", + "clone": "1.0.3", + "has-flag": "2.0.0", + "commander": "2.12.2", + "uglify-js": "3.2.0", + "utila": "0.4.0", + "domutils": "1.5.1", + "domelementtype": "1.3.0", + "readable-stream": "2.3.3", + "string_decoder": "1.0.3", + "file-type": "4.4.0", + "replace-ext": "1.0.0", + "tempfile": "2.0.0", + "uuid": "3.1.0", + "vinyl": "1.2.0", + "through2": "2.0.3", + "duplexer2": "0.1.4", + "strip-bom": "3.0.0", + "tunnel-agent": "0.6.0", + "time-stamp": "2.0.0", + "co": "3.1.0", + "read-pkg-up": "2.0.0", + "camelcase": "3.0.0", + "semver": "5.4.1", + "read-pkg": "2.0.0", + "load-json-file": "2.0.0", + "path-type": "2.0.0", + "ajv": "5.5.0", + "acorn": "5.2.1", + "async": "2.6.0", + "yargs": "8.0.2", + "punycode": "1.3.2", + "hash-base": "3.0.4", + "cliui": "3.2.0", + "string-width": "2.1.1", + "is-fullwidth-code-point": "2.0.0", + "assert-plus": "0.2.0", + "extsprintf": "1.4.0", + "os-locale": "2.1.0", + "which-module": "2.0.0", + "yargs-parser": "7.0.0", + "faye-websocket": "0.11.1", + "url-parse": "1.2.0", + "querystringify": "1.0.0" + } } diff --git a/src/client/app/GraphTimeline.jsx b/src/client/app/GraphTimeline.jsx index efbbdb5..15a7589 100644 --- a/src/client/app/GraphTimeline.jsx +++ b/src/client/app/GraphTimeline.jsx @@ -16,7 +16,7 @@ class GraphTimeline extends React.Component { lastEvent: null, selectedNode: null, maxTimeStamp: Date.now(), - cursorTs: props.graph.created, + cursorTs: props.graph.toBrowserTime(props.graph.created), intervalTimer: -1, autoScroll: props.graph.isLive(), autoVScroll: true, @@ -86,18 +86,18 @@ class GraphTimeline extends React.Component { if (newGraph) { console.log("New graph selected"); - update.cursorTs = graph.created; + update.cursorTs = graph.toBrowserTime(graph.created); this.startWatch(); } - const maxTs = graph.isLive() ? Date.now() : graph.finished; - let curDurationTs = (maxTs - graph.created); + const maxTs = graph.isLive() ? Date.now() : graph.toBrowserTime(graph.finished); + let curDurationTs = (maxTs - graph.toBrowserTime(graph.created)); if (this.state.autoScroll){ if(curDurationTs > (this.state.viewPortWidth / this.state.pxPerMs)) { - update.cursorTs = graph.created + (curDurationTs - (this.state.viewPortWidth / this.state.pxPerMs)); + update.cursorTs = graph.toBrowserTime(graph.created) + (curDurationTs - (this.state.viewPortWidth / this.state.pxPerMs)); } if(this.state.autoVScroll){ update.verticalScrollRatio = 1.0; @@ -106,7 +106,7 @@ class GraphTimeline extends React.Component { } }else{ update.cursorTs = Math.min(this.state.cursorTs,maxTs - this.state.viewPortWidth / this.state.pxPerMs); - update.cursorTs = Math.max(update.cursorTs,graph.created); + update.cursorTs = Math.max(update.cursorTs,graph.toBrowserTime(graph.created)); } @@ -115,14 +115,14 @@ class GraphTimeline extends React.Component { if (graph.isLive()) { update.maxTimeStamp = Date.now(); } else { - update.maxTimeStamp = graph.finished; + update.maxTimeStamp = graph.toBrowserTime(graph.finished); } - let lastGraphEvent = graph.all_events.length > 0 ? graph.all_events[graph.all_events.length - 1] : null; + let lastGraphEvent = graph.getLastEvent() ; let timeline; if (this.state.lastEvent !== lastGraphEvent) { - console.log("Updating graph"); + console.debug("Updating graph"); timeline = update.timeline = graph.createTimeline(this.isNodeShownByDefault); update.lastEvent = lastGraphEvent; } else { @@ -277,9 +277,7 @@ class GraphTimeline extends React.Component { } render() { - let nodes = this.state.graph.getNodes(); - //nodes.shift(); - let startTs = this.state.graph.created; + let startTs = this.state.graph.toBrowserTime(this.state.graph.created); let self = this; if (!this.state.timeline) { @@ -288,8 +286,9 @@ class GraphTimeline extends React.Component { // converts a timestamp to a relative X in the display viewport let relativeX = function (timeStamp) { - return ((timeStamp - startTs) * self.state.pxPerMs); - }; + let relTs = this.state.graph.toBrowserTime(timeStamp); + return ((relTs - startTs) * self.state.pxPerMs); + }.bind(this); let pendingElems = [(
10) { //waitElem = this.createWaitingElem(idx, this.state.nodeHeight, createTs, waitingTime); } @@ -383,7 +381,6 @@ class GraphTimeline extends React.Component { if (displayNode) { nodeElements.push(
- {waitElem}
this.selectNode(node)} diff --git a/src/client/app/ZoomLine.jsx b/src/client/app/ZoomLine.jsx index 829c698..322cb79 100644 --- a/src/client/app/ZoomLine.jsx +++ b/src/client/app/ZoomLine.jsx @@ -36,9 +36,11 @@ class ZoomLine extends React.Component { } relativeX(timeStamp) { - var minTs = this.state.graph.created; - const maxTs = this.state.graph.finished ? this.state.graph.finished : Date.now(); - let curDurationTs = (maxTs - this.state.graph.created); + var minTs = this.state.graph.toBrowserTime(this.state.graph.created); + const maxTs = this.state.graph.finished ? this.state.graph.toBrowserTime(this.state.graph.finished): Date.now(); + let curDurationTs = (maxTs - minTs); + timeStamp = this.state.graph.toBrowserTime(timeStamp); + if (curDurationTs < this.state.windowDurationMs) { return (timeStamp - minTs) * this.state.width / (this.state.windowDurationMs); } else { @@ -56,8 +58,8 @@ class ZoomLine extends React.Component { let deltaX = wmme.screenX - this.state.dragStartX; let inverted; - let minCursorTs = this.state.graph.created; - const maxTs = this.state.graph.finished ? this.state.graph.finished : Date.now(); + let minCursorTs = this.state.graph.toBrowserTime(this.state.graph.created); + const maxTs = this.state.graph.finished? this.state.graph.toBrowserTime(this.state.graph.finished) : Date.now(); const maxCursorTs = maxTs - this.state.windowDurationMs; let curDurationTs = (maxTs - minCursorTs); if (curDurationTs < this.state.windowDurationMs) { diff --git a/src/client/app/completerStreamClient.js b/src/client/app/completerStreamClient.js new file mode 100644 index 0000000..3c39a86 --- /dev/null +++ b/src/client/app/completerStreamClient.js @@ -0,0 +1,89 @@ +let oboe = require("oboe/dist/oboe-browser.min"); + +class Subscription { + constructor(baseUrl, callback, resumeSeq) { + this.callback = callback; + this.baseUrl = baseUrl; + this.resmeSeq = resumeSeq; + this.lastEvent = -1; + this.running = true; + + this.connect(); + } + + connect() { + + let url = this.baseUrl; + if (this.resmeSeq) { + url += "?from_seq=" + (this.lastEvent + 1) + } + console.log("requesting stream ", url); + + this.oboe = oboe(url) + .done((data) => { + // console.log("Received event from stream", data); + + if (this.resmeSeq) { + this.lastEvent = data.result.seq; + } + if (this.running) { + try { + this.callback(data.result); + } catch (error) { + console.error("Failed to call callback. killing stream "); + this.close(); + } + } + }) + .fail((error) => { + console.error(`Failed to get data from stream stream at ${url}`, error); + if (this.running) { + this.oboe.abort(); + this.oboe = null; + + console.log("trying to reconnect"); + + setTimeout(() => { + this.connect() + }, 1000); + } + }); + } + + close() { + if (this.oboe !== null) { + this.running = false; + this.oboe = null; + this.oboe.abort(); + } + } +} + +class CompleterStreamClient { + constructor() { + this.subscriptions = []; + } + + subscribeLifecycleStream(callback) { + let url = "/completer/v1/stream"; + let sub = new Subscription(url, callback, false); + this.subscriptions.push(sub); + return sub + } + + subscribeGraphStream(flowId, callback) { + let url = `/completer/v1/flows/${flowId}/stream`; + + let sub = new Subscription(url, callback, true); + this.subscriptions.push(sub); + return sub + } + + close() { + console.log("Closing client"); + this.subscriptions.forEach(s=>s.close()); + } + +} + +export default CompleterStreamClient; diff --git a/src/client/app/controller.js b/src/client/app/controller.js index c5acbf4..2b3dd12 100644 --- a/src/client/app/controller.js +++ b/src/client/app/controller.js @@ -2,7 +2,6 @@ import Graph from './graph.js'; //import CompleterWsClient from "./completerclient"; - class Controller { constructor(client, onChanged) { @@ -10,45 +9,49 @@ class Controller { this.active_graphs = new Map(); this.client = client; - client.receiver = (e) => { - this.receiveEvent(e); - }; + this.handleGraphEvent = this.handleGraphEvent.bind(this); + this.handleLifecycleEvent = this.handleLifecycleEvent.bind(this); + console.log("subscribing to lifecycle"); + this.lifecycleSub = client.subscribeLifecycleStream(this.handleLifecycleEvent); + this.subs = {}; + this.on_changed = onChanged; this.debounce_timeout = null; + } + subscribe(flowId) { + console.log("connecting to ",flowId); + if (this.subs[flowId]) { + return; + } + this.subs[flowId] = this.client.subscribeGraphStream(flowId, this.handleGraphEvent); } + handleGraphEvent(event) { + console.debug("Processing graph event", event) + let graph; + let flow_id = event.flow_id; - subscribe(graphId) { - this.client.subscribe(graphId); - } + if (event.graph_created) { + graph = new Graph(event.graph_created); + this.active_graphs.set(flow_id, graph); - receiveEvent(event) { - switch (event.sub) { - case '_all': - switch (event.type) { - case 'model.GraphCreatedEvent': - this.known_graphs.add(event); - break; - } - break; - default: { - let graph; - let graph_id = event.sub; - if (event.type === 'model.GraphCreatedEvent') { - graph = new Graph(event); - this.active_graphs.set(graph_id, graph); - - } else { - graph = this.active_graphs.get(graph_id) - if (!graph) { - console.log("Got event for unknown graph ${graphId}") - return; - } - } - graph.receiveEvent(event) + } else { + graph = this.active_graphs.get(flow_id) + if (!graph) { + console.log(`Got event for unknown graph ${flow_id}`) + return; } + } + graph.receiveEvent(event) + this.deBounce(() => this.on_changed(this), 200); + + } + handleLifecycleEvent(event) { + console.log("Processing lifecycle event", event) + if (event.graph_created) { + this.known_graphs.add(event); } this.deBounce(() => this.on_changed(this), 200); } diff --git a/src/client/app/graph.js b/src/client/app/graph.js index 88b4239..6d53d2f 100644 --- a/src/client/app/graph.js +++ b/src/client/app/graph.js @@ -3,7 +3,6 @@ * @param g * @param evt */ - class Node { constructor(props) { Object.assign(this, props); @@ -30,21 +29,21 @@ class Node { } else { if (b.state === 'running') { return this.completed > b.started; - } // both completed + } // both completed return ((this.started > b.started) && (this.started < b.completed)) || ((this.completed > b.started) && (this.completed < b.completed)); } } dependsOn(otherNode) { - if(this.depCache.has(otherNode.id())){ + if (this.depCache.has(otherNode.id())) { return this.depCache.get(otherNode.id()); } - let val = this.dependencies.some((n) => { + let val = this.dependencies.some((n) => { return n === otherNode || n.dependsOn(otherNode) }); - this.depCache.set(otherNode.id(),val); + this.depCache.set(otherNode.id(), val); return val; } @@ -52,13 +51,13 @@ class Node { return this.state === 'pending'; } - isCompleted(){ - return this.completed > 0; + isCompleted() { + return this.completed > 0; } deps() { let deps = Array.from(this.dependencies); - if(this.caller!=null && deps.length ===0){ + if (this.caller != null && deps.length === 0) { deps.push(this.caller); } return deps; @@ -76,9 +75,9 @@ class Node { transitiveDependenciesOfNode.add(dep); }); - if(includeCaller && this.caller){ + if (includeCaller && this.caller) { transitiveDependenciesOfNode.add(this.caller); - this.caller.transitiveDeps(true).forEach((d)=>transitiveDependenciesOfNode.add(d)); + this.caller.transitiveDeps(true).forEach((d) => transitiveDependenciesOfNode.add(d)); } return transitiveDependenciesOfNode; }; @@ -109,20 +108,47 @@ class GraphTimeline { class Graph { constructor(createdEvent) { - this.graph_id = createdEvent.data.graph_id; - this.created = Date.parse(createdEvent.data.ts); + this.flow_id = createdEvent.flow_id; + this.created = Date.parse(createdEvent.ts); this.main_ended = null; + this.lastEvent = null; this.finished = null; - this.all_events = []; + this.timeLag = 0; this.stage_map = new Map(); - this.function_id = createdEvent.data.function_id; + this.function_id = createdEvent.function_id; this.event_map = []; this.getNode = this.getNode.bind(this); this.getNodes = this.getNodes.bind(this); } + static getEventType(event) { + if (event.graph_created) { + return 'graph_created'; + } else if (event.stage_added) { + return 'stage_added'; + } else if (event.delay_scheduled) { + return 'delay_scheduled'; + } else if (event.faas_invocation_started) { + return 'faas_invocation_started'; + } else if (event.faas_invocation_completed) { + return 'faas_invocation_completed'; + } else if (event.stage_completed) { + return 'stage_completed'; + } else if (event.graph_committed) { + return 'graph_committed'; + } else if (event.graph_terminating) { + return 'graph_terminating'; + } else if (event.graph_completed) { + return 'graph_completed'; + } else if (event.stage_composed) { + return 'stage_composed'; + } else { + return nil; + } + } + getId() { - return this.graphId; + return this.flow_id; } @@ -130,12 +156,23 @@ class Graph { return this.finished == null; } + getLastEvent(){ + return this.lastEvent; + } + + toBrowserTime(ts){ + return ts + this.timeLag; + } + /** * pushes an event to the graph structure, updates * @param evt */ receiveEvent(evt) { - this.all_events.push(evt); + let sentTs = Date.parse(evt.sent_ts); + this.timeLag = Date.now() - sentTs; + + this.lastEvent = evt; function updateStage(stage_id, cb) { let stage = this.stage_map.get(stage_id); @@ -147,126 +184,108 @@ class Graph { } updateStage = updateStage.bind(this); - - switch (evt.type) { - case 'model.GraphCreatedEvent': { - let start = Date.parse(evt.data.ts); - this.stage_map.set("main", new Node({ - state: 'running', - stage_id: "main", - created: start, - started: start, - dependencies: [], - function_id: evt.data.function_id, - caller: null, - op: 'main', - })); - } - break; - case 'model.StageAddedEvent': { - const evtData = evt.data; - const stage_id = evtData.stage_id; - let stage = new Node({ - state: 'pending', - stage_id: stage_id, - created: Date.parse(evtData.ts), - op: evtData.op, - code_location: evtData.code_location, - caller: this.getNode(evtData.caller_id || "main"), - dependencies: ((evtData.dependencies || []).map(this.getNode)).map((dep) => { - if (dep.composed_node ) { - return dep.composed_node; - } else { - return dep; - } - }) - }); - - this.stage_map.set(stage_id, stage); - } - break; - case 'model.DelayScheduledEvent': { - updateStage(evt.data.stage_id, (stage) => { - //stage.state = 'running'; - //stage.started = Date.parse(evt.data.ts); - return stage; - }); - - } - break; - case 'model.FaasInvocationStartedEvent': { - updateStage(evt.data.stage_id, (stage) => { - stage.state = 'running'; - stage.started = Date.parse(evt.data.ts); - stage.function_id = evt.data.function_id; - return stage; - }); - - } - break; - case 'model.FaasInvocationCompletedEvent': { - updateStage(evt.data.stage_id, (stage) => { - stage.call_id = evt.data.call_id; - stage.completed = Date.parse(evt.data.ts); - return stage; - }); - - } - break; - case 'model.StageCompletedEvent': { - updateStage(evt.data.stage_id, (stage) => { - stage.state = evt.data.result.successful ? "successful" : "failed"; - if (!stage.completed) { - stage.completed = Date.parse(evt.data.ts); + let evtType = Graph.getEventType(evt) + console.log(`Processing event of type ${evtType}`, evt) + if (evt.graph_created) { + let start = Date.parse(evt[evtType].ts); + + this.stage_map.set("main", new Node({ + state: 'running', + stage_id: "main", + created: start, + started: start, + dependencies: [], + function_id: evt[evtType].function_id, + caller: null, + op: 'main', + })); + } else if (evt.stage_added) { + const stage_id = evt[evtType].stage_id; + let stage = new Node({ + state: 'pending', + stage_id: stage_id, + created: Date.parse(evt[evtType].ts), + op: evt[evtType].op, + code_location: evt[evtType].code_location, + caller: this.getNode(evt[evtType].caller_id || "main"), + dependencies: ((evt[evtType].dependencies || []).map(this.getNode)).map((dep) => { + if (dep.composed_node ) { + return dep.composed_node; + } else { + return dep; } - if (!stage.started) { - stage.started = stage.completed; + }) + }); + + this.stage_map.set(stage_id, stage); + } else if (evt.delay_scheduled) { + updateStage(evt[evtType].stage_id, (stage) => { + //stage.state = 'running'; + //stage.started = Date.parse(evt[evtType].ts); + return stage; + }); + } else if (evt.faas_invocation_started) { + updateStage(evt[evtType].stage_id, (stage) => { + stage.state = 'running'; + stage.started = Date.parse(evt[evtType].ts); + stage.function_id = evt[evtType].function_id; + return stage; + }); + } else if (evt.faas_invocation_completed) { + updateStage(evt[evtType].stage_id, (stage) => { + stage.call_id = evt[evtType].call_id; + stage.completed = Date.parse(evt[evtType].ts); + return stage; + }); + } else if (evt.stage_completed) { + updateStage(evt[evtType].stage_id, (stage) => { + stage.state = evt[evtType].result.successful ? "successful" : "failed"; + if (!stage.completed) { + stage.completed = Date.parse(evt[evtType].ts); + } + if (!stage.started) { + stage.started = stage.completed; + } + return stage; + }); + } else if (evt.graph_committed) { + updateStage("main", (stage) => { + stage.completed = Date.parse(evt[evtType].ts); + stage.state = "successful"; + return stage; + }); + } else if (evt.graph_terminating) { + updateStage("main", (stage) => { + stage.completed = Date.parse(evt[evtType].ts); + stage.state = "terminating"; + return stage; + }); + } else if (evt.graph_completed) { + this.finished = Date.parse(evt[evtType].ts); + } else if (evt.stage_composed) { + let thenComposedNode = this.getNode(evt[evtType].stage_id); + let newNode = this.getNode(evt[evtType].composed_stage_id); + thenComposedNode.composed_node = newNode; + console.log(`using ${newNode.id()} (${newNode.op}) in place of ${thenComposedNode.id()} ${thenComposedNode.op}`); + + this.getNodes().forEach((node) => { + node.dependencies = node.dependencies.map((dep) => { + if (dep.composed_node) { + return dep.composed_node; + } else { + return dep; } - return stage; }); - } - break; - case 'model.GraphCommittedEvent': { - const evtData = evt.data; - updateStage("main", (stage) => { - stage.completed = Date.parse(evtData.ts); - stage.state = "successful"; - return stage; - }); - } - break; - case 'model.GraphCompletedEvent' : { - const evtData = evt.data; - this.finished = Date.parse(evtData.ts); - } - break; - case 'model.StageComposedEvent': { - let thenComposedNode = this.getNode(evt.data.stage_id); - let newNode = this.getNode(evt.data.composed_stage_id); - thenComposedNode.composed_node = newNode; - console.log(`using ${newNode.id()} (${newNode.op}) in place of ${thenComposedNode.id()} ${thenComposedNode.op}`); - - this.getNodes().forEach((node) => { - node.dependencies = node.dependencies.map((dep) => { - if (dep.composed_node) { - return dep.composed_node; - } else { - return dep; - } - }); - }); - } - break; - default: - console.log("Unrecognised event ", evt.type); - + }); + } else { + console.log("Unrecognised event", evtType); } - if (this.event_map[evt.type]) { - this.event_map[evt.type].forEach((fn) => fn(evt)); + + if (this.event_map[evtType]) { + this.event_map[evtType].forEach((fn) => fn(evt)); } } - On(evt_name, fn) { (this.event_map[evt_name] = this.event_map[evt_name] || []).push(fn); } @@ -412,7 +431,7 @@ class Graph { } } } - if (!conflict) { // parent rank is free here + if (!conflict) { // parent rank is free here ranks[minRank].set(node.id(), node); } else { let rankMap = new Map(); @@ -438,4 +457,4 @@ class Graph { } } -export default Graph; +export default Graph; \ No newline at end of file diff --git a/src/client/app/index.jsx b/src/client/app/index.jsx index 52ca132..4c99505 100644 --- a/src/client/app/index.jsx +++ b/src/client/app/index.jsx @@ -7,8 +7,8 @@ import FnClient from './fnclient.js'; import styles from './index.css' import {HashRouter as Router, Route, Switch} from 'react-router-dom'; import MockCompleterClient from './mockcompleterclient.js'; -import CompleterWsClient from './completerclient.js'; import SpringyView from "./Springy.jsx"; +import CompleterStreamClient from "./completerStreamClient"; require('file-loader?name=[name].[ext]!./index.html'); @@ -17,7 +17,6 @@ class App extends React.Component { constructor(props) { super(props); - this.state = { loadOnNew: true, currentGraphId: null, @@ -34,17 +33,18 @@ class App extends React.Component { this.state.currentGraphId = null; - let client; if (props.match.path === '/mock') { - client = new MockCompleterClient(); + this.client = new MockCompleterClient(); } else { - client = new CompleterWsClient(); + this.client = new CompleterStreamClient(); } - this.state.controller = new Controller(client, (c) => { + console.log("Creating controller"); + this.state.controller = new Controller(this.client, (c) => { this.state.controller = c; - if (!this.state.currentGraphId && c.getKnownGraphs().length > 0 && this.state.loadOnNew) { - this.onGraphSelected(c.getKnownGraphs().slice(-1)[0].data.graph_id); + if (!this.state.currentGraphId && c.getKnownGraphs().length > 0 + && this.state.loadOnNew) { + this.onGraphSelected(c.getKnownGraphs().slice(-1)[0].flow_id); } else { this.setState(this.state); this.loadNodeData(); @@ -56,11 +56,14 @@ class App extends React.Component { } - componentDidMount() { } + componentWillUnmount() { + this.client.close(); + } + onGraphSelected(graphId) { console.log(`selected graph ${graphId}`); this.state.currentGraphId = graphId; @@ -100,14 +103,14 @@ class App extends React.Component { } else { return (
- +
); } } - renderCurrentNode() { if (this.state.currentNode == null) { return ( @@ -123,7 +126,6 @@ class App extends React.Component { ); } - loadCallLogs(node) { console.log("Loading call data for " + node.id()); let index = node.function_id.indexOf("/"); @@ -157,17 +159,17 @@ class App extends React.Component { let deps = currentNode.transitiveDeps(true); deps.add(currentNode); deps.forEach(node => { - if (!this.state.nodeLogs.has(node)) { - this.state.nodeLogs.set(node, null); - } - let lastState = this.watchedNodeState.get(node.id()); - if (!lastState && node.isCompleted()) { - this.watchedNodeState.set(node.id(), true); - if (node.call_id) { - this.loadCallLogs(node); - } - } - } + if (!this.state.nodeLogs.has(node)) { + this.state.nodeLogs.set(node, null); + } + let lastState = this.watchedNodeState.get(node.id()); + if (!lastState && node.isCompleted()) { + this.watchedNodeState.set(node.id(), true); + if (node.call_id) { + this.loadCallLogs(node); + } + } + } ); } } @@ -177,7 +179,7 @@ class App extends React.Component { this.setState({currentNode: node}); this.watchedNodeState = new Map(); if ((node !== null)) { - console.log(`node ${graph.graph_id}: ${node.stage_id} selected`); + console.log(`node ${graph.flow_id}: ${node.stage_id} selected`); this.state.nodeLogs = new Map(); this.state.nodeCalls = new Map(); this.loadNodeData(); @@ -193,18 +195,18 @@ class App extends React.Component { render() { let graphListItems = []; this.state.controller.getKnownGraphs().forEach((graph) => { - let elem = (
{ - this.onGraphSelected(graph.data.graph_id); + this.onGraphSelected(graph.flow_id); e.stopPropagation(); e.nativeEvent.stopImmediatePropagation(); - }}>{graph.data.function_id} -
{graph.data.graph_id}
+ }}>{graph.function_id} +
{graph.flow_id}
); diff --git a/src/client/app/sample_events.js b/src/client/app/sample_events.js index d044ff7..1e168ed 100644 --- a/src/client/app/sample_events.js +++ b/src/client/app/sample_events.js @@ -1,4143 +1,63 @@ const mockActiveGraphEvents=[ { - "type": "model.GraphCreatedEvent", - "sub": "_all", - "data": { - "graph_id": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "function_id": "myapp/flow", - "ts": "2017-09-24T02:01:30.315395015Z" + "seq": "0", + "flow_id": "b9a67d31-7cae-424b-aff8-cf4965f79a5a", + "graph_created": { + "flow_id": "b9a67d31-7cae-424b-aff8-cf4965f79a5a", + "function_id": "test/foo", + "ts": "2017-11-30T17:27:28.685007446Z" } } ]; const mockSubscriptionData= { - "47b0cec2-1a25-4e84-bfad-81e15bf0564a": [ + "b9a67d31-7cae-424b-aff8-cf4965f79a5a": [ { - "type": "model.GraphCreatedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "graph_id": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "function_id": "myapp/flow", - "ts": "2017-09-24T02:01:30.315395015Z" + "seq": "0", + "flow_id": "b9a67d31-7cae-424b-aff8-cf4965f79a5a", + "graph_created": { + "flow_id": "b9a67d31-7cae-424b-aff8-cf4965f79a5a", + "function_id": "test/foo", + "ts": "2017-11-30T17:27:28.685007446Z" } }, { - "type": "model.GraphCreatedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "graph_id": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "function_id": "myapp/flow", - "ts": "2017-09-24T02:01:30.315395015Z" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { + "seq": "1", + "flow_id": "b9a67d31-7cae-424b-aff8-cf4965f79a5a", + "stage_added": { "stage_id": "0", - "op": "invokeFunction", + "op": "delay", "closure": null, "dependencies": [], - "ts": "2017-09-24T02:01:30.360252126Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:80)", - "caller_id": "" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "0", - "ts": "2017-09-24T02:01:30.360435318Z", - "function_id": "myapp/post-slack" + "ts": "2017-11-30T17:29:08.478561846Z", + "code_location": "", + "caller_id": "", + "flow_id": "b9a67d31-7cae-424b-aff8-cf4965f79a5a" } }, { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { + "seq": "2", + "flow_id": "b9a67d31-7cae-424b-aff8-cf4965f79a5a", + "delay_scheduled": { "stage_id": "0", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "721", - "content_type": "text/plain; charset=utf-8", - "length": "0" - }, - "headers": [ - { - "key": "Content-Length", - "value": "0" - }, - { - "key": "Fn_call_id", - "value": "01BTRSWEFY07WYY00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "995.027588ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:36 GMT" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:36.642803357Z", - "call_id": "01BTRSWEFY07WYY00000000000" + "time_ms": "1512062958480", + "ts": "2017-11-30T17:29:08.480184266Z", + "flow_id": "b9a67d31-7cae-424b-aff8-cf4965f79a5a" } }, { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { + "seq": "3", + "flow_id": "b9a67d31-7cae-424b-aff8-cf4965f79a5a", + "stage_completed": { "stage_id": "0", "result": { "successful": true, "datum": { - "http_resp": { - "body": { - "blob_id": "721", - "content_type": "text/plain; charset=utf-8", - "length": "0" - }, - "headers": [ - { - "key": "Content-Length", - "value": "0" - }, - { - "key": "Fn_call_id", - "value": "01BTRSWEFY07WYY00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "995.027588ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:36 GMT" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:36.643305189Z" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "1", - "op": "invokeFunction", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:01:36.677972137Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:80)", - "caller_id": "" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "1", - "ts": "2017-09-24T02:01:36.678442205Z", - "function_id": "myapp/scraper" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "2", - "op": "thenApply", - "closure": { - "blob_id": "723", - "content_type": "application/java-serialized-object", - "length": "875" - }, - "dependencies": [ - "1" - ], - "ts": "2017-09-24T02:01:36.729738925Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:48)", - "caller_id": "" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "3", - "op": "thenCompose", - "closure": { - "blob_id": "724", - "content_type": "application/java-serialized-object", - "length": "702" - }, - "dependencies": [ - "2" - ], - "ts": "2017-09-24T02:01:36.746038570Z", - "code_location": "com.example.vista.VistaFlow.handleRequest(VistaFlow.java:31)", - "caller_id": "" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "4", - "op": "whenComplete", - "closure": { - "blob_id": "725", - "content_type": "application/java-serialized-object", - "length": "667" - }, - "dependencies": [ - "3" - ], - "ts": "2017-09-24T02:01:36.763906938Z", - "code_location": "com.example.vista.VistaFlow.handleRequest(VistaFlow.java:73)", - "caller_id": "" - } - }, - { - "type": "model.GraphCommittedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "graph_id": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "ts": "2017-09-24T02:01:36.797729343Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "1", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "726", - "content_type": "text/plain; charset=utf-8", - "length": "1343" - }, - "headers": [ - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:40 GMT" - }, - { - "key": "Content-Length", - "value": "1343" - }, - { - "key": "Fn_call_id", - "value": "01BTRSWMNN07WZ200000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "244.253646ms" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:40.275745587Z", - "call_id": "01BTRSWMNN07WZ200000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "1", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "726", - "content_type": "text/plain; charset=utf-8", - "length": "1343" - }, - "headers": [ - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:40 GMT" - }, - { - "key": "Content-Length", - "value": "1343" - }, - { - "key": "Fn_call_id", - "value": "01BTRSWMNN07WZ200000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "244.253646ms" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:40.277017147Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "2", - "ts": "2017-09-24T02:01:40.277761205Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "2", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "727", - "content_type": "application/java-serialized-object", - "length": "1114" - } - } - }, - "ts": "2017-09-24T02:01:40.444096173Z", - "call_id": "01BTRSWR5T07WZ600000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "2", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "727", - "content_type": "application/java-serialized-object", - "length": "1114" - } - } - }, - "ts": "2017-09-24T02:01:40.444358077Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "3", - "ts": "2017-09-24T02:01:40.444510205Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "5", - "op": "invokeFunction", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:01:40.466765806Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:80)", - "caller_id": "3" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "5", - "ts": "2017-09-24T02:01:40.470302901Z", - "function_id": "myapp/detect-plates" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "6", - "op": "thenApply", - "closure": { - "blob_id": "729", - "content_type": "application/java-serialized-object", - "length": "909" - }, - "dependencies": [ - "5" - ], - "ts": "2017-09-24T02:01:40.509016368Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:48)", - "caller_id": "3" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "7", - "op": "thenCompose", - "closure": { - "blob_id": "730", - "content_type": "application/java-serialized-object", - "length": "1030" - }, - "dependencies": [ - "6" - ], - "ts": "2017-09-24T02:01:40.528077187Z", - "code_location": "com.example.vista.VistaFlow.lambda$null$0(VistaFlow.java:43)", - "caller_id": "3" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "8", - "op": "invokeFunction", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:01:40.547100548Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:80)", - "caller_id": "3" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "8", - "ts": "2017-09-24T02:01:40.547376635Z", - "function_id": "myapp/detect-plates" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "9", - "op": "thenApply", - "closure": { - "blob_id": "732", - "content_type": "application/java-serialized-object", - "length": "909" - }, - "dependencies": [ - "8" - ], - "ts": "2017-09-24T02:01:40.589087708Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:48)", - "caller_id": "3" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "10", - "op": "thenCompose", - "closure": { - "blob_id": "733", - "content_type": "application/java-serialized-object", - "length": "1030" - }, - "dependencies": [ - "9" - ], - "ts": "2017-09-24T02:01:40.604376098Z", - "code_location": "com.example.vista.VistaFlow.lambda$null$0(VistaFlow.java:43)", - "caller_id": "3" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "11", - "op": "invokeFunction", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:01:40.621337793Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:80)", - "caller_id": "3" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "11", - "ts": "2017-09-24T02:01:40.625338663Z", - "function_id": "myapp/detect-plates" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "12", - "op": "thenApply", - "closure": { - "blob_id": "735", - "content_type": "application/java-serialized-object", - "length": "909" - }, - "dependencies": [ - "11" - ], - "ts": "2017-09-24T02:01:40.631598475Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:48)", - "caller_id": "3" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "13", - "op": "thenCompose", - "closure": { - "blob_id": "736", - "content_type": "application/java-serialized-object", - "length": "1030" - }, - "dependencies": [ - "12" - ], - "ts": "2017-09-24T02:01:40.655307731Z", - "code_location": "com.example.vista.VistaFlow.lambda$null$0(VistaFlow.java:43)", - "caller_id": "3" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "14", - "op": "invokeFunction", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:01:40.675486384Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:80)", - "caller_id": "3" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "14", - "ts": "2017-09-24T02:01:40.676731274Z", - "function_id": "myapp/detect-plates" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "15", - "op": "thenApply", - "closure": { - "blob_id": "738", - "content_type": "application/java-serialized-object", - "length": "909" - }, - "dependencies": [ - "14" - ], - "ts": "2017-09-24T02:01:40.704332922Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:48)", - "caller_id": "3" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "16", - "op": "thenCompose", - "closure": { - "blob_id": "739", - "content_type": "application/java-serialized-object", - "length": "1030" - }, - "dependencies": [ - "15" - ], - "ts": "2017-09-24T02:01:40.719170523Z", - "code_location": "com.example.vista.VistaFlow.lambda$null$0(VistaFlow.java:43)", - "caller_id": "3" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "17", - "op": "invokeFunction", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:01:40.757254402Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:80)", - "caller_id": "3" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "17", - "ts": "2017-09-24T02:01:40.761757004Z", - "function_id": "myapp/detect-plates" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "18", - "op": "thenApply", - "closure": { - "blob_id": "741", - "content_type": "application/java-serialized-object", - "length": "909" - }, - "dependencies": [ - "17" - ], - "ts": "2017-09-24T02:01:40.776859305Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:48)", - "caller_id": "3" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "19", - "op": "thenCompose", - "closure": { - "blob_id": "742", - "content_type": "application/java-serialized-object", - "length": "1030" - }, - "dependencies": [ - "18" - ], - "ts": "2017-09-24T02:01:40.817753803Z", - "code_location": "com.example.vista.VistaFlow.lambda$null$0(VistaFlow.java:43)", - "caller_id": "3" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "20", - "op": "invokeFunction", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:01:40.835535070Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:80)", - "caller_id": "3" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "20", - "ts": "2017-09-24T02:01:40.840679245Z", - "function_id": "myapp/detect-plates" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "21", - "op": "thenApply", - "closure": { - "blob_id": "744", - "content_type": "application/java-serialized-object", - "length": "909" - }, - "dependencies": [ - "20" - ], - "ts": "2017-09-24T02:01:40.879157079Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:48)", - "caller_id": "3" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "22", - "op": "thenCompose", - "closure": { - "blob_id": "745", - "content_type": "application/java-serialized-object", - "length": "1030" - }, - "dependencies": [ - "21" - ], - "ts": "2017-09-24T02:01:40.913376435Z", - "code_location": "com.example.vista.VistaFlow.lambda$null$0(VistaFlow.java:43)", - "caller_id": "3" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "23", - "op": "invokeFunction", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:01:40.922004665Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:80)", - "caller_id": "3" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "23", - "ts": "2017-09-24T02:01:40.923061569Z", - "function_id": "myapp/detect-plates" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "24", - "op": "thenApply", - "closure": { - "blob_id": "747", - "content_type": "application/java-serialized-object", - "length": "909" - }, - "dependencies": [ - "23" - ], - "ts": "2017-09-24T02:01:40.953122632Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:48)", - "caller_id": "3" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "25", - "op": "thenCompose", - "closure": { - "blob_id": "748", - "content_type": "application/java-serialized-object", - "length": "1030" - }, - "dependencies": [ - "24" - ], - "ts": "2017-09-24T02:01:40.983186892Z", - "code_location": "com.example.vista.VistaFlow.lambda$null$0(VistaFlow.java:43)", - "caller_id": "3" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "26", - "op": "invokeFunction", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:01:41.030168598Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:80)", - "caller_id": "3" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "26", - "ts": "2017-09-24T02:01:41.032523731Z", - "function_id": "myapp/detect-plates" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "27", - "op": "thenApply", - "closure": { - "blob_id": "750", - "content_type": "application/java-serialized-object", - "length": "909" - }, - "dependencies": [ - "26" - ], - "ts": "2017-09-24T02:01:41.070231836Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:48)", - "caller_id": "3" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "28", - "op": "thenCompose", - "closure": { - "blob_id": "751", - "content_type": "application/java-serialized-object", - "length": "1030" - }, - "dependencies": [ - "27" - ], - "ts": "2017-09-24T02:01:41.085909086Z", - "code_location": "com.example.vista.VistaFlow.lambda$null$0(VistaFlow.java:43)", - "caller_id": "3" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "29", - "op": "invokeFunction", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:01:41.104069324Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:80)", - "caller_id": "3" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "29", - "ts": "2017-09-24T02:01:41.105228811Z", - "function_id": "myapp/detect-plates" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "30", - "op": "thenApply", - "closure": { - "blob_id": "753", - "content_type": "application/java-serialized-object", - "length": "909" - }, - "dependencies": [ - "29" - ], - "ts": "2017-09-24T02:01:41.131058466Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:48)", - "caller_id": "3" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "31", - "op": "thenCompose", - "closure": { - "blob_id": "754", - "content_type": "application/java-serialized-object", - "length": "1030" - }, - "dependencies": [ - "30" - ], - "ts": "2017-09-24T02:01:41.153474186Z", - "code_location": "com.example.vista.VistaFlow.lambda$null$0(VistaFlow.java:43)", - "caller_id": "3" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "32", - "op": "invokeFunction", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:01:41.165582177Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:80)", - "caller_id": "3" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "32", - "ts": "2017-09-24T02:01:41.165844779Z", - "function_id": "myapp/detect-plates" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "33", - "op": "thenApply", - "closure": { - "blob_id": "756", - "content_type": "application/java-serialized-object", - "length": "909" - }, - "dependencies": [ - "32" - ], - "ts": "2017-09-24T02:01:41.186165571Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:48)", - "caller_id": "3" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "34", - "op": "thenCompose", - "closure": { - "blob_id": "757", - "content_type": "application/java-serialized-object", - "length": "1030" - }, - "dependencies": [ - "33" - ], - "ts": "2017-09-24T02:01:41.198904448Z", - "code_location": "com.example.vista.VistaFlow.lambda$null$0(VistaFlow.java:43)", - "caller_id": "3" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "35", - "op": "allOf", - "closure": null, - "dependencies": [ - "7", - "10", - "13", - "16", - "19", - "22", - "25", - "28", - "31", - "34" - ], - "ts": "2017-09-24T02:01:41.233741504Z", - "code_location": "com.example.vista.VistaFlow.lambda$handleRequest$d8973b84$1(VistaFlow.java:71)", - "caller_id": "3" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "3", - "result": { - "successful": true, - "datum": { - "stage_ref": { - "stage_ref": "35" - } + "empty": {} } }, - "ts": "2017-09-24T02:01:41.278887288Z", - "call_id": "01BTRSWRAX07WZ800000000000" - } - }, - { - "type": "model.StageComposedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "3", - "composed_stage_id": "35", - "ts": "2017-09-24T02:01:41.279336279Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "14", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "758", - "content_type": "text/plain; charset=utf-8", - "length": "72" - }, - "headers": [ - { - "key": "Fn_call_id", - "value": "01BTRSWRJJ07WZP00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "538.396105ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:48 GMT" - }, - { - "key": "Content-Length", - "value": "72" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:48.051050260Z", - "call_id": "01BTRSWRJJ07WZP00000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "14", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "758", - "content_type": "text/plain; charset=utf-8", - "length": "72" - }, - "headers": [ - { - "key": "Fn_call_id", - "value": "01BTRSWRJJ07WZP00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "538.396105ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:48 GMT" - }, - { - "key": "Content-Length", - "value": "72" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:48.054140261Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "15", - "ts": "2017-09-24T02:01:48.101331030Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "15", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "759", - "content_type": "application/java-serialized-object", - "length": "141" - } - } - }, - "ts": "2017-09-24T02:01:48.313023543Z", - "call_id": "01BTRSWZTS07WGJ00000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "15", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "759", - "content_type": "application/java-serialized-object", - "length": "141" - } - } - }, - "ts": "2017-09-24T02:01:48.317157362Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "16", - "ts": "2017-09-24T02:01:48.318258516Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "36", - "op": "completedValue", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:01:48.499560138Z", - "code_location": "com.example.vista.VistaFlow.lambda$null$ca732154$1(VistaFlow.java:48)", - "caller_id": "16" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "36", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "760", - "content_type": "application/java-serialized-object", - "length": "5" - } - } - }, - "ts": "2017-09-24T02:01:48.508785793Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "16", - "result": { - "successful": true, - "datum": { - "stage_ref": { - "stage_ref": "36" - } - } - }, - "ts": "2017-09-24T02:01:48.697793390Z", - "call_id": "01BTRSX01307WGM00000000000" - } - }, - { - "type": "model.StageComposedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "16", - "composed_stage_id": "36", - "ts": "2017-09-24T02:01:48.698646824Z" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "16", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "760", - "content_type": "application/java-serialized-object", - "length": "5" - } - } - }, - "ts": "2017-09-24T02:01:48.700600712Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "29", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "761", - "content_type": "text/plain; charset=utf-8", - "length": "188" - }, - "headers": [ - { - "key": "Fn_call_id", - "value": "01BTRSWRZW07WGA00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "394.479454ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:48 GMT" - }, - { - "key": "Content-Length", - "value": "188" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:48.770820406Z", - "call_id": "01BTRSWRZW07WGA00000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "29", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "761", - "content_type": "text/plain; charset=utf-8", - "length": "188" - }, - "headers": [ - { - "key": "Fn_call_id", - "value": "01BTRSWRZW07WGA00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "394.479454ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:48 GMT" - }, - { - "key": "Content-Length", - "value": "188" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:48.771953923Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "30", - "ts": "2017-09-24T02:01:48.772354769Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "30", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "762", - "content_type": "application/java-serialized-object", - "length": "296" - } - } - }, - "ts": "2017-09-24T02:01:48.942251205Z", - "call_id": "01BTRSX0FG07WGP00000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "30", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "762", - "content_type": "application/java-serialized-object", - "length": "296" - } - } - }, - "ts": "2017-09-24T02:01:48.949855395Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "31", - "ts": "2017-09-24T02:01:48.959392197Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "23", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "763", - "content_type": "text/plain; charset=utf-8", - "length": "72" - }, - "headers": [ - { - "key": "Fn_call_id", - "value": "01BTRSWRV307WG200000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "463.029538ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:48 GMT" - }, - { - "key": "Content-Length", - "value": "72" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:48.961243601Z", - "call_id": "01BTRSWRV307WG200000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "23", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "763", - "content_type": "text/plain; charset=utf-8", - "length": "72" - }, - "headers": [ - { - "key": "Fn_call_id", - "value": "01BTRSWRV307WG200000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "463.029538ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:48 GMT" - }, - { - "key": "Content-Length", - "value": "72" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:49.001317527Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "24", - "ts": "2017-09-24T02:01:49.001978080Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "37", - "op": "invokeFunction", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:01:49.058942083Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:80)", - "caller_id": "31" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "37", - "ts": "2017-09-24T02:01:49.066350694Z", - "function_id": "myapp/draw" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "38", - "op": "thenApply", - "closure": { - "blob_id": "765", - "content_type": "application/java-serialized-object", - "length": "862" - }, - "dependencies": [ - "37" - ], - "ts": "2017-09-24T02:01:49.125207254Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:48)", - "caller_id": "31" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "17", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "767", - "content_type": "text/plain; charset=utf-8", - "length": "72" - }, - "headers": [ - { - "key": "Fn_call_id", - "value": "01BTRSWRN007WZT00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "529.651706ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:49 GMT" - }, - { - "key": "Content-Length", - "value": "72" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:49.203659028Z", - "call_id": "01BTRSWRN007WZT00000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "17", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "767", - "content_type": "text/plain; charset=utf-8", - "length": "72" - }, - "headers": [ - { - "key": "Fn_call_id", - "value": "01BTRSWRN007WZT00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "529.651706ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:49 GMT" - }, - { - "key": "Content-Length", - "value": "72" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:49.207250561Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "18", - "ts": "2017-09-24T02:01:49.208175314Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "39", - "op": "thenCompose", - "closure": { - "blob_id": "766", - "content_type": "application/java-serialized-object", - "length": "1086" - }, - "dependencies": [ - "38" - ], - "ts": "2017-09-24T02:01:49.213953472Z", - "code_location": "com.example.vista.VistaFlow.lambda$null$ca732154$1(VistaFlow.java:54)", - "caller_id": "31" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "31", - "result": { - "successful": true, - "datum": { - "stage_ref": { - "stage_ref": "39" - } - } - }, - "ts": "2017-09-24T02:01:49.304137262Z", - "call_id": "01BTRSX0N107WGR00000000000" - } - }, - { - "type": "model.StageComposedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "31", - "composed_stage_id": "39", - "ts": "2017-09-24T02:01:49.307699129Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "24", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "768", - "content_type": "application/java-serialized-object", - "length": "141" - } - } - }, - "ts": "2017-09-24T02:01:49.569923128Z", - "call_id": "01BTRSX0PM07WGT00000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "24", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "768", - "content_type": "application/java-serialized-object", - "length": "141" - } - } - }, - "ts": "2017-09-24T02:01:49.571680239Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "25", - "ts": "2017-09-24T02:01:49.593133848Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "26", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "769", - "content_type": "text/plain; charset=utf-8", - "length": "72" - }, - "headers": [ - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:49 GMT" - }, - { - "key": "Content-Length", - "value": "72" - }, - { - "key": "Fn_call_id", - "value": "01BTRSWRY107WG600000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "445.436159ms" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:49.640890176Z", - "call_id": "01BTRSWRY107WG600000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "26", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "769", - "content_type": "text/plain; charset=utf-8", - "length": "72" - }, - "headers": [ - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:49 GMT" - }, - { - "key": "Content-Length", - "value": "72" - }, - { - "key": "Fn_call_id", - "value": "01BTRSWRY107WG600000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "445.436159ms" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:49.642879424Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "27", - "ts": "2017-09-24T02:01:49.643923941Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "18", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "770", - "content_type": "application/java-serialized-object", - "length": "141" - } - } - }, - "ts": "2017-09-24T02:01:49.855581494Z", - "call_id": "01BTRSX0XC07WH200000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "18", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "770", - "content_type": "application/java-serialized-object", - "length": "141" - } - } - }, - "ts": "2017-09-24T02:01:49.855888646Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "19", - "ts": "2017-09-24T02:01:49.856081528Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "40", - "op": "completedValue", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:01:49.869046648Z", - "code_location": "com.example.vista.VistaFlow.lambda$null$ca732154$1(VistaFlow.java:48)", - "caller_id": "25" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "40", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "771", - "content_type": "application/java-serialized-object", - "length": "5" - } - } - }, - "ts": "2017-09-24T02:01:49.872532901Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "20", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "772", - "content_type": "text/plain; charset=utf-8", - "length": "72" - }, - "headers": [ - { - "key": "Fn_call_id", - "value": "01BTRSWRR507WZY00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "513.354858ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:49 GMT" - }, - { - "key": "Content-Length", - "value": "72" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:49.928963308Z", - "call_id": "01BTRSWRR507WZY00000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "20", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "772", - "content_type": "text/plain; charset=utf-8", - "length": "72" - }, - "headers": [ - { - "key": "Fn_call_id", - "value": "01BTRSWRR507WZY00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "513.354858ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:49 GMT" - }, - { - "key": "Content-Length", - "value": "72" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:49.930071154Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "21", - "ts": "2017-09-24T02:01:49.930434242Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "25", - "result": { - "successful": true, - "datum": { - "stage_ref": { - "stage_ref": "40" - } - } - }, - "ts": "2017-09-24T02:01:50.026198414Z", - "call_id": "01BTRSX1A307WH600000000000" - } - }, - { - "type": "model.StageComposedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "25", - "composed_stage_id": "40", - "ts": "2017-09-24T02:01:50.026644809Z" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "25", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "771", - "content_type": "application/java-serialized-object", - "length": "5" - } - } - }, - "ts": "2017-09-24T02:01:50.031993653Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "27", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "773", - "content_type": "application/java-serialized-object", - "length": "141" - } - } - }, - "ts": "2017-09-24T02:01:50.127524289Z", - "call_id": "01BTRSX1AH07WH800000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "27", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "773", - "content_type": "application/java-serialized-object", - "length": "141" - } - } - }, - "ts": "2017-09-24T02:01:50.128291620Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "28", - "ts": "2017-09-24T02:01:50.130247206Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "41", - "op": "completedValue", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:01:50.167431904Z", - "code_location": "com.example.vista.VistaFlow.lambda$null$ca732154$1(VistaFlow.java:48)", - "caller_id": "19" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "41", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "774", - "content_type": "application/java-serialized-object", - "length": "5" - } - } - }, - "ts": "2017-09-24T02:01:50.167940228Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "19", - "result": { - "successful": true, - "datum": { - "stage_ref": { - "stage_ref": "41" - } - } - }, - "ts": "2017-09-24T02:01:50.212425960Z", - "call_id": "01BTRSX1H207WHE00000000000" - } - }, - { - "type": "model.StageComposedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "19", - "composed_stage_id": "41", - "ts": "2017-09-24T02:01:50.216166724Z" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "19", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "774", - "content_type": "application/java-serialized-object", - "length": "5" - } - } - }, - "ts": "2017-09-24T02:01:50.222471586Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "21", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "775", - "content_type": "application/java-serialized-object", - "length": "141" - } - } - }, - "ts": "2017-09-24T02:01:50.405796917Z", - "call_id": "01BTRSX1KE07WHG00000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "21", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "775", - "content_type": "application/java-serialized-object", - "length": "141" - } - } - }, - "ts": "2017-09-24T02:01:50.406116255Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "22", - "ts": "2017-09-24T02:01:50.406432997Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "42", - "op": "completedValue", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:01:50.446028765Z", - "code_location": "com.example.vista.VistaFlow.lambda$null$ca732154$1(VistaFlow.java:48)", - "caller_id": "28" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "42", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "776", - "content_type": "application/java-serialized-object", - "length": "5" - } - } - }, - "ts": "2017-09-24T02:01:50.450252383Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "28", - "result": { - "successful": true, - "datum": { - "stage_ref": { - "stage_ref": "42" - } - } - }, - "ts": "2017-09-24T02:01:50.649494892Z", - "call_id": "01BTRSX1SP07WHP00000000000" - } - }, - { - "type": "model.StageComposedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "28", - "composed_stage_id": "42", - "ts": "2017-09-24T02:01:50.658507687Z" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "28", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "776", - "content_type": "application/java-serialized-object", - "length": "5" - } - } - }, - "ts": "2017-09-24T02:01:50.692134513Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "5", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "777", - "content_type": "text/plain; charset=utf-8", - "length": "72" - }, - "headers": [ - { - "key": "Fn_call_id", - "value": "01BTRSWRC907WZA00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "304.515814ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:50 GMT" - }, - { - "key": "Content-Length", - "value": "72" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:50.723280349Z", - "call_id": "01BTRSWRC907WZA00000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "5", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "777", - "content_type": "text/plain; charset=utf-8", - "length": "72" - }, - "headers": [ - { - "key": "Fn_call_id", - "value": "01BTRSWRC907WZA00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "304.515814ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:50 GMT" - }, - { - "key": "Content-Length", - "value": "72" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:50.724612740Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "6", - "ts": "2017-09-24T02:01:50.725470769Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "43", - "op": "completedValue", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:01:50.725886997Z", - "code_location": "com.example.vista.VistaFlow.lambda$null$ca732154$1(VistaFlow.java:48)", - "caller_id": "22" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "43", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "778", - "content_type": "application/java-serialized-object", - "length": "5" - } - } - }, - "ts": "2017-09-24T02:01:50.728115874Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "8", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "779", - "content_type": "text/plain; charset=utf-8", - "length": "72" - }, - "headers": [ - { - "key": "Fn_call_id", - "value": "01BTRSWREF07WZE00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "502.38418ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:50 GMT" - }, - { - "key": "Content-Length", - "value": "72" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:50.825761116Z", - "call_id": "01BTRSWREF07WZE00000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "8", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "779", - "content_type": "text/plain; charset=utf-8", - "length": "72" - }, - "headers": [ - { - "key": "Fn_call_id", - "value": "01BTRSWREF07WZE00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "502.38418ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:50 GMT" - }, - { - "key": "Content-Length", - "value": "72" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:50.827027582Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "9", - "ts": "2017-09-24T02:01:50.858670854Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "22", - "result": { - "successful": true, - "datum": { - "stage_ref": { - "stage_ref": "43" - } - } - }, - "ts": "2017-09-24T02:01:50.941318477Z", - "call_id": "01BTRSX22807WHT00000000000" - } - }, - { - "type": "model.StageComposedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "22", - "composed_stage_id": "43", - "ts": "2017-09-24T02:01:50.942622301Z" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "22", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "778", - "content_type": "application/java-serialized-object", - "length": "5" - } - } - }, - "ts": "2017-09-24T02:01:50.943394027Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "9", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "780", - "content_type": "application/java-serialized-object", - "length": "141" - } - } - }, - "ts": "2017-09-24T02:01:51.152841382Z", - "call_id": "01BTRSX2GF07WJ000000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "9", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "780", - "content_type": "application/java-serialized-object", - "length": "141" - } - } - }, - "ts": "2017-09-24T02:01:51.164646216Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "10", - "ts": "2017-09-24T02:01:51.194226823Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "11", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "781", - "content_type": "text/plain; charset=utf-8", - "length": "72" - }, - "headers": [ - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:51 GMT" - }, - { - "key": "Content-Length", - "value": "72" - }, - { - "key": "Fn_call_id", - "value": "01BTRSWRGW07WZJ00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "502.002012ms" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:51.250380344Z", - "call_id": "01BTRSWRGW07WZJ00000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "11", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "781", - "content_type": "text/plain; charset=utf-8", - "length": "72" - }, - "headers": [ - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:51 GMT" - }, - { - "key": "Content-Length", - "value": "72" - }, - { - "key": "Fn_call_id", - "value": "01BTRSWRGW07WZJ00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "502.002012ms" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:51.250793276Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "12", - "ts": "2017-09-24T02:01:51.251078454Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "6", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "782", - "content_type": "application/java-serialized-object", - "length": "141" - } - } - }, - "ts": "2017-09-24T02:01:51.372302099Z", - "call_id": "01BTRSX2CR07WHY00000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "6", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "782", - "content_type": "application/java-serialized-object", - "length": "141" - } - } - }, - "ts": "2017-09-24T02:01:51.373374485Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "7", - "ts": "2017-09-24T02:01:51.374196654Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "12", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "783", - "content_type": "application/java-serialized-object", - "length": "141" - } - } - }, - "ts": "2017-09-24T02:01:51.451570049Z", - "call_id": "01BTRSX2X207WJ600000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "12", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "783", - "content_type": "application/java-serialized-object", - "length": "141" - } - } - }, - "ts": "2017-09-24T02:01:51.452617563Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "13", - "ts": "2017-09-24T02:01:51.453421053Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "44", - "op": "completedValue", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:01:51.522561269Z", - "code_location": "com.example.vista.VistaFlow.lambda$null$ca732154$1(VistaFlow.java:48)", - "caller_id": "10" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "44", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "784", - "content_type": "application/java-serialized-object", - "length": "5" - } - } - }, - "ts": "2017-09-24T02:01:51.523855304Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "10", - "result": { - "successful": true, - "datum": { - "stage_ref": { - "stage_ref": "44" - } - } - }, - "ts": "2017-09-24T02:01:51.675882073Z", - "call_id": "01BTRSX2V107WJ400000000000" - } - }, - { - "type": "model.StageComposedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "10", - "composed_stage_id": "44", - "ts": "2017-09-24T02:01:51.676853873Z" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "10", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "784", - "content_type": "application/java-serialized-object", - "length": "5" - } - } - }, - "ts": "2017-09-24T02:01:51.678548354Z" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "45", - "op": "completedValue", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:01:51.736037762Z", - "code_location": "com.example.vista.VistaFlow.lambda$null$ca732154$1(VistaFlow.java:48)", - "caller_id": "7" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "45", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "785", - "content_type": "application/java-serialized-object", - "length": "5" - } - } - }, - "ts": "2017-09-24T02:01:51.769883541Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "7", - "result": { - "successful": true, - "datum": { - "stage_ref": { - "stage_ref": "45" - } - } - }, - "ts": "2017-09-24T02:01:51.884705734Z", - "call_id": "01BTRSX30J07WJA00000000000" - } - }, - { - "type": "model.StageComposedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "7", - "composed_stage_id": "45", - "ts": "2017-09-24T02:01:51.885422223Z" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "7", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "785", - "content_type": "application/java-serialized-object", - "length": "5" - } - } - }, - "ts": "2017-09-24T02:01:51.899447743Z" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "46", - "op": "completedValue", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:01:51.929086984Z", - "code_location": "com.example.vista.VistaFlow.lambda$null$ca732154$1(VistaFlow.java:48)", - "caller_id": "13" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "46", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "786", - "content_type": "application/java-serialized-object", - "length": "5" - } - } - }, - "ts": "2017-09-24T02:01:51.929780798Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "13", - "result": { - "successful": true, - "datum": { - "stage_ref": { - "stage_ref": "46" - } - } - }, - "ts": "2017-09-24T02:01:52.004429278Z", - "call_id": "01BTRSX33N07WJC00000000000" - } - }, - { - "type": "model.StageComposedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "13", - "composed_stage_id": "46", - "ts": "2017-09-24T02:01:52.005306585Z" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "13", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "786", - "content_type": "application/java-serialized-object", - "length": "5" - } - } - }, - "ts": "2017-09-24T02:01:52.006904476Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "32", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "787", - "content_type": "text/plain; charset=utf-8", - "length": "186" - }, - "headers": [ - { - "key": "Fn_call_id", - "value": "01BTRSWS1T07WGE00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "395.000164ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:54 GMT" - }, - { - "key": "Content-Length", - "value": "186" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:54.658667838Z", - "call_id": "01BTRSWS1T07WGE00000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "32", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "787", - "content_type": "text/plain; charset=utf-8", - "length": "186" - }, - "headers": [ - { - "key": "Fn_call_id", - "value": "01BTRSWS1T07WGE00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "395.000164ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:01:54 GMT" - }, - { - "key": "Content-Length", - "value": "186" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:01:54.673372888Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "33", - "ts": "2017-09-24T02:01:54.713211381Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "33", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "788", - "content_type": "application/java-serialized-object", - "length": "294" - } - } - }, - "ts": "2017-09-24T02:01:54.911876544Z", - "call_id": "01BTRSX6B207WJJ00000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "33", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "788", - "content_type": "application/java-serialized-object", - "length": "294" - } - } - }, - "ts": "2017-09-24T02:01:54.912399152Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "34", - "ts": "2017-09-24T02:01:54.913207737Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "37", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "789", - "content_type": "text/plain; charset=utf-8", - "length": "111" - }, - "headers": [ - { - "key": "Fn_call_id", - "value": "01BTRSX0RK07WGW00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "447.009877ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:02:02 GMT" - }, - { - "key": "Content-Length", - "value": "111" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:02:02.702531037Z", - "call_id": "01BTRSX0RK07WGW00000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "37", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "789", - "content_type": "text/plain; charset=utf-8", - "length": "111" - }, - "headers": [ - { - "key": "Fn_call_id", - "value": "01BTRSX0RK07WGW00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "447.009877ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:02:02 GMT" - }, - { - "key": "Content-Length", - "value": "111" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:02:02.708551321Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "38", - "ts": "2017-09-24T02:02:02.712876324Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "47", - "op": "invokeFunction", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:02:06.298589429Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:80)", - "caller_id": "34" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "47", - "ts": "2017-09-24T02:02:06.299104446Z", - "function_id": "myapp/draw" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "48", - "op": "thenApply", - "closure": { - "blob_id": "791", - "content_type": "application/java-serialized-object", - "length": "862" - }, - "dependencies": [ - "47" - ], - "ts": "2017-09-24T02:02:06.377370929Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:48)", - "caller_id": "34" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "49", - "op": "thenCompose", - "closure": { - "blob_id": "792", - "content_type": "application/java-serialized-object", - "length": "1084" - }, - "dependencies": [ - "48" - ], - "ts": "2017-09-24T02:02:06.395732939Z", - "code_location": "com.example.vista.VistaFlow.lambda$null$ca732154$1(VistaFlow.java:54)", - "caller_id": "34" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "34", - "result": { - "successful": true, - "datum": { - "stage_ref": { - "stage_ref": "49" - } - } - }, - "ts": "2017-09-24T02:02:06.500174985Z", - "call_id": "01BTRSX6F607WJM00000000000" - } - }, - { - "type": "model.StageComposedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "34", - "composed_stage_id": "49", - "ts": "2017-09-24T02:02:06.500555754Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "38", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "793", - "content_type": "application/java-serialized-object", - "length": "167" - } - } - }, - "ts": "2017-09-24T02:02:06.839648619Z", - "call_id": "01BTRSXE3507WJP00000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "38", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "793", - "content_type": "application/java-serialized-object", - "length": "167" - } - } - }, - "ts": "2017-09-24T02:02:06.839983939Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "39", - "ts": "2017-09-24T02:02:06.840161139Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "50", - "op": "invokeFunction", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:02:08.136357031Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:80)", - "caller_id": "39" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "50", - "ts": "2017-09-24T02:02:08.142177441Z", - "function_id": "myapp/alert" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "51", - "op": "invokeFunction", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:02:08.192099317Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:80)", - "caller_id": "39" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "51", - "ts": "2017-09-24T02:02:08.193604413Z", - "function_id": "myapp/post-slack" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "52", - "op": "allOf", - "closure": null, - "dependencies": [ - "50", - "51" - ], - "ts": "2017-09-24T02:02:08.335217073Z", - "code_location": "com.example.vista.VistaFlow.lambda$null$732ec3da$1(VistaFlow.java:57)", - "caller_id": "39" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "39", - "result": { - "successful": true, - "datum": { - "stage_ref": { - "stage_ref": "52" - } - } - }, - "ts": "2017-09-24T02:02:08.552474585Z", - "call_id": "01BTRSXJ3T07WJW00000000000" - } - }, - { - "type": "model.StageComposedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "39", - "composed_stage_id": "52", - "ts": "2017-09-24T02:02:08.574722295Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "51", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "796", - "content_type": "text/plain; charset=utf-8", - "length": "0" - }, - "headers": [ - { - "key": "Xxx-Fxlb-Wait", - "value": "262.103µs" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:02:09 GMT" - }, - { - "key": "Content-Length", - "value": "0" - }, - { - "key": "Fn_call_id", - "value": "01BTRSXKES07WK200000000000" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:02:09.759192788Z", - "call_id": "01BTRSXKES07WK200000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "51", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "796", - "content_type": "text/plain; charset=utf-8", - "length": "0" - }, - "headers": [ - { - "key": "Xxx-Fxlb-Wait", - "value": "262.103µs" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:02:09 GMT" - }, - { - "key": "Content-Length", - "value": "0" - }, - { - "key": "Fn_call_id", - "value": "01BTRSXKES07WK200000000000" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:02:09.759805694Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "47", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "797", - "content_type": "text/plain; charset=utf-8", - "length": "111" - }, - "headers": [ - { - "key": "Content-Length", - "value": "111" - }, - { - "key": "Fn_call_id", - "value": "01BTRSXHK807WJR00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "279.0035ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:02:10 GMT" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:02:10.758636176Z", - "call_id": "01BTRSXHK807WJR00000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "47", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "797", - "content_type": "text/plain; charset=utf-8", - "length": "111" - }, - "headers": [ - { - "key": "Content-Length", - "value": "111" - }, - { - "key": "Fn_call_id", - "value": "01BTRSXHK807WJR00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "279.0035ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:02:10 GMT" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:02:10.758969998Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "48", - "ts": "2017-09-24T02:02:10.759433773Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "48", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "798", - "content_type": "application/java-serialized-object", - "length": "167" - } - } - }, - "ts": "2017-09-24T02:02:11.648689720Z", - "call_id": "01BTRSXNYH07WK400000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "48", - "result": { - "successful": true, - "datum": { - "blob": { - "blob_id": "798", - "content_type": "application/java-serialized-object", - "length": "167" - } - } - }, - "ts": "2017-09-24T02:02:11.648985685Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "49", - "ts": "2017-09-24T02:02:11.649136514Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "53", - "op": "invokeFunction", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:02:11.695703090Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:80)", - "caller_id": "49" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "53", - "ts": "2017-09-24T02:02:11.696198229Z", - "function_id": "myapp/alert" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "54", - "op": "invokeFunction", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:02:11.708929514Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:80)", - "caller_id": "49" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "54", - "ts": "2017-09-24T02:02:11.709176535Z", - "function_id": "myapp/post-slack" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "55", - "op": "allOf", - "closure": null, - "dependencies": [ - "53", - "54" - ], - "ts": "2017-09-24T02:02:11.734304783Z", - "code_location": "com.example.vista.VistaFlow.lambda$null$732ec3da$1(VistaFlow.java:57)", - "caller_id": "49" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "49", - "result": { - "successful": true, - "datum": { - "stage_ref": { - "stage_ref": "55" - } - } - }, - "ts": "2017-09-24T02:02:11.799565692Z", - "call_id": "01BTRSXPT207WK600000000000" - } - }, - { - "type": "model.StageComposedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "49", - "composed_stage_id": "55", - "ts": "2017-09-24T02:02:11.801367252Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "50", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "801", - "content_type": "text/plain; charset=utf-8", - "length": "0" - }, - "headers": [ - { - "key": "Content-Length", - "value": "0" - }, - { - "key": "Fn_call_id", - "value": "01BTRSXKCM07WJY00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "244.79833ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:02:12 GMT" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:02:12.086754525Z", - "call_id": "01BTRSXKCM07WJY00000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "50", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "801", - "content_type": "text/plain; charset=utf-8", - "length": "0" - }, - "headers": [ - { - "key": "Content-Length", - "value": "0" - }, - { - "key": "Fn_call_id", - "value": "01BTRSXKCM07WJY00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "244.79833ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:02:12 GMT" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:02:12.099465034Z" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "52", - "result": { - "successful": true, - "datum": { - "empty": {} - } - }, - "ts": "2017-09-24T02:02:12.102053003Z" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "39", - "result": { - "successful": true, - "datum": { - "empty": {} - } - }, - "ts": "2017-09-24T02:02:12.103072249Z" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "31", - "result": { - "successful": true, - "datum": { - "empty": {} - } - }, - "ts": "2017-09-24T02:02:12.103755875Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "54", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "802", - "content_type": "text/plain; charset=utf-8", - "length": "0" - }, - "headers": [ - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:02:13 GMT" - }, - { - "key": "Content-Length", - "value": "0" - }, - { - "key": "Fn_call_id", - "value": "01BTRSXPW607WKC00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "321.536µs" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:02:13.211370787Z", - "call_id": "01BTRSXPW607WKC00000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "54", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "802", - "content_type": "text/plain; charset=utf-8", - "length": "0" - }, - "headers": [ - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:02:13 GMT" - }, - { - "key": "Content-Length", - "value": "0" - }, - { - "key": "Fn_call_id", - "value": "01BTRSXPW607WKC00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "321.536µs" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:02:13.211849445Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "53", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "803", - "content_type": "text/plain; charset=utf-8", - "length": "0" - }, - "headers": [ - { - "key": "Fn_call_id", - "value": "01BTRSXPVH07WK800000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "298.187879ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:02:19 GMT" - }, - { - "key": "Content-Length", - "value": "0" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:02:19.637501851Z", - "call_id": "01BTRSXPVH07WK800000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "53", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "803", - "content_type": "text/plain; charset=utf-8", - "length": "0" - }, - "headers": [ - { - "key": "Fn_call_id", - "value": "01BTRSXPVH07WK800000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "298.187879ms" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:02:19 GMT" - }, - { - "key": "Content-Length", - "value": "0" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:02:19.637784931Z" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "55", - "result": { - "successful": true, - "datum": { - "empty": {} - } - }, - "ts": "2017-09-24T02:02:19.638165799Z" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "49", - "result": { - "successful": true, - "datum": { - "empty": {} - } - }, - "ts": "2017-09-24T02:02:19.638358781Z" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "34", - "result": { - "successful": true, - "datum": { - "empty": {} - } - }, - "ts": "2017-09-24T02:02:19.638591018Z" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "35", - "result": { - "successful": true, - "datum": { - "empty": {} - } - }, - "ts": "2017-09-24T02:02:19.638894474Z" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "3", - "result": { - "successful": true, - "datum": { - "empty": {} - } - }, - "ts": "2017-09-24T02:02:19.639082561Z" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "4", - "ts": "2017-09-24T02:02:19.639281636Z", - "function_id": "myapp/flow" - } - }, - { - "type": "model.StageAddedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "56", - "op": "invokeFunction", - "closure": null, - "dependencies": [], - "ts": "2017-09-24T02:02:20.414770895Z", - "code_location": "com.fnproject.fn.runtime.flow.JsonInvoke.invokeFunction(JsonInvoke.java:80)", - "caller_id": "4" - } - }, - { - "type": "model.FaasInvocationStartedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "56", - "ts": "2017-09-24T02:02:20.416625994Z", - "function_id": "myapp/post-slack" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "4", - "result": { - "successful": true, - "datum": { - "empty": {} - } - }, - "ts": "2017-09-24T02:02:20.516639255Z", - "call_id": "01BTRSXYMJ07WKE00000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "4", - "result": { - "successful": true, - "datum": { - "empty": {} - } - }, - "ts": "2017-09-24T02:02:20.517182939Z" - } - }, - { - "type": "model.FaasInvocationCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "56", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "805", - "content_type": "text/plain; charset=utf-8", - "length": "0" - }, - "headers": [ - { - "key": "Content-Length", - "value": "0" - }, - { - "key": "Fn_call_id", - "value": "01BTRSXZC507WKG00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "508.624µs" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:02:20 GMT" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:02:20.671024653Z", - "call_id": "01BTRSXZC507WKG00000000000" - } - }, - { - "type": "model.StageCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "stage_id": "56", - "result": { - "successful": true, - "datum": { - "http_resp": { - "body": { - "blob_id": "805", - "content_type": "text/plain; charset=utf-8", - "length": "0" - }, - "headers": [ - { - "key": "Content-Length", - "value": "0" - }, - { - "key": "Fn_call_id", - "value": "01BTRSXZC507WKG00000000000" - }, - { - "key": "Xxx-Fxlb-Wait", - "value": "508.624µs" - }, - { - "key": "Date", - "value": "Sun, 24 Sep 2017 02:02:20 GMT" - } - ], - "status_code": 200 - } - } - }, - "ts": "2017-09-24T02:02:20.682775049Z" - } - }, - { - "type": "model.GraphTerminatingEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "graph_id": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "function_id": "myapp/flow", - "state": "unknown_state", - "ts": "2017-09-24T02:02:20.683562757Z" - } - }, - { - "type": "model.GraphCompletedEvent", - "sub": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "data": { - "graph_id": "47b0cec2-1a25-4e84-bfad-81e15bf0564a", - "function_id": "myapp/flow", - "ts": "2017-09-24T02:02:20.683859921Z" + "ts": "2017-11-30T17:29:18.484233585Z", + "flow_id": "b9a67d31-7cae-424b-aff8-cf4965f79a5a" } } ]