@@ -45,13 +45,13 @@ class BinlogKeyValue final : public KeyValueSyncInterface {
4545 Slice key;
4646 Slice value;
4747 template <class StorerT >
48- void store (StorerT && storer) const {
48+ void store (StorerT &storer) const {
4949 storer.store_string (key);
5050 storer.store_string (value);
5151 }
5252
5353 template <class ParserT >
54- void parse (ParserT && parser) {
54+ void parse (ParserT &parser) {
5555 key = parser.template fetch_string <Slice>();
5656 value = parser.template fetch_string <Slice>();
5757 }
@@ -84,7 +84,10 @@ class BinlogKeyValue final : public KeyValueSyncInterface {
8484 name,
8585 [&](const BinlogEvent &binlog_event) {
8686 Event event;
87- event.parse (TlParser (binlog_event.get_data ()));
87+ TlParser event_parser (binlog_event.get_data ());
88+ event.parse (event_parser);
89+ event_parser.fetch_end ();
90+ LOG_CHECK (event_parser.get_error () == nullptr ) << event_parser.get_status ();
8891 if (event.key .empty ()) {
8992 LOG (ERROR) << " Have event with empty key" ;
9093 return ;
@@ -109,7 +112,10 @@ class BinlogKeyValue final : public KeyValueSyncInterface {
109112
110113 void external_init_handle (const BinlogEvent &binlog_event) {
111114 Event event;
112- event.parse (TlParser (binlog_event.get_data ()));
115+ TlParser event_parser (binlog_event.get_data ());
116+ event.parse (event_parser);
117+ event_parser.fetch_end ();
118+ LOG_CHECK (event_parser.get_error () == nullptr ) << event_parser.get_status ();
113119 if (event.key .empty ()) {
114120 LOG (ERROR) << " Have external event with empty key" ;
115121 return ;
0 commit comments