Unable to query after a successful connection for a period of time in GridDB
1
vote
0
answers
19
views
I’m experiencing an issue with GridDB where the program becomes blocked during a query and logs a
Sending heartbeat
It seems that the issue is related to the connection management or the GridDB cluster's responsiveness
Following are the logs
select * where (name='message-count') AND count > 0 AND timestamp TIMESTAMP('2022-12-29T11:02:01.567+0800') order by timestamp
Sending heartbeat (statement=CREATE_SESSION, address=/192.168.1.134:10001, partition=7, statementId=15, elapsedMillis=10000)
Sending heartbeat (statement=CREATE_SESSION, address=/192.168.1.134:10001, partition=7, statementId=15, elapsedMillis=20004)
This may be a concurrency problem. I try the following code to reproduce this problem
package com.griddb.client;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import com.toshiba.mwcloud.gs.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;
import static cn.hutool.core.date.DatePattern.UTC_MS_WITH_ZONE_OFFSET_PATTERN;
public class GriddbClient {
static class Iot {
@RowKey
Date timestamp;
double data;
double temperature;
@Override
public String toString() {
return "Iot{" +
"timestamp=" + timestamp +
", data=" + data +
", temperature=" + temperature +
'}';
}
}
public static void main(String[] args) throws Exception{
//bulkInsertData();
concurrentQuery();
}
/**
* Bulk Insert Data
* @throws Exception
*/
public static void bulkInsertData() throws Exception{
Properties props = new Properties();
props.setProperty("host", "192.168.1.134");
props.setProperty("port", "10001");
props.setProperty("clusterName", "myCluster");
props.setProperty("user", "admin");
props.setProperty("password", "admin");
props.setProperty("database","public");
props.setProperty("transactionTimeout","5000");
props.setProperty("failoverTimeout","5000");
GridStore store = GridStoreFactory.getInstance().getGridStore(props);
TimeSeries lctime = store.putTimeSeries("lctime", test5.Iot.class);
lctime.createIndex("data");
lctime.setAutoCommit(false);
DateTime now = DateTime.now();
for(int i=0;i culume=new HashSet();
culume.add("timestamp");
culume.add("data");
culume.add("temperature");
Properties props = new Properties();
props.setProperty("host", "192.168.1.134");
props.setProperty("port", "10001");
props.setProperty("clusterName", "myCluster");
props.setProperty("user", "admin");
props.setProperty("password", "admin");
props.setProperty("database","public");
props.setProperty("transactionTimeout","5000");
props.setProperty("failoverTimeout","5000");
final GridStore store = GridStoreFactory.getInstance().getGridStore(props);
ExecutorService executorService = Executors.newFixedThreadPool(20);
List>> tasks=new ArrayList>>();
for(int i=0;i> task1=new FutureTask>(new Callable>() {
public List call() throws Exception {
return createTask(start,end,store);
}
});
tasks.add(task1);
executorService.submit(tasks.get(tasks.size()-1));
}
for(FutureTask> item:tasks){
List iots = item.get();
System.out.println(iots.size());
}
store.close();
}
private static List createTask(Date start, Date end, GridStore store) throws Exception{
TimeSeries lctime = store.getTimeSeries("lctime", test5.Iot.class);
String tql="select * where timestamp > TIMESTAMP('" + formatDate(start) + "') and timestamp query = lctime.query(tql, test5.Iot.class).fetch();
List iots=new ArrayList();
while (query.hasNext()){
test5.Iot next = query.next();
System.out.println(next.toString());
iots.add(next);
}
lctime.close();
return iots;
}
private static Date getDate(String dataStr) throws Exception{
DateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
return dateFormat1.parse(dataStr);
}
private static String formatDate(Date date){
return DateUtil.format(date,UTC_MS_WITH_ZONE_OFFSET_PATTERN);
}
}
Asked by Alice
(163 rep)
Sep 2, 2024, 04:54 AM