paust-team / pirius

Stream Delivery Network
GNU General Public License v3.0
8 stars 3 forks source link

Add retention-period per record and implement RetentionScheduler #189

Closed elon0823 closed 2 years ago

elon0823 commented 2 years ago

Related to #186

Code to check if disk is full is not implemented on this PR. I'll create another PR for it.

elon0823 commented 2 years ago

pointer 를 안쓸 경우에 항상 copy by value 가 일어나지 않나요?

deep copy 가 일어나긴 하지만 go 에서 특별한 이유가 있는게 아니라면 pointer receiver 를 굳이 쓸필요가 없다고들 하더라고요. https://stackoverflow.com/questions/27775376/value-receiver-vs-pointer-receiver

근데 찾아 보면 팀마다 컨밴션을 정하기도 하는 것 같아요. 한개라도 pointer receiver 를 쓰면 consistency 를 위해서 나머지 method 에도 pointer receiver 를 쓰도록 컨벤션 정하거나 뭐 섞어서 하는곳도 있고 그런가봅니다. 저희도 그냥 다 쓰도록 할까요?

1dennispark commented 2 years ago

struct 가 뭘 담고 있느냐에 따라 다른가 보네요. 잘 판단해서 써야할거같습니다. db 같은 경우는 오히려 pointer 로 쓰는게 더 낫고 record 같은 경우는 value 로 쓰는게 나아보입니다.

elon0823 commented 2 years ago

struct 가 뭘 담고 있느냐에 따라 다른가 보네요. 잘 판단해서 써야할거같습니다. db 같은 경우는 오히려 pointer 로 쓰는게 더 낫고 record 같은 경우는 value 로 쓰는게 나아보입니다.

record struct 같은 경우엔 SetData 같은 method 는 pointer 를 사용해야합니다. 한개로 통일한다고 하면 전체를 다 pointer 로 쓰거나 value 로 쓰거나 해야할것같아요

1dennispark commented 2 years ago

아 저는 immutable 에 대해서만 말한겁니다. 당연히 mutable 은 pointer 를 써야죠 ㅎ 만약 stack 을 최대한 쓰려고 한다면 mutable 한 method 를 없애고 fluent style 로 만들어야하지 않을까싶습니다.

elon0823 commented 2 years ago

옛날에 만들어놓은 struct 들도 한번 쭉 보면서 손봐야할 것 같은데 우선 여기선 db 관련된 struct. 에만 pointer 를 붙였습니다 @1dennispark