{"push_id":1173526607,"size":92,"distinct_size":92,"ref":"refs/heads/branch-2.0-mmx","head":"8f27c30d9cc12df7d8700d9a7282b49bfc8b90d7","before":"9b65b10a8b6d5bf8ec85a9c13439b79691efc7c8","commits":[{"sha":"b22b20db640e9fac20c5d54cc83964dc74393821","author":{"name":"hyukjinkwon","email":"4c114bf3676ebcdb1616a11ca478d9181f4025da@gmail.com"},"message":"[SPARK-15916][SQL] JDBC filter push down should respect operator precedence\n\n## What changes were proposed in this pull request?\n\nThis PR fixes the problem that the precedence order is messed when pushing where-clause expression to JDBC layer.\n\n**Case 1:**\n\nFor sql `select * from table where (a or b) and c`, the where-clause is wrongly converted to JDBC where-clause `a or (b and c)` after filter push down. The consequence is that JDBC may returns less or more rows than expected.\n\n**Case 2:**\n\nFor sql `select * from table where always_false_condition`, the result table may not be empty if the JDBC RDD is partitioned using where-clause:\n```\nspark.read.jdbc(url, table, predicates = Array(\"partition 1 where clause\", \"partition 2 where clause\"...)\n```\n\n## How was this patch tested?\n\nUnit test.\n\nThis PR also close #13640\n\nAuthor: hyukjinkwon <gurwls223@gmail.com>\nAuthor: Sean Zhong <seanzhong@databricks.com>\n\nCloses #13743 from clockfly/SPARK-15916.\n\n(cherry picked from commit ebb9a3b6fd834e2c856a192b4455aab83e9c4dc8)\nSigned-off-by: Cheng Lian <lian@databricks.com>","distinct":true,"url":"https://api.github.com/repos/metamx/spark/commits/b22b20db640e9fac20c5d54cc83964dc74393821"},{"sha":"57feaa572db62059555b573e145449d0063b08c8","author":{"name":"Cheng Lian","email":"924ffd5d9c6cd2cddca5f635d9a74ad9e1c46f4d@databricks.com"},"message":"[SPARK-16033][SQL] insertInto() can't be used together with partitionBy()\n\n## What changes were proposed in this pull request?\n\nWhen inserting into an existing partitioned table, partitioning columns should always be determined by catalog metadata of the existing table to be inserted. Extra `partitionBy()` calls don't make sense, and mess up existing data because newly inserted data may have wrong partitioning directory layout.\n\n## How was this patch tested?\n\nNew test case added in `InsertIntoHiveTableSuite`.\n\nAuthor: Cheng Lian <lian@databricks.com>\n\nCloses #13747 from liancheng/spark-16033-insert-into-without-partition-by.\n\n(cherry picked from commit 10b671447bc04af250cbd8a7ea86f2769147a78a)\nSigned-off-by: Yin Huai <yhuai@databricks.com>","distinct":true,"url":"https://api.github.com/repos/metamx/spark/commits/57feaa572db62059555b573e145449d0063b08c8"},{"sha":"f0de45cb1591c5e43a8a7c74566a9f43b6af7dcb","author":{"name":"GayathriMurali","email":"4ab130683b4c8acb132110628fb68dab8eafbf6a@intel.com"},"message":"[SPARK-15129][R][DOC] R API changes in ML\n\n## What changes were proposed in this pull request?\n\nMake user guide changes to SparkR documentation for all changes that happened in 2.0 to Machine Learning APIs\n\nAuthor: GayathriMurali <gayathri.m@intel.com>\n\nCloses #13285 from GayathriMurali/SPARK-15129.\n\n(cherry picked from commit af2a4b0826b2358c0fe75c3e4d7fd8f7bccdd8e5)\nSigned-off-by: Xiangrui Meng <meng@databricks.com>","distinct":true,"url":"https://api.github.com/repos/metamx/spark/commits/f0de45cb1591c5e43a8a7c74566a9f43b6af7dcb"},{"sha":"0a8fd2eb8966afaff3030adef5fc6fd73171607c","author":{"name":"Xiangrui Meng","email":"e4720f5dc69a5967cefd679a46054c60c7e8d310@databricks.com"},"message":"[SPARK-15946][MLLIB] Conversion between old/new vector columns in a DataFrame (Python)\n\n## What changes were proposed in this pull request?\n\nThis PR implements python wrappers for #13662 to convert old/new vector columns in a DataFrame.\n\n## How was this patch tested?\n\ndoctest in Python\n\ncc: yanboliang\n\nAuthor: Xiangrui Meng <meng@databricks.com>\n\nCloses #13731 from mengxr/SPARK-15946.\n\n(cherry picked from commit edb23f9e47eecfe60992dde0e037ec1985c77e1d)\nSigned-off-by: Yanbo Liang <ybliang8@gmail.com>","distinct":true,"url":"https://api.github.com/repos/metamx/spark/commits/0a8fd2eb8966afaff3030adef5fc6fd73171607c"},{"sha":"8b7e561210a29d66317ce66f598d4bd2ad2c8087","author":{"name":"Felix Cheung","email":"00eb71019ad7acfd67cff51fce666aad32ce6eed@hotmail.com"},"message":"[SPARK-15159][SPARKR] SparkR SparkSession API\n\n## What changes were proposed in this pull request?\n\nThis PR introduces the new SparkSession API for SparkR.\n`sparkR.session.getOrCreate()` and `sparkR.session.stop()`\n\n\"getOrCreate\" is a bit unusual in R but it's important to name this clearly.\n\nSparkR implementation should\n- SparkSession is the main entrypoint (vs SparkContext; due to limited functionality supported with SparkContext in SparkR)\n- SparkSession replaces SQLContext and HiveContext (both a wrapper around SparkSession, and because of API changes, supporting all 3 would be a lot more work)\n- Changes to SparkSession is mostly transparent to users due to SPARK-10903\n- Full backward compatibility is expected - users should be able to initialize everything just in Spark 1.6.1 (`sparkR.init()`), but with deprecation warning\n- Mostly cosmetic changes to parameter list - users should be able to move to `sparkR.session.getOrCreate()` easily\n- An advanced syntax with named parameters (aka varargs aka \"...\") is supported; that should be closer to the Builder syntax that is in Scala/Python (which unfortunately does not work in R because it will look like this: `enableHiveSupport(config(config(master(appName(builder(), \"foo\"), \"local\"), \"first\", \"value\"), \"next, \"value\"))`\n- Updating config on an existing SparkSession is supported, the behavior is the same as Python, in which config is applied to both SparkContext and SparkSession\n- Some SparkSession changes are not matched in SparkR, mostly because it would be breaking API change: `catalog` object, `createOrReplaceTempView`\n- Other SQLContext workarounds are replicated in SparkR, eg. `tables`, `tableNames`\n- `sparkR` shell is updated to use the SparkSession entrypoint (`sqlContext` is removed, just like with Scale/Python)\n- All tests are updated to use the SparkSession entrypoint\n- A bug in `read.jdbc` is fixed\n\nTODO\n- [x] Add more tests\n- [ ] Separate PR - update all roxygen2 doc coding example\n- [ ] Separate PR - update SparkR programming guide\n\n## How was this patch tested?\n\nunit tests, manual tests\n\nshivaram sun-rui rxin\n\nAuthor: Felix Cheung <felixcheung_m@hotmail.com>\nAuthor: felixcheung <felixcheung_m@hotmail.com>\n\nCloses #13635 from felixcheung/rsparksession.\n\n(cherry picked from commit 8c198e246d64b5779dc3a2625d06ec958553a20b)\nSigned-off-by: Shivaram Venkataraman <shivaram@cs.berkeley.edu>","distinct":true,"url":"https://api.github.com/repos/metamx/spark/commits/8b7e561210a29d66317ce66f598d4bd2ad2c8087"},{"sha":"2859ea3ecc41d12e03231cc50aac63bf22e91047","author":{"name":"Shixiong Zhu","email":"eb2f6da57ec54996cebae8c2a82b9fbfd527e14c@databricks.com"},"message":"[SPARK-16020][SQL] Fix complete mode aggregation with console sink\n\n## What changes were proposed in this pull request?\n\nWe cannot use `limit` on DataFrame in ConsoleSink because it will use a wrong planner. This PR just collects `DataFrame` and calls `show` on a batch DataFrame based on the result. This is fine since ConsoleSink is only for debugging.\n\n## How was this patch tested?\n\nManually confirmed ConsoleSink now works with complete mode aggregation.\n\nAuthor: Shixiong Zhu <shixiong@databricks.com>\n\nCloses #13740 from zsxwing/complete-console.\n\n(cherry picked from commit d0ac0e6f433bfccf4ced3743a2526f67fdb5c38e)\nSigned-off-by: Shixiong Zhu <shixiong@databricks.com>","distinct":true,"url":"https://api.github.com/repos/metamx/spark/commits/2859ea3ecc41d12e03231cc50aac63bf22e91047"},{"sha":"2066258eff18b1c98ac30d59b224c40a9af1c482","author":{"name":"andreapasqua","email":"fe714fe7c07fd0f92a2400b512fa35e6342369e8@radius.com"},"message":"[SPARK-16035][PYSPARK] Fix SparseVector parser assertion for end parenthesis\n\n## What changes were proposed in this pull request?\nThe check on the end parenthesis of the expression to parse was using the wrong variable. I corrected that.\n## How was this patch tested?\nManual test\n\nAuthor: andreapasqua <andrea@radius.com>\n\nCloses #13750 from andreapasqua/sparse-vector-parser-assertion-fix.\n\n(cherry picked from commit 4c64e88d5ba4c36cbdbc903376492f0f43401e4e)\nSigned-off-by: Xiangrui Meng <meng@databricks.com>","distinct":true,"url":"https://api.github.com/repos/metamx/spark/commits/2066258eff18b1c98ac30d59b224c40a9af1c482"},{"sha":"feeef497d8af0cc3bac962e622fb000bd42b63a3","author":{"name":"Jeff Zhang","email":"8540ccd5710ce8e6da3f6c1c8189a4ef2fa98c60@apache.org"},"message":"[SPARK-15803] [PYSPARK] Support with statement syntax for SparkSession\n\n## What changes were proposed in this pull request?\n\nSupport with statement syntax for SparkSession in pyspark\n\n## How was this patch tested?\n\nManually verify it. Although I can add unit test for it, it would affect other unit test because the SparkContext is stopped after the with statement.\n\nAuthor: Jeff Zhang <zjffdu@apache.org>\n\nCloses #13541 from zjffdu/SPARK-15803.\n\n(cherry picked from commit 898cb652558ce31a9883448334a45ff0265e2241)\nSigned-off-by: Davies Liu <davies.liu@gmail.com>","distinct":true,"url":"https://api.github.com/repos/metamx/spark/commits/feeef497d8af0cc3bac962e622fb000bd42b63a3"},{"sha":"329dfe706572400b77ff03883bde60bcf9d47d3b","author":{"name":"Andrew Or","email":"6b7c097d961f68685fc978cf91eeae17be6cbb45@databricks.com"},"message":"[SPARK-16023][SQL] Move InMemoryRelation to its own file\n\n## What changes were proposed in this pull request?\n\nImprove readability of `InMemoryTableScanExec.scala`, which has too much stuff in it.\n\n## How was this patch tested?\n\nJenkins\n\nAuthor: Andrew Or <andrew@databricks.com>\n\nCloses #13742 from andrewor14/move-inmemory-relation.\n\n(cherry picked from commit 35a2f3c01201ee1e9f6247b2d919a82d933d3888)\nSigned-off-by: Reynold Xin <rxin@databricks.com>","distinct":true,"url":"https://api.github.com/repos/metamx/spark/commits/329dfe706572400b77ff03883bde60bcf9d47d3b"},{"sha":"f159eb52171ee595a10c0a130ecabcfcf0a191af","author":{"name":"Josh Howes","email":"87edd08cbc2edc6f39c56027fc6ae5772989a1ec@gmail.com"},"message":"[SPARK-15973][PYSPARK] Fix GroupedData Documentation\n\n*This contribution is my original work and that I license the work to the project under the project's open source license.*\n\n## What changes were proposed in this pull request?\n\nDocumentation updates to PySpark's GroupedData\n\n## How was this patch tested?\n\nManual Tests\n\nAuthor: Josh Howes <josh.howes@gmail.com>\nAuthor: Josh Howes <josh.howes@maxpoint.com>\n\nCloses #13724 from josh-howes/bugfix/SPARK-15973.\n\n(cherry picked from commit e574c9973ddbef023c066ccd6f771ab01cbf2d88)\nSigned-off-by: Reynold Xin <rxin@databricks.com>","distinct":true,"url":"https://api.github.com/repos/metamx/spark/commits/f159eb52171ee595a10c0a130ecabcfcf0a191af"},{"sha":"8d2fc010b36a8ecbbecdfd0ea331b9a5ffaf716d","author":{"name":"Wenchen Fan","email":"51df79715bab6f96b68cf2b8813ef1aaa5547bdb@databricks.com"},"message":"[SPARK-16036][SPARK-16037][SQL] fix various table insertion problems\n\n## What changes were proposed in this pull request?\n\nThe current table insertion has some weird behaviours:\n\n1. inserting into a partitioned table with mismatch columns has confusing error message for hive table, and wrong result for datasource table\n2. inserting into a partitioned table without partition list has wrong result for hive table.\n\nThis PR fixes these 2 problems.\n\n## How was this patch tested?\n\nnew test in hive `SQLQuerySuite`\n\nAuthor: Wenchen Fan <wenchen@databricks.com>\n\nCloses #13754 from cloud-fan/insert2.\n\n(cherry picked from commit 3d010c837582c23b5ddf65602213e3772b418f08)\nSigned-off-by: Yin Huai <yhuai@databricks.com>","distinct":true,"url":"https://api.github.com/repos/metamx/spark/commits/8d2fc010b36a8ecbbecdfd0ea331b9a5ffaf716d"},{"sha":"ee6eea644fe0197a183385ef5879911ae8ab9ccb","author":{"name":"Sean Zhong","email":"5320fbfa67c9b6c0e01431b7f024db2a7ff8bdaf@databricks.com"},"message":"[SPARK-16034][SQL] Checks the partition columns when calling dataFrame.write.mode(\"append\").saveAsTable\n\n## What changes were proposed in this pull request?\n\n`DataFrameWriter` can be used to append data to existing data source tables. It becomes tricky when partition columns used in `DataFrameWriter.partitionBy(columns)` don't match the actual partition columns of the underlying table. This pull request enforces the check so that the partition columns of these two always match.\n\n## How was this patch tested?\n\nUnit test.\n\nAuthor: Sean Zhong <seanzhong@databricks.com>\n\nCloses #13749 from clockfly/SPARK-16034.\n\n(cherry picked from commit ce3b98bae28af72299722f56e4e4ef831f471ec0)\nSigned-off-by: Yin Huai <yhuai@databricks.com>","distinct":true,"url":"https://api.github.com/repos/metamx/spark/commits/ee6eea644fe0197a183385ef5879911ae8ab9ccb"},{"sha":"dc85bd0a08d7a511c667df2cbf27d6c2085c19dc","author":{"name":"Davies Liu","email":"589979bd19a058b75730100a5a88539708000f52@databricks.com"},"message":"[SPARK-15613] [SQL] Fix incorrect days to millis conversion due to Daylight Saving Time\n\n## What changes were proposed in this pull request?\n\nInternally, we use Int to represent a date (the days since 1970-01-01), when we convert that into unix timestamp (milli-seconds since epoch in UTC), we get the offset of a timezone using local millis (the milli-seconds since 1970-01-01 in a timezone), but TimeZone.getOffset() expect unix timestamp, the result could be off by one hour (in Daylight Saving Time (DST) or not).\n\nThis PR change to use best effort approximate of posix timestamp to lookup the offset. In the event of changing of DST, Some time is not defined (for example, 2016-03-13 02:00:00 PST), or could lead to multiple valid result in UTC (for example, 2016-11-06 01:00:00), this best effort approximate should be enough in practice.\n\n## How was this patch tested?\n\nAdded regression tests.\n\nAuthor: Davies Liu <davies@databricks.com>\n\nCloses #13652 from davies/fix_timezone.\n\n(cherry picked from commit 001a58960311b07fe80e2f01e473f4987948d06e)\nSigned-off-by: Davies Liu <davies.liu@gmail.com>","distinct":true,"url":"https://api.github.com/repos/metamx/spark/commits/dc85bd0a08d7a511c667df2cbf27d6c2085c19dc"},{"sha":"2c1c337ba5984b9e495b4d02bf865e56fd83ab03","author":{"name":"Prashant Sharma","email":"11e7a890529a76e490b6b424f1e54fdbb430b978@apache.org"},"message":"[SPARK-15942][REPL] Unblock `:reset` command in REPL.\n\n## What changes were proposed in this pull\n(Paste from JIRA issue.)\nAs a follow up for SPARK-15697, I have following semantics for `:reset` command.\nOn `:reset` we forget all that user has done but not the initialization of spark. To avoid confusion or make it more clear, we show the message `spark` and `sc` are not erased, infact they are in same state as they were left by previous operations done by the user.\nWhile doing above, somewhere I felt that this is not usually what reset means. But an accidental shutdown of a cluster can be very costly, so may be in that sense this is less surprising and still useful.\n\n## How was this patch tested?\n\nManually, by calling `:reset` command, by both altering the state of SparkContext and creating some local variables.\n\nAuthor: Prashant Sharma <prashant@apache.org>\nAuthor: Prashant Sharma <prashsh1@in.ibm.com>\n\nCloses #13661 from ScrapCodes/repl-reset-command.\n\n(cherry picked from commit 1b3a9b966a7813e2406dfb020e83605af22f9ef3)\nSigned-off-by: Sean Owen <sowen@cloudera.com>","distinct":true,"url":"https://api.github.com/repos/metamx/spark/commits/2c1c337ba5984b9e495b4d02bf865e56fd83ab03"},{"sha":"80c6d4e3a49fad4dac46738fe5458641f21b96a1","author":{"name":"wm624@hotmail.com","email":"b6c6222622ee4c4512cfd0b24fc74f0642b6e399@hotmail.com"},"message":"[SPARK-16040][MLLIB][DOC] spark.mllib PIC document extra line of refernece\n\n## What changes were proposed in this pull request?\n\nIn the 2.0 document, Line \"A full example that produces the experiment described in the PIC paper can be found under examples/.\" is redundant.\n\nThere is already \"Find full example code at \"examples/src/main/scala/org/apache/spark/examples/mllib/PowerIterationClusteringExample.scala\" in the Spark repo.\".\n\nWe should remove the first line, which is consistent with other documents.\n\n## How was this patch tested?\n\n(Please explain how this patch was tested. E.g. unit tests, integration tests, manual tests)\n\nManual test\n\nAuthor: wm624@hotmail.com <wm624@hotmail.com>\n\nCloses #13755 from wangmiao1981/doc.\n\n(cherry picked from commit 5930d7a2e95b2fe4d470cf39546e5a12306553fe)\nSigned-off-by: Sean Owen <sowen@cloudera.com>","distinct":true,"url":"https://api.github.com/repos/metamx/spark/commits/80c6d4e3a49fad4dac46738fe5458641f21b96a1"},{"sha":"d11f533ded502c6cc4a129e201362bca6e302028","author":{"name":"Matei Zaharia","email":"ef5db27c6a74a2115af8d2c3b819c27d39c06ffb@databricks.com"},"message":"[SPARK-16031] Add debug-only socket source in Structured Streaming\n\n## What changes were proposed in this pull request?\n\nThis patch adds a text-based socket source similar to the one in Spark Streaming for debugging and tutorials. The source is clearly marked as debug-only so that users don't try to run it in production applications, because this type of source cannot provide HA without storing a lot of state in Spark.\n\n## How was this patch tested?\n\nUnit tests and manual tests in spark-shell.\n\nAuthor: Matei Zaharia <matei@databricks.com>\n\nCloses #13748 from mateiz/socket-source.\n\n(cherry picked from commit 4f17fddcd57adeae0d7e31bd14423283d4b625e9)\nSigned-off-by: Reynold Xin <rxin@databricks.com>","distinct":true,"url":"https://api.github.com/repos/metamx/spark/commits/d11f533ded502c6cc4a129e201362bca6e302028"},{"sha":"19397caab62b550269961a123bd11a34afc3a09b","author":{"name":"Yin Huai","email":"7e8362bd012819bee68b9375d9cefa24afbef722@databricks.com"},"message":"[SPARK-16036][SPARK-16037][SPARK-16034][SQL] Follow up code clean up and improvement\n\n## What changes were proposed in this pull request?\nThis PR is the follow-up PR for https://github.com/apache/spark/pull/13754/files and https://github.com/apache/spark/pull/13749. I will comment inline to explain my changes.\n\n## How was this patch tested?\nExisting tests.\n\nAuthor: Yin Huai <yhuai@databricks.com>\n\nCloses #13766 from yhuai/caseSensitivity.\n\n(cherry picked from commit 6d0f921aedfdd3b7e8472b6776d0c7d8299190bd)\nSigned-off-by: Yin Huai <yhuai@databricks.com>","distinct":true,"url":"https://api.github.com/repos/metamx/spark/commits/19397caab62b550269961a123bd11a34afc3a09b"},{"sha":"0b0b5fe549086171d851d7c4458d48be9409380f","author":{"name":"Yin Huai","email":"7e8362bd012819bee68b9375d9cefa24afbef722@databricks.com"},"message":"[SPARK-16030][SQL] Allow specifying static partitions when inserting to data source tables\n\n## What changes were proposed in this pull request?\nThis PR adds the static partition support to INSERT statement when the target table is a data source table.\n\n## How was this patch tested?\nNew tests in InsertIntoHiveTableSuite and DataSourceAnalysisSuite.\n\n**Note: This PR is based on https://github.com/apache/spark/pull/13766. The last commit is the actual change.**\n\nAuthor: Yin Huai <yhuai@databricks.com>\n\nCloses #13769 from yhuai/SPARK-16030-1.\n\n(cherry picked from commit 905f774b71f4b814d5a2412c7c35bd023c3dfdf8)\nSigned-off-by: Cheng Lian <lian@databricks.com>","distinct":true,"url":"https://api.github.com/repos/metamx/spark/commits/0b0b5fe549086171d851d7c4458d48be9409380f"},{"sha":"363db9f8be53773238854ab16c3459ba46a6961b","author":{"name":"Shixiong Zhu","email":"eb2f6da57ec54996cebae8c2a82b9fbfd527e14c@databricks.com"},"message":"[SPARK-16050][TESTS] Remove the flaky test: ConsoleSinkSuite\n\n## What changes were proposed in this pull request?\n\nConsoleSinkSuite just collects content from stdout and compare them with the expected string. However, because Spark may not stop some background threads at once, there is a race condition that other threads are outputting logs to **stdout** while ConsoleSinkSuite is running. Then it will make ConsoleSinkSuite fail.\n\nTherefore, I just deleted `ConsoleSinkSuite`. If we want to test ConsoleSinkSuite in future, we should refactoring ConsoleSink to make it testable instead of depending on stdout. Therefore, this test is useless and I just delete it.\n\n## How was this patch tested?\n\nJust removed a flaky test.\n\nAuthor: Shixiong Zhu <shixiong@databricks.com>\n\nCloses #13776 from zsxwing/SPARK-16050.\n\n(cherry picked from commit 5cfabec8724714b897d6e23e670c39e58f554ea2)\nSigned-off-by: Michael Armbrust <michael@databricks.com>","distinct":true,"url":"https://api.github.com/repos/metamx/spark/commits/363db9f8be53773238854ab16c3459ba46a6961b"},{"sha":"bb80d1c24a633ceb4ad63b1fa8c02c66d79b2540","author":{"name":"Dongjoon Hyun","email":"1bf3a3c57610939bd1558dffb564906c959abecb@apache.org"},"message":"[SPARK-16059][R] Add `monotonically_increasing_id` function in SparkR\n\n## What changes were proposed in this pull request?\n\nThis PR adds `monotonically_increasing_id` column function in SparkR for API parity.\nAfter this PR, SparkR supports the followings.\n\n```r\n> df <- read.json(\"examples/src/main/resources/people.json\")\n> collect(select(df, monotonically_increasing_id(), df$name, df$age))\n  monotonically_increasing_id()    name age\n1                             0 Michael  NA\n2                             1    Andy  30\n3                             2  Justin  19\n```\n\n## How was this patch tested?\n\nPass the Jenkins tests (with added testcase).\n\nAuthor: Dongjoon Hyun <dongjoon@apache.org>\n\nCloses #13774 from dongjoon-hyun/SPARK-16059.\n\n(cherry picked from commit 9613424898fd2a586156bc4eb48e255749774f20)\nSigned-off-by: Shivaram Venkataraman <shivaram@cs.berkeley.edu>","distinct":true,"url":"https://api.github.com/repos/metamx/spark/commits/bb80d1c24a633ceb4ad63b1fa8c02c66d79b2540"}]}
{"actor":{"display_login":"drcrallen"}}