@@ -62,6 +62,7 @@ type Session struct {
62
62
sessionId int64
63
63
trans thrift.TTransport
64
64
requestStatementId int64
65
+ protocolFactory thrift.TProtocolFactory
65
66
}
66
67
67
68
type endPoint struct {
@@ -83,7 +84,6 @@ func (s *Session) Open(enableRPCCompression bool, connectionTimeoutInMs int) err
83
84
s .config .ConnectRetryMax = DefaultConnectRetryMax
84
85
}
85
86
86
- var protocolFactory thrift.TProtocolFactory
87
87
var err error
88
88
89
89
// in thrift 0.14.1, this func returns two values; in thrift 0.15.0, it returns one.
@@ -99,13 +99,10 @@ func (s *Session) Open(enableRPCCompression bool, connectionTimeoutInMs int) err
99
99
return err
100
100
}
101
101
}
102
- if enableRPCCompression {
103
- protocolFactory = thrift .NewTCompactProtocolFactory ()
104
- } else {
105
- protocolFactory = thrift .NewTBinaryProtocolFactoryDefault ()
106
- }
107
- iprot := protocolFactory .GetProtocol (s .trans )
108
- oprot := protocolFactory .GetProtocol (s .trans )
102
+ s .protocolFactory = getProtocolFactory (enableRPCCompression )
103
+ iprot := s .protocolFactory .GetProtocol (s .trans )
104
+ oprot := s .protocolFactory .GetProtocol (s .trans )
105
+
109
106
s .client = rpc .NewIClientRPCServiceClient (thrift .NewTStandardClient (iprot , oprot ))
110
107
req := rpc.TSOpenSessionReq {ClientProtocol : rpc .TSProtocolVersion_IOTDB_SERVICE_PROTOCOL_V3 , ZoneId : s .config .TimeZone , Username : s .config .UserName ,
111
108
Password : & s .config .Password }
@@ -147,16 +144,11 @@ func (s *Session) OpenCluster(enableRPCCompression bool) error {
147
144
s .config .ConnectRetryMax = DefaultConnectRetryMax
148
145
}
149
146
150
- var protocolFactory thrift.TProtocolFactory
151
147
var err error
152
148
153
- if enableRPCCompression {
154
- protocolFactory = thrift .NewTCompactProtocolFactory ()
155
- } else {
156
- protocolFactory = thrift .NewTBinaryProtocolFactoryDefault ()
157
- }
158
- iprot := protocolFactory .GetProtocol (s .trans )
159
- oprot := protocolFactory .GetProtocol (s .trans )
149
+ s .protocolFactory = getProtocolFactory (enableRPCCompression )
150
+ iprot := s .protocolFactory .GetProtocol (s .trans )
151
+ oprot := s .protocolFactory .GetProtocol (s .trans )
160
152
s .client = rpc .NewIClientRPCServiceClient (thrift .NewTStandardClient (iprot , oprot ))
161
153
req := rpc.TSOpenSessionReq {ClientProtocol : rpc .TSProtocolVersion_IOTDB_SERVICE_PROTOCOL_V3 , ZoneId : s .config .TimeZone , Username : s .config .UserName ,
162
154
Password : & s .config .Password }
@@ -170,14 +162,22 @@ func (s *Session) OpenCluster(enableRPCCompression bool) error {
170
162
return err
171
163
}
172
164
173
- func (s * Session ) Close () (r * common.TSStatus , err error ) {
165
+ func getProtocolFactory (enableRPCCompression bool ) thrift.TProtocolFactory {
166
+ if enableRPCCompression {
167
+ return thrift .NewTCompactProtocolFactoryConf (& thrift.TConfiguration {})
168
+ } else {
169
+ return thrift .NewTBinaryProtocolFactoryConf (& thrift.TConfiguration {})
170
+ }
171
+ }
172
+
173
+ func (s * Session ) Close () error {
174
174
req := rpc .NewTSCloseSessionReq ()
175
175
req .SessionId = s .sessionId
176
- _ , err = s .client .CloseSession (context .Background (), req )
176
+ _ , err : = s .client .CloseSession (context .Background (), req )
177
177
if err != nil {
178
- return nil , err
178
+ return err
179
179
}
180
- return nil , s .trans .Close ()
180
+ return s .trans .Close ()
181
181
}
182
182
183
183
/*
@@ -1085,7 +1085,7 @@ func NewSession(config *Config) Session {
1085
1085
return Session {config : config }
1086
1086
}
1087
1087
1088
- func NewClusterSession (clusterConfig * ClusterConfig ) Session {
1088
+ func NewClusterSession (clusterConfig * ClusterConfig ) ( Session , error ) {
1089
1089
session := Session {}
1090
1090
node := endPoint {}
1091
1091
for i := 0 ; i < len (clusterConfig .NodeUrls ); i ++ {
@@ -1113,9 +1113,9 @@ func NewClusterSession(clusterConfig *ClusterConfig) Session {
1113
1113
}
1114
1114
}
1115
1115
if ! session .trans .IsOpen () {
1116
- log . Fatal ( "No Server Can Connect " )
1116
+ return session , fmt . Errorf ( "no server can connect " )
1117
1117
}
1118
- return session
1118
+ return session , nil
1119
1119
}
1120
1120
1121
1121
func (s * Session ) initClusterConn (node endPoint ) error {
@@ -1148,10 +1148,8 @@ func (s *Session) initClusterConn(node endPoint) error {
1148
1148
s .config .ConnectRetryMax = DefaultConnectRetryMax
1149
1149
}
1150
1150
1151
- var protocolFactory thrift.TProtocolFactory
1152
- protocolFactory = thrift .NewTBinaryProtocolFactoryDefault ()
1153
- iprot := protocolFactory .GetProtocol (s .trans )
1154
- oprot := protocolFactory .GetProtocol (s .trans )
1151
+ iprot := s .protocolFactory .GetProtocol (s .trans )
1152
+ oprot := s .protocolFactory .GetProtocol (s .trans )
1155
1153
s .client = rpc .NewIClientRPCServiceClient (thrift .NewTStandardClient (iprot , oprot ))
1156
1154
req := rpc.TSOpenSessionReq {ClientProtocol : rpc .TSProtocolVersion_IOTDB_SERVICE_PROTOCOL_V3 , ZoneId : s .config .TimeZone , Username : s .config .UserName ,
1157
1155
Password : & s .config .Password }
0 commit comments