Skip to content

Commit d6e1079

Browse files
author
David McGuire
committed
Stack overflow error in RateLimiter on rates over 1000/s
1 parent 55f553a commit d6e1079

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

streaming/src/test/scala/org/apache/spark/streaming/ReceiverSuite.scala

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ class ReceiverSuite extends TestSuiteBase with Timeouts with Serializable {
158158
test("block generator throttling") {
159159
val blockGeneratorListener = new FakeBlockGeneratorListener
160160
val blockIntervalMs = 100
161-
val maxRate = 100
161+
val maxRate = 1001
162162
val conf = new SparkConf().set("spark.streaming.blockInterval", s"${blockIntervalMs}ms").
163163
set("spark.streaming.receiver.maxRate", maxRate.toString)
164164
val blockGenerator = new BlockGenerator(blockGeneratorListener, 1, conf)
@@ -176,7 +176,7 @@ class ReceiverSuite extends TestSuiteBase with Timeouts with Serializable {
176176
blockGenerator.addData(count)
177177
generatedData += count
178178
count += 1
179-
Thread.sleep(1)
179+
Thread.sleep(0)
180180
}
181181
blockGenerator.stop()
182182

@@ -186,16 +186,17 @@ class ReceiverSuite extends TestSuiteBase with Timeouts with Serializable {
186186
assert(recordedData.toSet === generatedData.toSet, "Received data not same")
187187

188188
// recordedData size should be close to the expected rate
189-
val minExpectedMessages = expectedMessages - 3
190-
val maxExpectedMessages = expectedMessages + 1
189+
// use an error margin proportional to the value, so that rate changes don't cause a brittle test
190+
val minExpectedMessages = expectedMessages - 0.3 * expectedMessages
191+
val maxExpectedMessages = expectedMessages + 0.1 * expectedMessages
191192
val numMessages = recordedData.size
192193
assert(
193194
numMessages >= minExpectedMessages && numMessages <= maxExpectedMessages,
194195
s"#records received = $numMessages, not between $minExpectedMessages and $maxExpectedMessages"
195196
)
196197

197-
val minExpectedMessagesPerBlock = expectedMessagesPerBlock - 3
198-
val maxExpectedMessagesPerBlock = expectedMessagesPerBlock + 1
198+
val minExpectedMessagesPerBlock = expectedMessagesPerBlock - 0.3 * expectedMessagesPerBlock
199+
val maxExpectedMessagesPerBlock = expectedMessagesPerBlock + 0.1 * expectedMessagesPerBlock
199200
val receivedBlockSizes = recordedBlocks.map { _.size }.mkString(",")
200201
assert(
201202
// the first and last block may be incomplete, so we slice them out

0 commit comments

Comments
 (0)