https://github.com/apache/flink

sort by:
Revision Author Date Message Commit Date
0700da2 Commit for release 1.4.2 27 February 2018, 07:03:32 UTC
b74c705 [FLINK-8543] Don't call super.close() in AvroKeyValueSinkWriter The call to keyValueWriter.close() in AvroKeyValueSinkWriter.close() will eventually call flush() on the wrapped stream which fails if we close it before(). Now we call flush ourselves before closing the KeyValyeWriter, which internally closes the wrapped stream eventually. 26 February 2018, 20:12:02 UTC
a0193f1 [FLINK-8772] [kafka] Fix missing log parameter This closes #5574. 26 February 2018, 15:17:04 UTC
0396fc8 [hotfix] [test] Also trap INT signal in Kafka end-to-end test This allows the test to perform the cleanup procedure (as well as printing any error logs) if an interruption occurred while waiting for the test data to be written to Kafka, therefore increasing visibility of reasons to why the test was stalling. This closes #5568. 26 February 2018, 15:16:57 UTC
59169d0 [hotfix] [test] Make test-streaming-kafka010.sh more flexible for local execution 26 February 2018, 15:16:52 UTC
cb6a8a6 [FLINK-8741] [kafka] Fix incorrect user code classloader in FlinkKafkaConsumer This commit fixes incorrectly using the parent of the user code class loader. Since Kafka 010 / 011 versions directly reuse 09 code, this fix fixes the issue for all versions. This commit also extends the Kafka010Example, so that is uses a custom watermark assigner. This allows our end-to-end tests to have caught this bug. 26 February 2018, 15:16:45 UTC
0d89a1c [hotfix] Update docs version to Flink 1.4.1 23 February 2018, 16:31:44 UTC
f06ec38 [FLINK-8735] Add new StatefulJobSavepointMigrationITCase This new test does not pretend to use legacy state but now instead uses the more modern operator state varieties. 22 February 2018, 14:38:14 UTC
82e6f8d [FLINK-8735] Rename StatefulJobSavepointMigrationITCase This is preparation for modifying a new ITCase to use modern state features. 21 February 2018, 18:14:05 UTC
a7df424 [FLINK-8574][travis] Add timestamp to logging messages This closes #5419. 20 February 2018, 15:48:46 UTC
527faf6 [hotfix][prometheus][tests] Add utility for generating port ranges 20 February 2018, 15:48:42 UTC
d88f43b [hotfix][prometheus] Document internal usage of CollectorRegistry.defaultRegistry It appeared as if the HTTPServer wasn't actually doing anything, but it internally accessed the singleton registry that we also access to register metrics. 20 February 2018, 15:48:37 UTC
45efe47 [FLINK-8621][prometheus][tests] Remove endpointIsUnavailableAfterReporterIsClosed() The test is inherently unstable as it will always fail if any other server is started on the port between the closing of the reporter and the polling of metrics. This closes #5473. 20 February 2018, 15:48:25 UTC
528317c [FLINK-8692][docs] Remove extra parenthesis in scala code samples 18 February 2018, 20:55:59 UTC
cc76c32 [FLINK-8303] [docs] Allow to overwrite ruby/gem binary This closes #5395. 16 February 2018, 08:49:37 UTC
d4435e1 [FLINK-8303] Add hawkins back to Gemfile 16 February 2018, 08:49:28 UTC
50b6484 [FLINK-8308] Remove explicit yajl-ruby dependency, update Jekyll to 3+ 16 February 2018, 08:49:14 UTC
054af99 [FLINK-8520][cassandra] Fix race condition This closes #5474. 16 February 2018, 08:03:35 UTC
1b70f50 [FLINK-8576][QS] Reduce verbosity when classes can't be found This closes #5420. 16 February 2018, 08:03:35 UTC
f2b5635 [hotfix] Remove more checkState() calls from SharedBuffer serialization 15 February 2018, 09:20:58 UTC
59f9ded [FLINK-8652] [QS] Reduce log level in getKvState to DEBUG. This closes #5489. 14 February 2018, 19:15:17 UTC
a044d9d [hotfix] Remove costly logging statements from CEP SharedBuffer 14 February 2018, 16:46:51 UTC
bafb91e [FLINK-8423] OperatorChain#pushToOperator catch block may fail with NPE This closes #5447. 13 February 2018, 08:53:45 UTC
beff62d [FLINK-8571] [DataStream] Introduce utility function that reinterprets a data stream as keyed stream (backport from 1.5 branch) This closes #5439. 09 February 2018, 16:36:20 UTC
33ebc85 [FLINK-8362] [elasticsearch] Further improvements for Elasticsearch connector shading - Do not shade Elasticsearch dependencies - Do not shade Flink Elasticseach Connector classes - Also shade log4j-api dependency in Elasticsearch 5 connector. This is required for the log4j-to-slf4j bridge adapter to work properly. - Add NOTICE files for license statements for all ES connectors This closes #5426. This closes #5243. 08 February 2018, 16:21:23 UTC
0c53e79 [FLINK-8362][elasticsearch] shade all dependencies 08 February 2018, 16:21:15 UTC
5f9e367 [FLINK-7760] Fix deserialization of NFA state in CEP library Before, the condition was being read via in.read() and not in.readFully() 07 February 2018, 19:02:34 UTC
82f3957 [FLINK-8275] [security, yarn] Remove test-specific code path in YarnTaskManagerRunner Previously, the YarnTaskManagerRunner contained a code path that exists for the sole purpose of injecting mock runners. Having code paths just to utilize tests in production code is in general a bad idea. This commit fixes this be making YarnTaskManagerRunner a factory-like class, which creates a Runner that contains all the runner’s properties, such as configuration. Unit tests can than test against the contained configuration in the created Runner to validate that everything is configured properly. This closes #5172. 06 February 2018, 17:30:32 UTC
2014665 [FLINK-8275] [security, yarn] Fix keytab local path in YarnTaskManagerRunner 06 February 2018, 17:30:32 UTC
fb1e24e [FLINK-8421] [test] Increase MAX_MEM_STATE_SIZE and Akka framesize in AbstractEventTimeWindowCheckpointingITCase After adding the TypeSerializerConfigSnapshots of timer serializers to the timers snapshots, the size of the timer snapshots have potentially doubled. This caused the AbstractEventTimeWindowCheckpointingITCase to be failing, because the configured max memory state size and Akka framesize were too small. This commit doubles those sizes. This closes #5362. 06 February 2018, 17:30:32 UTC
71d682e [FLINK-8421] [DataStream] Make timer serializers reconfigurable on restore Previously, the key and namespace serializers for the HeapInternalTimerService were not reconfigured on restore to be compatible with previously written serializers. This caused an immediate error to restore savepoints in Flink 1.4.0, since in Flink 1.4.0 we changed the base registrations in the Kryo serializer. That change requires serializer reconfiguration. This commit fixes this by writing also the serializer configuration snapshots of the key and namespace serializer into savepoints, and use them to reconfigure the new serializers on rrestore. This improvement also comes along with making the written data for timer service snapshots versioned. Backwards compatibility with previous non-versioned formats is not broken. 06 February 2018, 17:30:31 UTC
93d514e [FLINK-8421] [core] Introduce PostVersionedIOReadableWritable 06 February 2018, 17:11:26 UTC
319d510 [FLINK-8421] [core] Allow InstantiationUtil.deserializeObject() to use FailureTolerantObjectInputStream This makes it possible to use the FailureTolerantObjectInputStream in InstantiationUtil.deserializeObject. This behaviour is controlled via a isFailureTolerant flag argument. All previous calls to the method remains to have identical behaviour (the ClassloaderObjectInputStream). 06 February 2018, 16:31:32 UTC
1f81f6a [FLINK-8421] [DataStream, tests] Add WindowOperator migration test for Kryo-serialized window keys 06 February 2018, 16:31:32 UTC
e41300d [hotfix] [test] Remove stale savepoint files no longer used by migration tests This includes: - Removing MigrationVersion.v1_1, since compatilbity for 1.1 is no longer supported (and no migration tests still test that) - Remove all 1.1 test savepoint files (which no migration tests still use) - Remove all 1.2 test savepoint files that are no longer in use (e.g., CEPMigrationTest does not test 1.2 restores anymore) 06 February 2018, 16:31:32 UTC
f68fe3e [FLINK-8472] [tests] Extend AbstractOperatorRestoreTestBases for Flink 1.4 This closes #5364. 06 February 2018, 16:31:32 UTC
6f4116f [FLINK-8472] [fs, test] Extend BucketingSinkMigrationTest for Flink 1.4 06 February 2018, 16:31:32 UTC
8d91096 [FLINK-8472] [fs, test] Extend ContinuousFileProcessingMigrationTest for Flink 1.4 06 February 2018, 16:31:32 UTC
da47bd2 [FLINK-8472] [kafka, test] Extend FlinkKafkaConsumerBaseMigrationTest for Flink 1.4 06 February 2018, 16:31:32 UTC
8cef788 [FLINK-8472] [kinesis, test] Extend FlinkKinesisConsumerMigrationTest for Flink 1.4 06 February 2018, 16:31:32 UTC
83b9727 [FLINK-8472] [DataStream, test] Extend StatefulJobSavepointMigrationITCase for Flink 1.4 06 February 2018, 16:31:32 UTC
2ada856 [FLINK-8472] [DataStream, test] Refactor StatefulJobSavepointFrom*MigrationITCase to single ITCase This commit refactors the StatefulJobSavepointFrom12MigrationITCase and StatefulJobSavepointFrom13MigrationITCase to a single class, StatefulJobSavepointMigrationITCase. The new ITCase is parameterized to ensure that all previous versions and state backend variants are covered. 06 February 2018, 16:31:32 UTC
4fc14cc [FLINK-8472] [scala, test] Extend StatefulJobSavepointMigrationITCase for Flink 1.4 06 February 2018, 16:31:32 UTC
4af0b59 [FLINK-8472] [DataStream, test] Extend WindowOperatorMigrationTest for Flink 1.4 06 February 2018, 16:31:32 UTC
9276ee5 [hotfix] [kinesis] Use ArrayList for faster shard state updates Previously, the Kinesis Consumer uses LinkedLists as the underlying implementation for subscribedShardsState. This list is accessed on every record, updating a shard's state using a shard state index (i.e., the order of the shard state in the list). With LinkedLists, this access has linear time complexity, and since this operation happens per record, can have a big performance hit on executions with a huge number of Kinesis shards. This commit changes the list implementation to be an ArrayList for constant-time shard state access. The downside is that when new shards are discovered, there will be a costly array re-size. However, since resharding is not expected to happen so often, this is acceptable. 06 February 2018, 16:31:32 UTC
7884a4f [FLINK-8484] [kinesis] Use an equivalence wrapper around restored StreamShardMetadatas to bypass out-of-sync shard infos This closes #5337. 06 February 2018, 16:31:32 UTC
f887575 [hotfix] [kinesis, test] Use real test classes instead of Mockito in FlinkKinesisConsumerMigrationTest 06 February 2018, 16:31:32 UTC
426cf46 [FLINK-8484] [kinesis] Synchronize local shard metainfo's on restore Ensure that a metainfo change in the StreamShardMetadata other than `StreamShardMetadata.shardId` or `StreamShardMetadata.streamName` does not result in the shard not being able to be restored. This handles the corner case where a shard might have been closed (ending sequence number set to not-null) since the last savepoint or checkpoint when a job is restarted from a snapshot state. 06 February 2018, 16:31:32 UTC
ca1e525 [FLINK-8398] [kinesis, tests] Stabilize flaky KinesisDataFetcherTests Prior to this commit, several unit tests in KinesisDataFetcherTest relied on sleeps to wait until a certain operation happens, in order for the test to pass. This commit removes those sleeps and replaces the test behaviours with OneShotLatches. This closes #5268. 06 February 2018, 16:31:32 UTC
6922e4c [FLINK-8398] [kinesis, tests] Cleanup confusing implementations in KinesisDataFetcherTest and related classes The previous implementation of the TestableKinesisDataFetcher was confusing in various ways, causing it hard to be re-used for other tests. This commit contains the following various cleaups: - Remove confusing mocks of source context and checkpoint lock. We now allow users of the TestableKinesisDataFetcher to provide a source context, which should provide the checkpoint lock. - Remove override of emitRecordAndUpdateState(). Strictly speaking, that method should be final. It was previously overriden to allow verifying how many records were output by the fetcher. That verification would be better implemented within a mock source context. - Properly parameterize the output type for the TestableKinesisDataFetcher. - Remove use of PowerMockito in KinesisDataFetcherTest. - Use CheckedThreads to properly capture any exceptions in fetcher / consumer threads in unit tests. - Use assertEquals / assertNull instead of assertTrue where-ever appropriate. 06 February 2018, 16:31:32 UTC
0ad82b3 [hotfix][connectors] Fix log format strings Fixes three occurrences of using '%s' instead of '{}' in logging statements. This closes #5380. 06 February 2018, 16:31:32 UTC
432273a [FLINK-8419] [kafka] Register metrics for dynamically discovered Kafka partitions This closes #5335. 06 February 2018, 16:31:32 UTC
e5ac4b0 [FLINK-8419] [kafka] Move consumer metric group registration to FlinkKafkaConsumerBase This commit is a refactor to move the registration of the consumer metric group (user scope "KafkaConsumer") to FlinkKafkaConsumerBase. Previously, the registration was scattered around in Kafka version-specific subclasses. 06 February 2018, 16:31:32 UTC
a951852 [hotfix] [kafka] Make AbortedReassignmentException a static class 06 February 2018, 16:31:32 UTC
0816300 [FLINK-8409] [kafka] Fix offset committing race condition in KafkaConsumerThread This closes #5329. 06 February 2018, 16:31:32 UTC
c932266 [FLINK-8559][RocksDB] Release resources if snapshot operation fails This closes #5412. 06 February 2018, 08:45:28 UTC
33efaf7 [FLINK-8561] [cep] Fix SharedBuffer.removeEdges to use .equals(). 05 February 2018, 16:56:53 UTC
a35b37a [hotfix] [cep] SharedBuffer refactoring. 05 February 2018, 16:56:37 UTC
624131b [FLINK-8242] [table] RexProgramExtractor only translates literals of known types. 05 February 2018, 13:18:16 UTC
19fcd5e [FLINK-8242] [orc] Fix predicate translation if literal is not Serializable. This closes #5345. 05 February 2018, 13:18:16 UTC
e5c1261 [FLINK-8243] [orc] OrcTableSource reads input path recursively by default. This closes #5344. 05 February 2018, 13:18:10 UTC
dfa050c [FLINK-8489][ES] Prevent side-effects when modifying user-config 02 February 2018, 14:59:13 UTC
4219572 Revert "[FLINK-8411] [State Backends] HeapListState#add(null) will wipe out entire list state" This reverts commit df0526172334ec619ee9a5a70006f4ad2f3e2167. I'm reverting because while this is fixing a bug it is changing behaviour that has been in place for a long while which might break existing user programs. 31 January 2018, 15:04:52 UTC
110b86d [FLINK-8230] [orc] Fix NPEs when reading nested columns. - fixes NPEs for null-valued structs, lists, and maps - fixes NPEs for repeating structs, lists, and maps - adds test for deeply nested data with nulls - adds test for columns with repeating values This closes #5373. 31 January 2018, 13:46:04 UTC
0cc0572 [FLINK-8496][metrics] Create missing "Network" group This closes #5343. 31 January 2018, 13:27:57 UTC
14aabf8 [hotfix][docs] Fix Scala code example in Controlling Latency section This closes #5299. 29 January 2018, 11:08:43 UTC
09edf6a [FLINK-8485] [client] Unblock JobSubmissionClientActor#tryToSubmitJob The JobSubmissionClientActor blocked a ActorSystem's dispatcher thread when requesting the BlobServer port from the cluster. This fails when using the FlinkMiniCluster on a single core machine because we set the number of threads to 1. This commit unblocks the JobSubmissionClientActor#tryToSubmitJob method and sets the lower limit of dispatcher threads to 2 when using the FlinkMiniCluster. This closes #5360. 25 January 2018, 14:26:10 UTC
fb088bc [FLINK-7949] Add unit test for AsyncWaitOperator recovery with full queue 25 January 2018, 14:26:09 UTC
a2198b0 [FLINK-7949] Make AsyncWaitOperator recoverable also when queue is full Start emitter thread BEFORE filling up the queue of recovered elements. This guarantees that we won't deadlock inserting the recovered elements, because the emitter can already start processing elements. This closes #4924. 25 January 2018, 14:26:09 UTC
38278eb [FLINK-8352] [web-dashboard] Report error on jar submission failure This closes #5264. 25 January 2018, 11:08:19 UTC
eb63809 [FLINK-8406] [bucketing sink] Fix proper access of Hadoop File Systems 24 January 2018, 17:57:02 UTC
4d1ba45 [FLINK-8466] [runtime] Make sure ErrorInfo references no user-defined classes. That way, holding on to the ErrorInfo does not prevent class unloading. However, this implies that the ErrorInfo must not hold strong references to any Exception classes. For that reason, the commit pull the "ground truth" exception into a separate fields, so that the ExecutionGraph logic itself can always assume to have the proper ground-truth exception. 24 January 2018, 17:57:02 UTC
a8ea169 [hotfix] [build] Converge Kryo dependency Previously, the Kryo dependency was diverging between the flink-core dependency and the chill dependency. [INFO] +- org.apache.flink:flink-java:jar:1.4.0:compile [INFO] | +- org.apache.flink:flink-core:jar:1.4.0:compile [INFO] | | +- com.esotericsoftware.kryo:kryo:jar:2.24.0:compile .... [INFO] +- org.apache.flink:flink-streaming-java_2.11:jar:1.4.0:compile [INFO] | +- (org.apache.flink:flink-core:jar:1.4.0:compile - omitted for duplicate) [INFO] | +- org.apache.flink:flink-runtime_2.11:jar:1.4.0:compile [INFO] | | +- com.twitter:chill_2.11:jar:0.7.4:compile [INFO] | | | +- com.twitter:chill-java:jar:0.7.4:compile [INFO] | | | | \- (com.esotericsoftware.kryo:kryo:jar:2.21:compile - omitted for conflict with 2.24.0) [INFO] | | | \- (com.esotericsoftware.kryo:kryo:jar:2.21:compile - omitted for conflict with 2.24.0) 24 January 2018, 17:06:14 UTC
15cb057 [FLINK-8499] [core] Force Kryo to be parent-first loaded. 24 January 2018, 17:06:14 UTC
da8446e [hotfix] [build] Fix diverging snappy versions. This removes the snappy dependency from flink-core, which is no longer needed since we do not have an Avro dependency in flink-core any more. 24 January 2018, 17:06:13 UTC
c701a33 [hotfix] [build] Print cache info Print the size of the Maven cache copied for each TravisCI job. 24 January 2018, 09:52:18 UTC
77df20b [FLINK-8433] [doc] Remove ununsed CheckpointedRestoring interface 24 January 2018, 09:50:29 UTC
e4d7ea2 [FLINK-8079][tests] Stop end-to-end test execution after first failure This closes #5156. 24 January 2018, 09:42:22 UTC
20be204 [FLINK-8473][webUI] Improve error behavior of JarListHandler This closes #5331. 24 January 2018, 09:42:16 UTC
df05261 [FLINK-8411] [State Backends] HeapListState#add(null) will wipe out entire list state 23 January 2018, 13:42:16 UTC
aa5e491 [FLINK-8325] [table] Fix COUNT(*) and COUNT(1). This closes #5241. 21 January 2018, 09:05:44 UTC
bfe3ff0 [FLINK-8355] [table] Remove DataSetAggregateWithNullValuesRule. This closes #5320. 19 January 2018, 21:41:08 UTC
5375522 [FLINK-8461] [build] Adjust logger configurations for shaded Netty classnames 19 January 2018, 12:54:23 UTC
0677f08 [FLINK-8455] [core] Make 'org.apache.hadoop.' a 'parent-first' classloading pattern. This change avoid duplication of Hadoop classes between the Flink runtime and the user code. Hadoop (and transitively its dependencies) should be part of the application class loader. The user code classloader is allowed to duplicate transitive dependencies, but not Hadoop's classes directly. This also adds tests to validate parent-first classloading patterns. 19 January 2018, 08:32:08 UTC
0deaee8 [hotfix] [docs] Fix typos This closes #5289. 17 January 2018, 13:44:49 UTC
c91544d [hotfix] [kafka] Remove stale comment on publishing procedures of AbstractFetcher The previous comment mentioned "only now will the fetcher return at least the restored offsets when calling snapshotCurrentState()". This is a remnant of the previous fetcher initialization behaviour, where in the past the fetcher wasn't directly seeded with restored offsets on instantiation. Since this is no longer true, this commit fixes the stale comment to avoid confusion. 13 January 2018, 03:34:28 UTC
c4bfc7d [FLINK-8306] [kafka, tests] Fix mock verifications on final method Previously, offset commit behavioural tests relied on verifying on AbstractFetcher::commitInternalOffsetsToKafka(). That method is actually final, and could not be mocked. This commit fixes that by implementing a proper mock AbstractFetcher, which keeps track of the offset commits that go through. This closes #5284. 13 January 2018, 03:34:20 UTC
968683f [FLINK-8296] [kafka] Rework FlinkKafkaConsumerBaseTest to not rely on Java reflection Reflection was mainly used to inject mocks into private fields of the FlinkKafkaConsumerBase, without the need to fully execute all operator life cycle methods. This, however, caused the unit tests to be too implementation-specific. This commit reworks the FlinkKafkaConsumerBaseTest to remove test consumer instantiation methods that rely on reflection for dependency injection. All tests now instantiate dummy test consumers normally, and let all tests properly execute all operator life cycle methods regardless of the tested logic. This closes #5188. 13 January 2018, 03:34:10 UTC
b7f8a5a [hotfix] Fix typo in AbstractMetricGroup.java This closes #5280. 13 January 2018, 03:33:50 UTC
ae00cad [hotfix] [doc] Fixed doc typo in DataStream API This closes #5283. This closes #5191. 13 January 2018, 03:33:42 UTC
b607a8b [FLINK-6951] [kinesis] Shade httpcomponents dependency for Kinesis connector This closes #4150. 13 January 2018, 03:33:34 UTC
b32ac3a [FLINK-8226] [cep] Dangling reference generated after NFA clean up timed out SharedBufferEntry This closes #5141 12 January 2018, 08:06:01 UTC
71ede39 [FLINK-8371][network] always recycle Buffers when releasing SpillableSubpartition There were places where Buffer instances were not released upon SpillableSubpartition#release() with a view attached to a non-spilled subpartition: 1) SpillableSubpartition#buffer: SpillableSubpartition#release() delegates the recycling to the view, but SpillableSubpartitionView does not clean up the 'buffers' queue (the recycling was only done by the subpartition if there was no view). 2) SpillableSubpartitionView#nextBuffer: If this field is populated when the subpartition is released, it will neither be given out in subsequent SpillableSubpartitionView#getNextBuffer() calls (there was a short path returning 'null' here), nor was it recycled -> similarly to the PipelinesSubpartition implementation, make SpillableSubpartition#release() always clean up and recycle the buffers -> recycle SpillableSubpartitionView#nextBuffer in SpillableSubpartitionView#releaseAllResources() This closes #5276. 11 January 2018, 10:27:53 UTC
a316989 [FLINK-7499][io] also let AsynchronousBufferFileWriter#writeBlock() recycle the buffer in case of failures This fixes a double-recycle in SpillableSubpartitionView and also makes sure that even if adding the (asynchronous) write operation fails, the buffer is properly freed in code that did not perform this cleanup. It avoids code duplication of this cleanup and it is also more consistent to take over responsibility of the given buffer even if an exception is thrown. [FLINK-7499][io] complete the idiom of ResultSubpartition#add() taking over ownership of the buffer The buffer will now always be released once and at the right time and the caller must not worry about the buffer release if a called function threw an exception. This closes #5275. 11 January 2018, 10:27:23 UTC
2c667de [hotfix] only update buffer statistics in SpillableSubpartition#add() if successful 10 January 2018, 09:42:37 UTC
9398daf [hotfix] add some more buffer recycling checks in SpillableSubpartitionTest 10 January 2018, 09:42:37 UTC
6f50ed2 [FLINK-8320][docs] Clarify that only Java 8 is supported 08 January 2018, 19:26:17 UTC
951d1b9 [hotfix][docs][metrics] Fix Threads.Count metric reference This closes #5213. 08 January 2018, 19:26:12 UTC
2f6e001 [hotfix][docs] Fix DataStream iterations documentation * Fix a scala example which is using a wrong variable * Remove partitioning descriptions * partitioning parameters are already removed from IterativeStream#closeWith/DateStream#iterate * https://github.com/apache/flink/pull/988 * https://github.com/apache/flink/pull/4655 This closes #5249. 08 January 2018, 19:26:08 UTC
78e3405 [FLINK-8200][tests] Use TemporaryFolder in RocksDBAsyncSnapshotTest This closes #5122. 08 January 2018, 19:26:02 UTC
back to top