rogchap / wombat

Cross platform gRPC client
MIT License
1.39k stars 52 forks source link

It will get stuck with some server #48

Open yswtrue opened 3 years ago

yswtrue commented 3 years ago

like grpc server 3.114.33.194:50051 use reflection and then choose com.lion.device.DeviceController then wombat will hang, you can't do anything except exit.

rogchap commented 3 years ago

Thanks for reporting @yswtrue

Are you able to provide an example proto definition that causes this?

yswtrue commented 3 years ago

Thanks for reporting @yswtrue

Are you able to provide an example proto definition that causes this?

it seems because I have changed the area field of Device message from string to Area, and then wombat will get stuck. And when I uninstall and reinstall, the problem disappears.


message Image {
    string id = 1;
    string created = 2;
    string modified = 3;
    bool is_removed = 4;
    string picture = 5;
}

message DefenseZone {
    string id = 1;
    string no = 2;
    string name = 3;
    string address = 4;
}

message Area {
    string id = 1;
    string created = 2;
    string modified = 3;
    bool is_removed = 4;
    string name = 5;
}

message Contact {
    string id = 1;
    string name = 2;
    string contact = 3;
    string contact_type = 4;
    string created = 5;
}

message Device {
    string id = 1;  // id
    string created = 2; // created
    string modified = 3;    // modified
    string status = 4;  // status
    bool is_removed = 5;    // is removed
    string no = 6;  // 编号
    string name = 7;    // 商户名称
    string address = 8; // 商户地址
    string location = 9;    // 地图定位
    string phone = 10;  // 固定电话
    string remark = 11; // 备注
    int32 alarm_start = 12; // 接收警情开始时间
    int32 alarm_end = 13;   // 接收警情结束时间
    string sn = 14; // SN
    string ipsn = 15;   // IPSN
    string platform = 16;   // 报警平台
    string iot_card_number = 17;    // 物联卡号
    string iccid = 18;  // ICCID
    string iot_card_status = 19;    // 状态
    int32 iot_card_use_of_traffic = 20; // 使用流量
    int32 iot_card_left_traffic = 21;   // 剩余流量
    string iot_card_start_date = 22;    // 物联卡生效时间
    string iot_card_end_date = 23;  // 物联卡到期时间
    string checkout_alarm_delay = 24;   // 出门报警延迟
    string checkin_alarm_delay = 25;    // 进入报警延迟
    int32 replay_time = 26; // 警号/灯牌相应时间
    int32 alarm_volume = 27;    // 喇叭音量
    string light_output = 28;   // 灯牌输出
    string siren_output = 29;   // 警号输出
    string pgm1_name = 30;  // PGM1设备名称
    string pgm1_output_type = 31;   // PGM1设备输出模式
    string pgm2_name = 32;  // PGM2设备名称
    string pgm2_output_type = 33;   // PGM2设备输出模式
    string last_heartbeat = 34; // 最后心跳时间
    string ip = 35; // IP地址
    int32 port = 36;    // 端口
    int32 temperature = 37; // 温度
    int32 battery = 38; // 电量
    string password = 39;   // 主机密码
    Image picture = 40;
    Area area = 41;
    repeated Image showroom = 42;
    repeated string tags = 43;
    repeated Contact contacts = 44;
    repeated DefenseZone defense_zones = 45;
}
rogchap commented 3 years ago

So if I understand correctly the steps to reproduce are:

yswtrue commented 3 years ago

So if I understand correctly the steps to reproduce are:

  • Connection to server using Reflection API
  • Make a breaking change to the proto definition & restart server
  • Wombat freezes when selecting an API with a breaking change
  • only way to resolve is to restart Wombat

Yes, and have to reinstall Wombat or it will freeze when chose the same service.

rogchap commented 3 years ago

As a workaround; rather than re-installing Wombat, have you tried going back to the "Workspace" and clicking "Connect" as this should refetch the schema from the server?

yswtrue commented 3 years ago

I have tried to reconnect but it not works for me.