Skip to content

Commit 366ce9e

Browse files
authored
Merge pull request #6 from osheroff/better_errors
rework resultset error handling
2 parents 1a00ac2 + d1395ed commit 366ce9e

File tree

1 file changed

+16
-24
lines changed

1 file changed

+16
-24
lines changed

src/main/java/com/github/shyiko/mysql/binlog/BinaryLogClient.java

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -647,14 +647,19 @@ public Object call() throws Exception {
647647
};
648648
}
649649

650-
private GreetingPacket receiveGreeting() throws IOException {
651-
byte[] initialHandshakePacket = channel.read();
652-
if (initialHandshakePacket[0] == (byte) 0xFF /* error */) {
653-
byte[] bytes = Arrays.copyOfRange(initialHandshakePacket, 1, initialHandshakePacket.length);
650+
private void checkError(byte[] packet) throws IOException {
651+
if (packet[0] == (byte) 0xFF /* error */) {
652+
byte[] bytes = Arrays.copyOfRange(packet, 1, packet.length);
654653
ErrorPacket errorPacket = new ErrorPacket(bytes);
655654
throw new ServerException(errorPacket.getErrorMessage(), errorPacket.getErrorCode(),
656-
errorPacket.getSqlState());
655+
errorPacket.getSqlState());
657656
}
657+
}
658+
659+
private GreetingPacket receiveGreeting() throws IOException {
660+
byte[] initialHandshakePacket = channel.read();
661+
checkError(initialHandshakePacket);
662+
658663
return new GreetingPacket(initialHandshakePacket);
659664
}
660665

@@ -690,12 +695,7 @@ private boolean tryUpgradeToSSL(GreetingPacket greetingPacket) throws IOExceptio
690695
private void enableHeartbeat() throws IOException {
691696
channel.write(new QueryCommand("set @master_heartbeat_period=" + heartbeatInterval * 1000000));
692697
byte[] statementResult = channel.read();
693-
if (statementResult[0] == (byte) 0xFF /* error */) {
694-
byte[] bytes = Arrays.copyOfRange(statementResult, 1, statementResult.length);
695-
ErrorPacket errorPacket = new ErrorPacket(bytes);
696-
throw new ServerException(errorPacket.getErrorMessage(), errorPacket.getErrorCode(),
697-
errorPacket.getSqlState());
698-
}
698+
checkError(statementResult);
699699
}
700700

701701
private void setMasterServerId() throws IOException {
@@ -904,12 +904,7 @@ private ChecksumType fetchBinlogChecksum() throws IOException {
904904
private void confirmSupportOfChecksum(ChecksumType checksumType) throws IOException {
905905
channel.write(new QueryCommand("set @master_binlog_checksum= @@global.binlog_checksum"));
906906
byte[] statementResult = channel.read();
907-
if (statementResult[0] == (byte) 0xFF /* error */) {
908-
byte[] bytes = Arrays.copyOfRange(statementResult, 1, statementResult.length);
909-
ErrorPacket errorPacket = new ErrorPacket(bytes);
910-
throw new ServerException(errorPacket.getErrorMessage(), errorPacket.getErrorCode(),
911-
errorPacket.getSqlState());
912-
}
907+
checkError(statementResult);
913908
eventDeserializer.setChecksumType(checksumType);
914909
}
915910

@@ -1051,16 +1046,13 @@ private void commitGtid() {
10511046
}
10521047

10531048
private ResultSetRowPacket[] readResultSet() throws IOException {
1054-
List<ResultSetRowPacket> resultSet = new LinkedList<ResultSetRowPacket>();
1049+
List<ResultSetRowPacket> resultSet = new LinkedList<>();
10551050
byte[] statementResult = channel.read();
1056-
if (statementResult[0] == (byte) 0xFF /* error */) {
1057-
byte[] bytes = Arrays.copyOfRange(statementResult, 1, statementResult.length);
1058-
ErrorPacket errorPacket = new ErrorPacket(bytes);
1059-
throw new ServerException(errorPacket.getErrorMessage(), errorPacket.getErrorCode(),
1060-
errorPacket.getSqlState());
1061-
}
1051+
checkError(statementResult);
1052+
10621053
while ((channel.read())[0] != (byte) 0xFE /* eof */) { /* skip */ }
10631054
for (byte[] bytes; (bytes = channel.read())[0] != (byte) 0xFE /* eof */; ) {
1055+
checkError(bytes);
10641056
resultSet.add(new ResultSetRowPacket(bytes));
10651057
}
10661058
return resultSet.toArray(new ResultSetRowPacket[resultSet.size()]);

0 commit comments

Comments
 (0)