Closed pir-dsl closed 7 years ago
This is a pretty important fix for CloudWatch monitoring. Would you please merge it?
Hey dolphy17, glad you feel this is useful. However, I am not the owner or developer of dynamodb-cross-region-library project. and don't have the option to merge it. I don't know why nobody watch these pull requests... For now, I guess you may just copy and past to use it...
Thanks for this fix, @pir-dsl.
FYI I am seeing this error in connectors.log when using this fork. It may result in data loss during replication:
2017-02-16 14:21:12,366 INFO com.amazonaws.protocol.json.JsonContent - Unable to parse HTTP response content
com.fasterxml.jackson.core.JsonParseException: Unexpected character ('<' (code 60)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
at [Source: [B@51ed0fae; line: 1, column: 2]
at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1702)
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:558)
at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:456)
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._handleUnexpectedValue(UTF8StreamJsonParser.java:2685)
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._nextTokenNotInObject(UTF8StreamJsonParser.java:878)
at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:772)
at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:3825)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3774)
at com.fasterxml.jackson.databind.ObjectMapper.readTree(ObjectMapper.java:2395)
at com.amazonaws.protocol.json.JsonContent.parseJsonContent(JsonContent.java:65)
at com.amazonaws.protocol.json.JsonContent.<init>(JsonContent.java:57)
at com.amazonaws.protocol.json.JsonContent.createJsonContent(JsonContent.java:52)
at com.amazonaws.http.JsonErrorResponseHandler.handle(JsonErrorResponseHandler.java:61)
at com.amazonaws.http.JsonErrorResponseHandler.handle(JsonErrorResponseHandler.java:33)
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1310)
at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:959)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:736)
at com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:487)
at com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:448)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:397)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:378)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBStreamsClient.doInvoke(AmazonDynamoDBStreamsClient.java:702)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBStreamsClient.invoke(AmazonDynamoDBStreamsClient.java:672)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBStreamsClient.getRecords(AmazonDynamoDBStreamsClient.java:486)
at com.amazonaws.services.dynamodbv2.streamsadapter.AmazonDynamoDBStreamsAdapterClient.getRecords(AmazonDynamoDBStreamsAdapterClient.java:481)
at com.amazonaws.services.kinesis.clientlibrary.proxies.KinesisProxy.get(KinesisProxy.java:150)
at com.amazonaws.services.kinesis.clientlibrary.proxies.MetricsCollectingKinesisProxyDecorator.get(MetricsCollectingKinesisProxyDecorator.java:73)
at com.amazonaws.services.kinesis.clientlibrary.lib.worker.KinesisDataFetcher.getRecords(KinesisDataFetcher.java:67)
at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ProcessTask.getRecordsResultAndRecordMillisBehindLatest(ProcessTask.java:284)
at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ProcessTask.getRecordsResult(ProcessTask.java:249)
at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ProcessTask.call(ProcessTask.java:120)
at com.amazonaws.services.kinesis.clientlibrary.lib.worker.MetricsCollectingTaskDecorator.call(MetricsCollectingTaskDecorator.java:49)
at com.amazonaws.services.kinesis.clientlibrary.lib.worker.MetricsCollectingTaskDecorator.call(MetricsCollectingTaskDecorator.java:24)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
This fix worked for me locally.
@snkinard that error looks to me a pure data issue, see this line
at com.amazonaws.protocol.json.JsonContent.parseJsonContent(JsonContent.java:65)
as mentioned in the thread, json just takes number, String, array, object, 'true', 'false' or 'null' so a character like '<' is not going to be parsed correctly.
I gotta say, this worked for me too. I can't quite find the metrics in cloudwatch, but that is most likely user error on my end...
The bug fixed in this PR has been fixed in the latest release, 1.2.1. If you still have issues with CloudWatch monitoring, please open an issue.