@@ -95,6 +95,15 @@ Status LoadStreamWriter::init() {
9595 { return Status::InternalError (" fault injection" ); });
9696 RETURN_IF_ERROR (_rowset_builder->init ());
9797 _rowset_writer = _rowset_builder->rowset_writer ();
98+
99+ auto tablet_res = ExecEnv::get_tablet (_req.tablet_id );
100+ if (tablet_res.has_value ()) {
101+ auto tablet = std::dynamic_pointer_cast<Tablet>(tablet_res.value ());
102+ if (tablet && tablet->data_dir ()) {
103+ _data_dir = tablet->data_dir ();
104+ }
105+ }
106+
98107 _is_init = true ;
99108 return Status::OK ();
100109}
@@ -109,16 +118,12 @@ Status LoadStreamWriter::append_data(uint32_t segid, uint64_t offset, butil::IOB
109118 return Status::Corruption (" append_data failed, LoadStreamWriter is not inited" );
110119 }
111120
112- auto tablet_res = ExecEnv::get_tablet (_req.tablet_id );
113- if (tablet_res.has_value ()) {
114- auto tablet = std::dynamic_pointer_cast<Tablet>(tablet_res.value ());
115- if (tablet && tablet->data_dir ()) {
116- int64_t incoming_data_size = static_cast <int64_t >(buf.size ());
117- if (tablet->data_dir ()->reach_capacity_limit (incoming_data_size)) {
118- return Status::Error<ErrorCode::DISK_REACH_CAPACITY_LIMIT>(
119- " disk {} exceed capacity limit when writing stream data, tablet_id={}" ,
120- tablet->data_dir ()->path_hash (), _req.tablet_id );
121- }
121+ if (_data_dir) {
122+ int64_t incoming_data_size = static_cast <int64_t >(buf.size ());
123+ if (_data_dir->reach_capacity_limit (incoming_data_size)) {
124+ return Status::Error<ErrorCode::DISK_REACH_CAPACITY_LIMIT>(
125+ " disk {} exceed capacity limit when writing stream data, tablet_id={}" ,
126+ _data_dir->path_hash (), _req.tablet_id );
122127 }
123128 }
124129
0 commit comments