1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.client;
20
21 import org.apache.hadoop.hbase.classification.InterfaceAudience;
22 import org.apache.hadoop.hbase.ipc.RpcCallContext;
23 import org.apache.hadoop.hbase.ipc.RpcServer;
24 import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos;
25
26
27
28
29
30 @InterfaceAudience.Private
31 public final class VersionInfoUtil {
32
33 private VersionInfoUtil() {
34
35 }
36
37 public static boolean currentClientHasMinimumVersion(int major, int minor) {
38 RpcCallContext call = RpcServer.getCurrentCall();
39 HBaseProtos.VersionInfo versionInfo = call != null ? call.getClientVersionInfo() : null;
40 return hasMinimumVersion(versionInfo, major, minor);
41 }
42
43 public static boolean hasMinimumVersion(HBaseProtos.VersionInfo versionInfo,
44 int major,
45 int minor) {
46 if (versionInfo != null) {
47 try {
48 String[] components = versionInfo.getVersion().split("\\.");
49
50 int clientMajor = components.length > 0 ? Integer.parseInt(components[0]) : 0;
51 if (clientMajor != major) {
52 return clientMajor > major;
53 }
54
55 int clientMinor = components.length > 1 ? Integer.parseInt(components[1]) : 0;
56 return clientMinor >= minor;
57 } catch (NumberFormatException e) {
58 return false;
59 }
60 }
61 return false;
62 }
63 }