GithubHelp home page GithubHelp logo

eedalong / apache-iotdb-client-csharp Goto Github PK

View Code? Open in Web Editor NEW
40.0 40.0 19.0 1.09 MB

C# client for Apache IoTDB

Home Page: http://iotdb.apache.org/

License: Apache License 2.0

C# 100.00%
iotdb iotdb-client nuget

apache-iotdb-client-csharp's Introduction

apache-iotdb-client-csharp's People

Contributors

aiemu avatar ccliushou avatar eedalong avatar husaimawx avatar lausannel avatar maikebing avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

apache-iotdb-client-csharp's Issues

login issue

does this package support C# windows programe? it stucks in "session.open(false);" and I can't go on further. do you know why ?

返回值问题

var status = await sessionPool.InsertRecordAsync
这个插入单条记录的方法,插入成功以后返回值为-1,查看数据库确实是已经插入成功。
另外InsertRecordsAsync方法批量插入相同的记录,返回值就是返回0

链接断链无法自动重连

如果我在客户端运行时候,重启iotdb,这将导致客户端卡死,请问有什么好办法解决这个问题。

IIS中res.HasNext()卡死

环境:
.NET4.6.1
IIS10.0
Apache.IoTDB --version 1.0.0.2
IoTDB Server version 0.13.0

问题:
MVC项目中,执行最后一条数据后,再调用这个方法res.HasNext()会出现卡死的情况

image

测试:
跟踪源码后发现:SessionDataSet类FetchResults方法卡死导致的
image

单元测试建议

  1. 单起一个单元测试解决方案,独立目录,方便使用IDE的测试功能
  2. 使用单元测试框架,例:MSTest、NUnit 或 xUnit等等,而不是直接main函数里写Console.WriteLine
  3. 需要一个cs文件,搭配一个test测试文件,一个方法(函数)对应一个测试用例,方便统计测试覆盖率

参考介绍

返回值问题

安装最新的IoTDB1.0后,单机模式和集群模式插入记录后返回值均为-1,服务器无报错,记录能插入成功。
另外运行你们 lz-1.0 分支的测试代码,也是返回-1
这是之前提的问题:
#84 (comment)

insert_records_of_one_device 数据行上限问题

insert_records_of_one_device / insert_records_of_one_device_sorted

测试数据 400列 86400行,无法写入,等待数十分钟无返回结果
csv数据,去掉时间列,文件大约220MB

改进建议:如果一次性不能支持这个量级,希望能在接口内部分批次发送,比如3600行发送一次,而不是让使用者分批次调用接口

测试结果:每3600行(1小时)数据,调用一次insert_records_of_one_device_sorted可以正常执行。

Use Logging Facade

suggest use a logging facade (e.g. Common.Logging or other lib.....) to avoid direct dependencies
so users can select any log library(NLog, Log4Net ... ) which they like.

打开Session时异常Thrift.Transport.TTransportException

Exception thrown: 'Thrift.Transport.TTransportException' in Thrift.dll
nodename nor servname provided, or not known

调用Session.open函数时,如果host指定为非localhost,则引发上述异常。
var session_local = new Session("127.0.0.1",6667); // iotdb数据库服务与测试同机,正常
var session_remote= new Session("192.168.0.29",6667); // iotdb数据库服务与测试不同机,异常

[bug]:关于`算数运算符`异常的问题

算数运算符 从0.13版本开始支持。但是我发现同样的语句如SELECT A * 2 as A FROM root.texUquUa.A75NLL20m.A752bXW7,在iotdb的cli客户端下正常执行,但是是用该项目客户端执行异常报错。

查询结果(Table)和序列化(ByteBuffer)另一个实现方式

感谢这个项目,也十分感谢项目成员

似乎为了追求与其它语言Client接口保持一致,因此导致Client封装不符合C#使用习惯

以下是基于rpc.thrift,参考本项目中相关数据序列化的方式,改造了部分实现

Session使用ByteBuffer示例

        public async Task<TSStatus> InsertRecord(string device, List<string> measurements, List<dynamic> values, DateTime timestamp)
        {
            var status = await client.insertRecordAsync(new TSInsertRecordReq(sessionId, device, measurements, ByteBuffer.GetBytes(values, false), GetUtcTime(timestamp)));
            return status;
        }
        public async Task<TSStatus> InsertTable(string device, Table data)
        {
            var timestamps = data.Timestamps;
            var measurements = data.Measurements;
            var byte_values = new List<byte>();
            var byte_times = ByteBuffer.GetBytes(timestamps.Select(GetUtcTime).ToList(), true);
            var lst_types = ds.DataTypes.Select(x => x.Value.ToUpper()).Select(ByteBuffer.ToTSDataType).ToList();
            foreach (var field in measurements)
            {
                byte_values.AddRange(ByteBuffer.GetBytes(data.GetValue(field), true));
            }
            var status = await client.insertTabletAsync(new TSInsertTabletReq(sessionId, device, measurements, byte_values.ToArray(), byte_times, lst_types, timestamps.Count));
            return status;
        }

Table.cs

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TSDB.Core
{
    public class Table
    {
        private List<string> fields;
        private List<DateTime> times;
        private Dictionary<string, List<dynamic>> data;

        public Dictionary<string, List<dynamic>> Values => data;

        public Dictionary<string, string> DataTypes { get; }

        public List<string> Measurements => fields;

        public List<DateTime> Timestamps => times;

        public Table(List<DateTime> times, Dictionary<string, List<dynamic>> data)
        {
            this.times = times;
            this.data = data;
            this.fields = this.data.Keys.ToList();

            this.DataTypes = this.fields.ToDictionary(x => x, x => ((object)data[x].FirstOrDefault(y => y != null))?.GetType().Name ?? "None");
        }

        public Table(Dictionary<string, List<(DateTime Time, dynamic Value)>> data) : this(data.FirstOrDefault().Value.Select(x => x.Time).ToList(), data.ToDictionary(x => x.Key, x => x.Value.Select(y => y.Value).ToList()))
        { }

        /// <summary>
        /// 获取数据
        /// </summary>
        /// <param name="row">Timestamp index</param> 
        /// <param name="column">Measurement index</param>
        public dynamic GetData(int row, int column) => data[fields[column]][row];

        public dynamic GetData(DateTime time, string field) => data[field].ElementAtOrDefault(times.IndexOf(time));

        private string GetKey(string field)
        {
            return data.ContainsKey(field) ? field : fields.FirstOrDefault(x => string.Equals(x, field, StringComparison.OrdinalIgnoreCase));
        }

        public List<T> GetValue<T>(string field)
        {
            var key = GetKey(field);
            if (data.ContainsKey(key))
            {
                if (DataTypes[key] == "None") return new List<T>();

                var type = typeof(T).Name;
                if (type == DataTypes[key]) return data[key].OfType<T>().ToList();

                List<T> items = null;
                if (DataTypes[key] == "String" && type != "String")
                {
                    switch (type)
                    {
                        case "Boolean":
                            items = data[key].OfType<string>().Select(x => bool.TryParse(x, out var b) && b).ToList() as List<T>;
                            break;
                        case "Int32":
                            items = data[key].OfType<string>().Select(x => int.TryParse(x, out var val) ? val : 0).ToList() as List<T>;
                            break;
                        case "Int64":
                            items = data[key].OfType<string>().Select(x => long.TryParse(x, out var val) ? val : 0L).ToList() as List<T>;
                            break;
                        case "Single":
                            items = data[key].OfType<string>().Select(x => float.TryParse(x, out var val) ? val : float.NaN).ToList() as List<T>;
                            break;
                        case "Double":
                            items = data[key].OfType<string>().Select(x => double.TryParse(x, out var val) ? val : double.NaN).ToList() as List<T>;
                            break;
                    }
                }
                else
                {
                    switch (type)
                    {
                        case "Boolean":
                            items = data[key].Select(x => $"{x}").Select(x => double.TryParse(x, out var val) && val != 0).ToList() as List<T>;
                            break;
                        case "Int32":
                            items = data[key].Select(x => $"{x}").Select(x => double.TryParse(x, out var val) ? (int)val : 0).ToList() as List<T>;
                            break;
                        case "Int64":
                            items = data[key].Select(x => $"{x}").Select(x => double.TryParse(x, out var val) ? (long)val : 0L).ToList() as List<T>;
                            break;
                        case "Single":
                            items = data[key].Select(x => $"{x}").Select(x => double.TryParse(x, out var val) ? (float)val : float.NaN).ToList() as List<T>;
                            break;
                        case "Double":
                            items = data[key].Select(x => $"{x}").Select(x => double.TryParse(x, out var val) ? val : double.NaN).ToList() as List<T>;
                            break;
                    }
                }
                return items;
            }
            return new List<T>(); ;
        }

        public List<dynamic> GetValue(string field)
        {
            var key = GetKey(field);
            return data.ContainsKey(key) ? data[key] : null;
        }

        public List<(DateTime Time, dynamic Value)> GetTimeValue(string field)
        {
            var values = GetValue(field);
            if (values != null)
            {
                return times.Select((t, j) => (t, values[j])).OfType<(DateTime Time, dynamic Value)>().Where(x => x.Value != null).ToList();
            }
            return null;
        }

        public Dictionary<string, List<(DateTime Time, dynamic Value)>> GetAllTimeValue(params string[] except)
        {
            if (except == null)
            {
                return data.ToDictionary(kv => kv.Key, kv => times.Select((t, j) => (t, data[kv.Key][j])).OfType<(DateTime Time, dynamic Value)>().Where(x => x.Value != null).ToList());
            }
            else
            {
                return fields.Where(x => except.All(e => !string.Equals(x, e, StringComparison.OrdinalIgnoreCase))).ToDictionary(kv => kv, kv => times.Select((t, j) => (t, data[kv][j])).OfType<(DateTime Time, dynamic Value)>().Where(x => x.Value != null).ToList());
            }
        }

        public Dictionary<string, List<dynamic>> GetAllValue(params string[] except)
        {
            if (except == null)
            {
                return fields.Select((f, i) => new { f, v = times.Select((t, j) => data[f][j]).ToList() }).ToDictionary(kv => kv.f, kv => kv.v);
            }
            else
            {
                return fields.Where(f => except.All(e => !string.Equals(f, e, StringComparison.OrdinalIgnoreCase))).Select((f, i) => new { f, v = times.Select((t, j) => data[f][j]).ToList() }).ToDictionary(kv => kv.f, kv => kv.v);
            }
        }
    }
}

ByteBuffer.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TSDB.Core
{
    internal class ByteBuffer
    {
        private const int FLAG = 0x80;

        //与TSDataType对应,只是把FLOAT改为了SINGLE, 同时将枚举值对应到byte
        private readonly static Dictionary<string, byte> DataType = new() { ["BOOLEAN"] = 0, ["INT32"] = 1, ["INT64"] = 2, ["SINGLE"] = 3, ["DOUBLE"] = 4, ["STRING"] = 5, ["NONE"] = 6 };

        /// <summary>
        /// C#的类型名转换为TSDataType
        /// </summary>
        public static int ToTSDataType(string typeName)
        {
            return DataType.ContainsKey(typeName) ? DataType[typeName] : -1;
        }

        /// <summary>
        /// C#的类型名转换为TSDataType
        /// </summary>
        public static int GetTSDataType(object value)
        {
            return ToTSDataType(value?.GetType().Name.ToUpper() ?? "");
        }

        public static long[] GetUtcTime(byte[] timestamps)
        {
            var _time_buffer = timestamps;
            var _time_buffer_pos = 0;
            var _time_cout = _time_buffer.Length / 8;
            var times = Enumerable.Range(0, _time_cout).Select(i => BitConverter.ToInt64(!BitConverter.IsLittleEndian ? _time_buffer[_time_buffer_pos..(_time_buffer_pos += 8)] : _time_buffer[_time_buffer_pos..(_time_buffer_pos += 8)].Reverse().ToArray())).ToArray();
            return times;
        }

        private static byte[] GetBytes(dynamic value, string typeName)
        {
            byte[] val_bytes = null;
            switch (typeName)
            {
                case "DOUBLE":
                    val_bytes = !BitConverter.IsLittleEndian ? BitConverter.GetBytes((double)value) : BitConverter.GetBytes((double)value).Reverse().ToArray();
                    break;
                case "SINGLE"://FLOAT
                    val_bytes = !BitConverter.IsLittleEndian ? BitConverter.GetBytes((float)value) : BitConverter.GetBytes((float)value).Reverse().ToArray();
                    break;
                case "INT32":
                    val_bytes = !BitConverter.IsLittleEndian ? BitConverter.GetBytes((int)value) : BitConverter.GetBytes((int)value).Reverse().ToArray();
                    break;
                case "INT64":
                    val_bytes = !BitConverter.IsLittleEndian ? BitConverter.GetBytes((long)value) : BitConverter.GetBytes((long)value).Reverse().ToArray();
                    break;
                case "BOOLEAN":
                    val_bytes = !BitConverter.IsLittleEndian ? BitConverter.GetBytes((bool)value) : BitConverter.GetBytes((bool)value).Reverse().ToArray();
                    break;
                case "STRING"://TEXT
                    var len_bytes = !BitConverter.IsLittleEndian ? BitConverter.GetBytes(((string)value).Length) : BitConverter.GetBytes(((string)value).Length).Reverse().ToArray();
                    val_bytes = new byte[Encoding.UTF8.GetByteCount((string)value) + len_bytes.Length];
                    len_bytes.CopyTo(val_bytes, 0);//字符类型时需要长度
                    Encoding.UTF8.GetBytes((string)value).CopyTo(val_bytes, len_bytes.Length);
                    break;
                case "NONE":
                    break;
                default:
                    throw new NotSupportedException($"Bad data type:{typeName}");
            }
            return val_bytes;
        }
        public static byte[] GetBytes<T>(List<T> values, bool sameDataType = true)
        {
            // sameDataType => true 时 tablet 列数据序列化,无需数据类型1字节
            // sameDataType => false 时 insertRecord 的各测点同一时间戳的数据序列化,此时需要明确数据类型1字节
            var typeName = sameDataType ? values.FirstOrDefault(x => x != null).GetType().Name.ToUpper() : string.Empty;

            var capacity = 0;
            if (typeName != "STRING")
            {
                if (typeName == "INT64" || typeName == "DOUBLE") capacity = 8 * values.Count;
                if (typeName == "INT32" || typeName == "SINGLE") capacity = 4 * values.Count;
                if (typeName == "BOOLEAN") capacity = values.Count;
            }
            else if (typeName == "STRING")
            {
                capacity = values.OfType<string>().Sum(x => Encoding.UTF8.GetByteCount(x) + 4);
            }

            var buffer = new List<byte>(capacity);//使用List<byte>和MemoryStream性能基本一致
            if (!sameDataType)
            {
                for (var i = 0; i < values.Count; i++)
                {
                    dynamic value = values[i];
                    typeName = value?.GetType().Name.ToUpper() ?? "NONE";
                    buffer.Add(DataType[typeName]);// 类型 => 1 字节 
                    buffer.AddRange(GetBytes(value, typeName));//数据=>字节数组
                }
            }
            else
            {
                for (var i = 0; i < values.Count; i++)
                {
                    buffer.AddRange(GetBytes(values[i], typeName));//数据=>字节数组
                }
            }
            return buffer.ToArray();
        }

        public static List<dynamic> ToValues(byte[] values, byte[] bitmaps, TSDataType type, int total)
        {
            var ln = values;
            var lb = bitmaps;
            var items = new List<dynamic>(total);
            var pos = 0;
            var row = 0;

            switch (type)
            {
                case TSDataType.BOOLEAN:
                    while (pos < ln.Length)
                    {
                        if (((FLAG >> (row % 8)) & lb[row / 8]) != 0) items.Add(BitConverter.ToBoolean(!BitConverter.IsLittleEndian ? ln[pos..(pos += 1)] : ln[pos..(pos += 1)].Reverse().ToArray()));
                        row++;
                    }
                    break;
                case TSDataType.INT32:
                    while (pos < ln.Length)
                    {
                        if (((FLAG >> (row % 8)) & lb[row / 8]) != 0) items.Add(BitConverter.ToInt32(!BitConverter.IsLittleEndian ? ln[pos..(pos += 4)] : ln[pos..(pos += 4)].Reverse().ToArray()));
                        row++;
                    }
                    break;
                case TSDataType.INT64:
                    while (pos < ln.Length)
                    {
                        if (((FLAG >> (row % 8)) & lb[row / 8]) != 0) items.Add(BitConverter.ToInt64(!BitConverter.IsLittleEndian ? ln[pos..(pos += 8)] : ln[pos..(pos += 8)].Reverse().ToArray()));
                        row++;
                    }
                    break;
                case TSDataType.FLOAT:
                    while (pos < ln.Length)
                    {
                        if (((FLAG >> (row % 8)) & lb[row / 8]) != 0) items.Add(BitConverter.ToSingle(!BitConverter.IsLittleEndian ? ln[pos..(pos += 4)] : ln[pos..(pos += 4)].Reverse().ToArray()));
                        row++;
                    }
                    break;
                case TSDataType.DOUBLE:
                    while (pos < ln.Length)
                    {
                        if (((FLAG >> (row % 8)) & lb[row / 8]) != 0) items.Add(BitConverter.ToDouble(!BitConverter.IsLittleEndian ? ln[pos..(pos += 8)] : ln[pos..(pos += 8)].Reverse().ToArray()));
                        row++;
                    }
                    break;
                case TSDataType.TEXT:
                    while (pos < ln.Length)
                    {
                        if (((FLAG >> (row % 8)) & lb[row / 8]) != 0)
                        {
                            var len = BitConverter.ToInt32(!BitConverter.IsLittleEndian ? ln[pos..(pos += 4)] : ln[pos..(pos += 4)].Reverse().ToArray());
                            items.Add(Encoding.UTF8.GetString(ln[pos..(pos += len)]));
                        }
                        row++;
                    }
                    break;
            }
            return items;
        }

        public static int EstimateSize(List<dynamic> values, List<TSDataType> types)
        {
            /* C# 比较忌讳频繁频繁操作数组扩容,要么一次性初始化 */
            /* 相对精准的估算字节长度 */
            /* 泛型 values 的使用 string, 对 C# 而言并不友好(会反复装箱拆箱), 使用 dynamic 性能应该有所提升, 而且不再依赖 TSDataType */
            var size = 0;
            if (values.Count == types.Count)
            {
                size = Enumerable.Range(0, values.Count).Select(i =>
                {
                    var len = 1; // tablet 不需要添加数据类型字节
                    switch (types[i])
                    {
                        case TSDataType.BOOLEAN:
                            len += 1;
                            break;
                        case TSDataType.INT32:
                        case TSDataType.FLOAT:
                            len += 4;
                            break;
                        case TSDataType.INT64:
                        case TSDataType.DOUBLE:
                            len += 8;
                            break;
                        case TSDataType.TEXT: 
                            len += 4;
                            len += Encoding.UTF8.GetByteCount((string)values[i]);
                            break;
                    }
                    return len;
                }).Sum(x => x);
            }
            return size;
        }

        private readonly byte[] values;
        private readonly byte[] bitmaps;
        private readonly TSDataType type;
        private readonly int total;
        private int pos;
        private int row;

        public ByteBuffer(byte[] values, byte[] bitmaps, TSDataType type, int total)
        {
            this.values = values;
            this.bitmaps = bitmaps;
            this.type = type;
            this.total = total;
        }

        public void Reset()
        {
            pos = 0;
            row = 0;
        }

        public bool Next() => row < total;

        public dynamic Read()
        {
            var ln = values;
            var lb = bitmaps;
            dynamic value = default;

            switch (type)
            {
                case TSDataType.BOOLEAN:
                    if (((FLAG >> (row % 8)) & lb[row / 8]) != 0) value = BitConverter.ToBoolean(!BitConverter.IsLittleEndian ? ln[pos..(pos += 1)] : ln[pos..(pos += 1)].Reverse().ToArray());
                    break;
                case TSDataType.INT32:
                    if (((FLAG >> (row % 8)) & lb[row / 8]) != 0) value = BitConverter.ToInt32(!BitConverter.IsLittleEndian ? ln[pos..(pos += 4)] : ln[pos..(pos += 4)].Reverse().ToArray());
                    break;
                case TSDataType.INT64:
                    if (((FLAG >> (row % 8)) & lb[row / 8]) != 0) value = BitConverter.ToInt64(!BitConverter.IsLittleEndian ? ln[pos..(pos += 8)] : ln[pos..(pos += 8)].Reverse().ToArray());
                    break;
                case TSDataType.FLOAT:
                    pos += row * 4;
                    if (((FLAG >> (row % 8)) & lb[row / 8]) != 0) value = BitConverter.ToSingle(!BitConverter.IsLittleEndian ? ln[pos..(pos += 4)] : ln[pos..(pos += 4)].Reverse().ToArray());
                    break;
                case TSDataType.DOUBLE:
                    if (((FLAG >> (row % 8)) & lb[row / 8]) != 0) value = BitConverter.ToDouble(!BitConverter.IsLittleEndian ? ln[pos..(pos += 8)] : ln[pos..(pos += 8)].Reverse().ToArray());
                    break;
                case TSDataType.TEXT:
                    if (((FLAG >> (row % 8)) & lb[row / 8]) != 0)
                    {
                        var len = BitConverter.ToInt32(!BitConverter.IsLittleEndian ? ln[pos..(pos += 4)] : ln[pos..(pos += 4)].Reverse().ToArray());
                        value = Encoding.UTF8.GetString(ln[pos..(pos += len)]);
                    }
                    break;
            }

            row++;

            return value;
        }
    }
}

Refactor the definition of project

Hello. You have a good start point for such library. But you missed some "enterprise"-specific things. Let me provide some tips for your lib.

  1. Rework the structure of your project. It's good practice to keep test and src files separately: https://softwareengineering.stackexchange.com/questions/369504/directory-structure-for-a-net-solution
  2. Introduce templates for contributors. Some example: https://github.com/Azure/azure-sdk-for-net/issues/new/choose
  3. Define flow for code review and chose one of git branch strategy: https://medium.com/@patrickporto/4-branching-workflows-for-git-30d0aaee7bf
  4. Don't forget about SOLID principles during development
  5. Add code analysis rules for project

If you need some help with development - feel free to PM me :)

插入中文记录数据库报错

我插入如下带中文的内容:
var measures = new List { "ts1", "ts2", "ts3", "ts4" };
var values = new List { "我是中文S1111", "我是中文S2222", true, (int)123 };
var timestamp = 1;
var rowRecord = new RowRecord(timestamp, values, measures);
await session_pool.InsertRecordAsync("root.test_group.test_device", rowRecord);

数据库报错:
2022-11-09 16:50:24,614 [pool-44-IoTDB-Cluster-RPC-Client-15] WARN o.a.i.d.u.ErrorHandlingUtils:61 - Status code: EXECUTE_STATEMENT_ERROR(400), operation: insertRecord failed
java.lang.ArrayIndexOutOfBoundsException: -26
at org.apache.iotdb.db.qp.physical.crud.InsertRowPlan.fillValues(InsertRowPlan.java:463)
at org.apache.iotdb.db.qp.physical.crud.InsertRowPlan.(InsertRowPlan.java:112)
at org.apache.iotdb.db.service.thrift.impl.TSServiceImpl.insertRecord(TSServiceImpl.java:1525)
at org.apache.iotdb.service.rpc.thrift.TSIService$Processor$insertRecord.getResult(TSIService.java:3551)
at org.apache.iotdb.service.rpc.thrift.TSIService$Processor$insertRecord.getResult(TSIService.java:3531)
at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:38)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:38)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

数据库版本:0.13.3

关于Field和RowRecord的封装建议

Field建议1:
private object value 或 private dynamic value;
// 代替 long_value, int_value,str_value...
// 因为long ,int, float, bool 都是值类型,即便没有set 也会有默认值,建议用一个变量存储

Field建议2:
public double get_double() => type == TSDataType.TEXT ? double.Parse(value) : (double)value;
// 内部增加类型兼容转换,
// 即便是TSDataType是INT32, 也能让外部调用通过double读取
// 最好方式是让 get() 方法能够类型兼容转换T
// TSDataType.TEXT 的存在本身就是缺陷,从而导致了 select last 都成了TEXT,
// 而每个Field允许有独立的TSDataType,却不能把select last 转为对应的数据类型

RowRecord建议3:
缺少对field_lst的访问能力
public Field this[int index]=>this.field_lst[index];
// 增加索引访问,如果能支持name索引就更好了
// RowRecord.FieldNames,在初始化是传入SessionDataSet.column_name_lst是同一个内存引用,不会造成多少额外开销

RowRecord建议4:
public DateTime Timestamp => new DateTime(1970, 1, 1, 8, 0, 0).AddMilliseconds(timestamp);
// 增加日期类型的timestamp访问,timezone最好能够使用Session.zoneId

正常运行一段时间,出错误。IOTDB:0.12.2, 每次写入数据点:80。请问什么原因

2021-11-12 13:24:08,578 [pool-14-IoTDB-RPC-Client-15] ERROR o.a.t.s.TThreadPoolServer$WorkerProcess:258 - Thrift Error occurred during processing of message.
org.apache.thrift.transport.TTransportException: Frame size (1195725856) larger than protect max size (536870912)!
at org.apache.iotdb.rpc.TElasticFramedTransport.readFrame(TElasticFramedTransport.java:123)
at org.apache.iotdb.rpc.TElasticFramedTransport.read(TElasticFramedTransport.java:107)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:463)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:361)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:244)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
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:748)
2021-11-12 13:24:08,708 [pool-14-IoTDB-RPC-Client-15] ERROR o.a.t.s.TThreadPoolServer$WorkerProcess:258 - Thrift Error occurred during processing of message.
org.apache.thrift.transport.TTransportException: Frame size (1330664521) larger than protect max size (536870912)!
at org.apache.iotdb.rpc.TElasticFramedTransport.readFrame(TElasticFramedTransport.java:123)
at org.apache.iotdb.rpc.TElasticFramedTransport.read(TElasticFramedTransport.java:107)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:463)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:361)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:244)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
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:748)
2021-11-12 13:24:08,836 [pool-14-IoTDB-RPC-Client-15] ERROR o.a.t.s.TThreadPoolServer$WorkerProcess:258 - Thrift Error occurred during processing of message.
org.apache.thrift.transport.TTransportException: Frame size (1330664521) larger than protect max size (536870912)!
at org.apache.iotdb.rpc.TElasticFramedTransport.readFrame(TElasticFramedTransport.java:123)
at org.apache.iotdb.rpc.TElasticFramedTransport.read(TElasticFramedTransport.java:107)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:463)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:361)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:244)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
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:748)
2021-11-12 13:24:08,963 [pool-14-IoTDB-RPC-Client-15] ERROR o.a.t.s.TThreadPoolServer$WorkerProcess:258 - Thrift Error occurred during processing of message.
org.apache.thrift.transport.TTransportException: Read a negative frame size (-2147483608)!
at org.apache.iotdb.rpc.TElasticFramedTransport.readFrame(TElasticFramedTransport.java:117)
at org.apache.iotdb.rpc.TElasticFramedTransport.read(TElasticFramedTransport.java:107)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:463)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:361)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:244)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
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:748)
2021-11-12 13:24:19,136 [pool-14-IoTDB-RPC-Client-15] ERROR o.a.t.s.TThreadPoolServer$WorkerProcess:258 - Thrift Error occurred during processing of message.
org.apache.thrift.transport.TTransportException: Frame size (1212501072) larger than protect max size (536870912)!
at org.apache.iotdb.rpc.TElasticFramedTransport.readFrame(TElasticFramedTransport.java:123)
at org.apache.iotdb.rpc.TElasticFramedTransport.read(TElasticFramedTransport.java:107)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:463)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:361)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:244)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
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:748)
2021-11-12 13:24:34,291 [pool-14-IoTDB-RPC-Client-15] ERROR o.a.t.s.TThreadPoolServer$WorkerProcess:258 - Thrift Error occurred during processing of message.
org.apache.thrift.protocol.TProtocolException: Bad version in readMessageBegin
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:248)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
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:748)
2021-11-12 13:24:34,423 [pool-14-IoTDB-RPC-Client-15] ERROR o.a.t.s.TThreadPoolServer$WorkerProcess:258 - Thrift Error occurred during processing of message.
org.apache.thrift.transport.TTransportException: Frame size (1811942144) larger than protect max size (536870912)!
at org.apache.iotdb.rpc.TElasticFramedTransport.readFrame(TElasticFramedTransport.java:123)
at org.apache.iotdb.rpc.TElasticFramedTransport.read(TElasticFramedTransport.java:107)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:463)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:361)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:244)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
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:748)
2021-11-12 13:24:34,551 [pool-14-IoTDB-RPC-Client-15] ERROR o.a.t.s.TThreadPoolServer$WorkerProcess:258 - Thrift Error occurred during processing of message.
org.apache.thrift.transport.TTransportException: Frame size (1195725856) larger than protect max size (536870912)!
at org.apache.iotdb.rpc.TElasticFramedTransport.readFrame(TElasticFramedTransport.java:123)
at org.apache.iotdb.rpc.TElasticFramedTransport.read(TElasticFramedTransport.java:107)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:463)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:361)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:244)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
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:748)
2021-11-12 13:24:39,687 [pool-14-IoTDB-RPC-Client-15] ERROR o.a.t.s.TThreadPoolServer$WorkerProcess:258 - Thrift Error occurred during processing of message.
org.apache.thrift.transport.TTransportException: Frame size (813957120) larger than protect max size (536870912)!
at org.apache.iotdb.rpc.TElasticFramedTransport.readFrame(TElasticFramedTransport.java:123)
at org.apache.iotdb.rpc.TElasticFramedTransport.read(TElasticFramedTransport.java:107)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:463)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:361)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:244)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
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:748)
2021-11-12 13:24:39,816 [pool-14-IoTDB-RPC-Client-15] ERROR o.a.t.s.TThreadPoolServer$WorkerProcess:258 - Thrift Error occurred during processing of message.
org.apache.thrift.transport.TTransportException: Frame size (806093313) larger than protect max size (536870912)!
at org.apache.iotdb.rpc.TElasticFramedTransport.readFrame(TElasticFramedTransport.java:123)
at org.apache.iotdb.rpc.TElasticFramedTransport.read(TElasticFramedTransport.java:107)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:463)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:361)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:244)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
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:748)
2021-11-12 13:24:39,942 [pool-14-IoTDB-RPC-Client-15] ERROR o.a.t.s.TThreadPoolServer$WorkerProcess:258 - Thrift Error occurred during processing of message.
org.apache.thrift.transport.TTransportException: Frame size (1330664521) larger than protect max size (536870912)!
at org.apache.iotdb.rpc.TElasticFramedTransport.readFrame(TElasticFramedTransport.java:123)
at org.apache.iotdb.rpc.TElasticFramedTransport.read(TElasticFramedTransport.java:107)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:463)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:361)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:244)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
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:748)
2021-11-12 13:24:40,069 [pool-14-IoTDB-RPC-Client-15] ERROR o.a.t.s.TThreadPoolServer$WorkerProcess:258 - Thrift Error occurred during processing of message.
org.apache.thrift.transport.TTransportException: Frame size (1414417744) larger than protect max size (536870912)!
at org.apache.iotdb.rpc.TElasticFramedTransport.readFrame(TElasticFramedTransport.java:123)
at org.apache.iotdb.rpc.TElasticFramedTransport.read(TElasticFramedTransport.java:107)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:463)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:361)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:244)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
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:748)
2021-11-12 13:24:45,206 [pool-14-IoTDB-RPC-Client-15] ERROR o.a.t.s.TThreadPoolServer$WorkerProcess:258 - Thrift Error occurred during processing of message.
org.apache.thrift.transport.TTransportException: Frame size (1148019796) larger than protect max size (536870912)!
at org.apache.iotdb.rpc.TElasticFramedTransport.readFrame(TElasticFramedTransport.java:123)
at org.apache.iotdb.rpc.TElasticFramedTransport.read(TElasticFramedTransport.java:107)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:463)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:361)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:244)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
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:748)
2021-11-12 13:24:45,333 [pool-14-IoTDB-RPC-Client-15] ERROR o.a.t.s.TThreadPoolServer$WorkerProcess:258 - Thrift Error occurred during processing of message.
org.apache.thrift.transport.TTransportException: Frame size (973078528) larger than protect max size (536870912)!
at org.apache.iotdb.rpc.TElasticFramedTransport.readFrame(TElasticFramedTransport.java:123)
at org.apache.iotdb.rpc.TElasticFramedTransport.read(TElasticFramedTransport.java:107)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:463)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:361)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:244)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
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:748)
2021-11-12 13:24:45,460 [pool-14-IoTDB-RPC-Client-15] ERROR o.a.t.s.TThreadPoolServer$WorkerProcess:258 - Thrift Error occurred during processing of message.
org.apache.thrift.transport.TTransportException: Frame size (1246907721) larger than protect max size (536870912)!
at org.apache.iotdb.rpc.TElasticFramedTransport.readFrame(TElasticFramedTransport.java:123)
at org.apache.iotdb.rpc.TElasticFramedTransport.read(TElasticFramedTransport.java:107)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:463)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:361)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:244)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
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:748)
2021-11-12 13:25:00,628 [pool-14-IoTDB-RPC-Client-15] ERROR o.a.t.s.TThreadPoolServer$WorkerProcess:258 - Thrift Error occurred during processing of message.
org.apache.thrift.transport.TTransportException: Frame size (1195986768) larger than protect max size (536870912)!
at org.apache.iotdb.rpc.TElasticFramedTransport.readFrame(TElasticFramedTransport.java:123)
at org.apache.iotdb.rpc.TElasticFramedTransport.read(TElasticFramedTransport.java:107)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:463)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:361)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:244)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
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:748)
2021-11-12 13:26:23,914 [pool-14-IoTDB-RPC-Client-15] ERROR o.a.t.s.TThreadPoolServer$WorkerProcess:258 - Thrift Error occurred during processing of message.
org.apache.thrift.transport.TTransportException: Frame size (1195725856) larger than protect max size (536870912)!
at org.apache.iotdb.rpc.TElasticFramedTransport.readFrame(TElasticFramedTransport.java:123)
at org.apache.iotdb.rpc.TElasticFramedTransport.read(TElasticFramedTransport.java:107)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:463)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:361)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:244)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
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:748)
2021-11-12 13:26:30,942 [pool-14-IoTDB-RPC-Client-15] ERROR o.a.t.s.TThreadPoolServer$WorkerProcess:258 - Thrift Error occurred during processing of message.
org.apache.thrift.transport.TTransportException: Read a negative frame size (-2147483608)!
at org.apache.iotdb.rpc.TElasticFramedTransport.readFrame(TElasticFramedTransport.java:117)
at org.apache.iotdb.rpc.TElasticFramedTransport.read(TElasticFramedTransport.java:107)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:463)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:361)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:244)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
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:748)
2021-11-12 14:06:00,721 [pool-14-IoTDB-RPC-Client-15] ERROR o.a.t.s.TThreadPoolServer$WorkerProcess:258 - Thrift Error occurred during processing of message.
org.apache.thrift.transport.TTransportException: Frame size (1195725856) larger than protect max size (536870912)!
at org.apache.iotdb.rpc.TElasticFramedTransport.readFrame(TElasticFramedTransport.java:123)
at org.apache.iotdb.rpc.TElasticFramedTransport.read(TElasticFramedTransport.java:107)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:463)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:361)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:244)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
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:748)
2021-11-12 18:32:24,412 [pool-16-IoTDB-RPC-Client-5] ERROR o.a.t.s.TThreadPoolServer$WorkerProcess:258 - Thrift Error occurred during processing of message.
org.apache.thrift.transport.TTransportException: java.net.SocketException: Connection reset
at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:178)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
at org.apache.iotdb.rpc.TElasticFramedTransport.readFrame(TElasticFramedTransport.java:112)
at org.apache.iotdb.rpc.TElasticFramedTransport.read(TElasticFramedTransport.java:107)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:463)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:361)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:244)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
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:748)
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:210)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:176)
... 12 common frames omitted
2021-11-12 18:32:24,412 [pool-16-IoTDB-RPC-Client-4] ERROR o.a.t.s.TThreadPoolServer$WorkerProcess:258 - Thrift Error occurred during processing of message.
org.apache.thrift.transport.TTransportException: java.net.SocketException: Connection reset
at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:178)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
at org.apache.iotdb.rpc.TElasticFramedTransport.readFrame(TElasticFramedTransport.java:112)
at org.apache.iotdb.rpc.TElasticFramedTransport.read(TElasticFramedTransport.java:107)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:109)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:463)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:361)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:244)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:27)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:248)
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:748)
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:210)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:176)
... 12 common frames omitted

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.