Skip to content

Commit 023a19f

Browse files
committed
feat: fix review comments
Signed-off-by: jyjiangkai <jyjiangkai@163.com>
1 parent 72be0cc commit 023a19f

48 files changed

Lines changed: 994 additions & 1402 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

client/internal/vanus/eventlog/name_service.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,17 @@ func (ns *NameService) LookupWritableSegment(ctx context.Context, logID uint64)
6767
return nil, err
6868
}
6969

70+
if len(resp.Segments) == 0 {
71+
return nil, errors.ErrResourceNotFound.WithMessage("segment not found")
72+
}
73+
7074
log.Debug(ctx, "GetAppendableSegment result", map[string]interface{}{
7175
"req": req,
7276
"res": resp,
7377
})
7478
segments := toSegments(resp.GetSegments())
7579
if len(segments) == 0 {
76-
return nil, errors.ErrNotWritable
80+
return nil, errors.ErrNotWritable.WithMessage("no writable segment")
7781
}
7882
return segments[0], nil
7983
}

client/internal/vanus/net/rpc/bare/client.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ func (c *client) Endpoint() string {
6868

6969
func (c *client) Get(ctx context.Context) (interface{}, error) {
7070
if c.closed.Load() {
71-
return nil, errors.ErrClosed
71+
return nil, errors.ErrClosed.WithMessage("client closed")
7272
}
7373
_ctx, span := c.tracer.Start(ctx, "Get")
7474
defer span.End()
@@ -95,7 +95,7 @@ func (c *client) refreshClient(ctx context.Context, force bool) (interface{}, er
9595
defer c.mu.Unlock()
9696

9797
if c.closed.Load() {
98-
return nil, errors.ErrClosed
98+
return nil, errors.ErrClosed.WithMessage("client closed")
9999
}
100100

101101
if !force && c.Ready() {

client/internal/vanus/store/block_store.go

Lines changed: 41 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import (
3232
"google.golang.org/grpc"
3333

3434
// first-party libraries
35+
errpb "github.com/linkall-labs/vanus/proto/pkg/errors"
3536
segpb "github.com/linkall-labs/vanus/proto/pkg/segment"
3637

3738
// this project
@@ -62,8 +63,6 @@ func newBlockStore(endpoint string) (*BlockStore, error) {
6263
// TODO: check error
6364
return nil, err
6465
}
65-
s.runAppendStreamRecv(context.Background(), s.appendStream)
66-
s.runReadStreamRecv(context.Background(), s.readStream)
6766
return s, nil
6867
}
6968

@@ -142,6 +141,8 @@ func (s *BlockStore) connectAppendStream(ctx context.Context) (segpb.SegmentServ
142141
})
143142
return nil, err
144143
}
144+
145+
s.runAppendStreamRecv(context.Background(), stream)
145146
return stream, nil
146147
}
147148

@@ -169,6 +170,8 @@ func (s *BlockStore) connectReadStream(ctx context.Context) (segpb.SegmentServer
169170
})
170171
return nil, err
171172
}
173+
174+
s.runReadStreamRecv(ctx, stream)
172175
return stream, nil
173176
}
174177

@@ -207,8 +210,8 @@ func (s *BlockStore) Append(ctx context.Context, block uint64, event *ce.Event)
207210
return res.GetOffsets()[0], nil
208211
}
209212

210-
func (s *BlockStore) SyncAppendStream(ctx context.Context, block uint64, event *ce.Event) (int64, error) {
211-
_ctx, span := s.tracer.Start(ctx, "SyncAppendStream")
213+
func (s *BlockStore) AppendManyStream(ctx context.Context, block uint64, events []*ce.Event) ([]int64, error) {
214+
_ctx, span := s.tracer.Start(ctx, "AppendManyStream")
212215
defer span.End()
213216

214217
var (
@@ -220,19 +223,23 @@ func (s *BlockStore) SyncAppendStream(ctx context.Context, block uint64, event *
220223
if s.appendStream == nil {
221224
s.appendStream, err = s.connectAppendStream(_ctx)
222225
if err != nil {
223-
return -1, err
226+
return nil, err
224227
}
225-
s.runAppendStreamRecv(_ctx, s.appendStream)
226228
}
227229

228230
// generate unique RequestId
229-
requestID := rand.Uint64()
231+
requestID := rand.New(rand.NewSource(time.Now().UnixNano())).Uint64()
230232

231233
wg.Add(1)
232234

233-
eventpb, err := codec.ToProto(event)
234-
if err != nil {
235-
return -1, err
235+
//TODO(jiangkai): delete the reference of CloudEvents/v2 in Vanus
236+
eventpbs := make([]*cepb.CloudEvent, len(events))
237+
for idx := range events {
238+
eventpb, err := codec.ToProto(events[idx])
239+
if err != nil {
240+
return nil, err
241+
}
242+
eventpbs = append(eventpbs, eventpb)
236243
}
237244

238245
s.appendCallbacks.Store(requestID, appendCallback(func(res *segpb.AppendToBlockStreamResponse) {
@@ -244,7 +251,7 @@ func (s *BlockStore) SyncAppendStream(ctx context.Context, block uint64, event *
244251
RequestId: requestID,
245252
BlockId: block,
246253
Events: &cepb.CloudEventBatch{
247-
Events: []*cepb.CloudEvent{eventpb},
254+
Events: eventpbs,
248255
},
249256
}
250257

@@ -259,27 +266,28 @@ func (s *BlockStore) SyncAppendStream(ctx context.Context, block uint64, event *
259266
if c != nil {
260267
c.(appendCallback)(&segpb.AppendToBlockStreamResponse{
261268
ResponseId: requestID,
262-
ResponseCode: segpb.ResponseCode_UNKNOWN,
269+
ResponseCode: errpb.ErrorCode_CLOSED,
270+
ResponseMsg: "append stream closed",
263271
Offsets: []int64{},
264272
})
265273
}
266274
}
267-
return -1, err
275+
return nil, err
268276
}
269277

270278
wg.Wait()
271279

272-
if resp.ResponseCode == segpb.ResponseCode_SegmentFull {
280+
if resp.ResponseCode == errpb.ErrorCode_FULL {
273281
log.Warning(ctx, "block append failed cause the segment is full", nil)
274-
return -1, errors.ErrSegmentFull
282+
return nil, errors.ErrFull.WithMessage("segment is full")
275283
}
276284

277-
if resp.ResponseCode != segpb.ResponseCode_SUCCESS {
285+
if resp.ResponseCode != errpb.ErrorCode_SUCCESS {
278286
log.Warning(ctx, "block append failed cause unknown error", nil)
279-
return -1, errors.ErrUnknown
287+
return nil, errors.ErrUnknown.WithMessage("append many stream failed")
280288
}
281289

282-
return resp.Offsets[0], nil
290+
return resp.Offsets, nil
283291
}
284292

285293
func (s *BlockStore) Read(
@@ -289,10 +297,10 @@ func (s *BlockStore) Read(
289297
defer span.End()
290298

291299
req := &segpb.ReadFromBlockRequest{
292-
BlockId: block,
293-
Offset: offset,
294-
Number: int64(size),
295-
PollingTimeout: pollingTimeout,
300+
BlockId: block,
301+
Offset: offset,
302+
Number: int64(size),
303+
PollingTimeoutInMillisecond: pollingTimeout,
296304
}
297305

298306
client, err := s.client.Get(ctx)
@@ -323,10 +331,10 @@ func (s *BlockStore) Read(
323331
return []*ce.Event{}, err
324332
}
325333

326-
func (s *BlockStore) SyncReadStream(
334+
func (s *BlockStore) ReadStream(
327335
ctx context.Context, block uint64, offset int64, size int16, pollingTimeout uint32,
328336
) ([]*ce.Event, error) {
329-
_ctx, span := s.tracer.Start(ctx, "SyncReadStream")
337+
_ctx, span := s.tracer.Start(ctx, "ReadStream")
330338
defer span.End()
331339

332340
var (
@@ -340,7 +348,6 @@ func (s *BlockStore) SyncReadStream(
340348
if err != nil {
341349
return []*ce.Event{}, err
342350
}
343-
s.runReadStreamRecv(_ctx, s.readStream)
344351
}
345352

346353
// generate unique RequestId
@@ -354,10 +361,10 @@ func (s *BlockStore) SyncReadStream(
354361
}))
355362

356363
req := &segpb.ReadFromBlockStreamRequest{
357-
BlockId: block,
358-
Offset: offset,
359-
Number: int64(size),
360-
PollingTimeout: pollingTimeout,
364+
BlockId: block,
365+
Offset: offset,
366+
Number: int64(size),
367+
PollingTimeoutInMillisecond: pollingTimeout,
361368
}
362369

363370
if err = s.readStream.Send(req); err != nil {
@@ -371,7 +378,8 @@ func (s *BlockStore) SyncReadStream(
371378
if c != nil {
372379
c.(readCallback)(&segpb.ReadFromBlockStreamResponse{
373380
ResponseId: requestID,
374-
ResponseCode: segpb.ResponseCode_UNKNOWN,
381+
ResponseCode: errpb.ErrorCode_CLOSED,
382+
ResponseMsg: "read stream closed",
375383
Events: &cepb.CloudEventBatch{
376384
Events: []*cepb.CloudEvent{},
377385
},
@@ -383,9 +391,9 @@ func (s *BlockStore) SyncReadStream(
383391

384392
wg.Wait()
385393

386-
if resp.ResponseCode != segpb.ResponseCode_SUCCESS {
387-
log.Warning(ctx, "block append failed cause unknown error", nil)
388-
return []*ce.Event{}, errors.ErrUnknown
394+
if resp.ResponseCode != errpb.ErrorCode_SUCCESS {
395+
log.Warning(ctx, "block read failed cause unknown error", nil)
396+
return []*ce.Event{}, errors.ErrUnknown.WithMessage("read stream failed")
389397
}
390398

391399
if batch := resp.GetEvents(); batch != nil {

client/pkg/api/client.go

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,6 @@ import (
2121
ce "github.com/cloudevents/sdk-go/v2"
2222
)
2323

24-
// TODO(jiangkai): currently, only business layer error is returned, because
25-
// the eventlogid cannot be obtained here, so the eventid cannot be generated.
26-
type Callback func(error)
27-
2824
type Eventbus interface {
2925
Writer(opts ...WriteOption) BusWriter
3026
Reader(opts ...ReadOption) BusReader
@@ -36,13 +32,12 @@ type Eventbus interface {
3632

3733
type BusWriter interface {
3834
AppendOne(ctx context.Context, event *ce.Event, opts ...WriteOption) (eid string, err error)
39-
AppendMany(ctx context.Context, events []*ce.Event, opts ...WriteOption) (eid string, err error)
40-
SyncAppendOneStream(ctx context.Context, event *ce.Event, opts ...WriteOption) (eid string, err error)
35+
AppendMany(ctx context.Context, events []*ce.Event, opts ...WriteOption) (eid []string, err error)
4136
}
4237

4338
type BusReader interface {
4439
Read(ctx context.Context, opts ...ReadOption) ([]*ce.Event, int64, uint64, error)
45-
SyncReadStream(ctx context.Context, opts ...ReadOption) ([]*ce.Event, int64, uint64, error)
40+
ReadStream(ctx context.Context, opts ...ReadOption) ([]*ce.Event, int64, uint64, error)
4641
}
4742

4843
type Eventlog interface {

client/pkg/api/mock_client.go

Lines changed: 8 additions & 28 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)