Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

require one record at least when ShardIteratorType is AT_TIMESTAMP #8

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

kikumoto
Copy link

@kikumoto kikumoto commented Jan 4, 2021

ShardIteratorType が AT_TIMESTAMP の場合、最初に得られた ShardIterator でも GetRecords で戻ってくる Records が要素数 0 の場合があります。
AWSのサポートに確認したら、そういう仕様という返答でした。レコードが取得できるまで、繰り返すようにと。
このため、end パラメータも指定していると、isTimeOver(time.Now()) の判定で1件もレコードを取得することなしに、kinesis-tailf が終了してしまいます。
これを回避するためのPRとなります。

ただし、PRの初期コミットの実装においては、

  • endの指定がなく start のみ
  • 該当ストリームがさほどアクティブでない
  • start が最後に登録されたレコード以降の日時

の場合に、新規にレコードが追加されるまでインターバルなしにGetRecordsを繰り返してしまいます。

@fujiwara
Copy link
Owner

fujiwara commented Jan 7, 2021

ありがとうございます。
この状態だと、start, end が指定されていてかつその間に本当に1件もレコードがない場合にも無限にリトライしてしまいそうです。少し対応を考えますね。

@kikumoto
Copy link
Author

kikumoto commented Jan 7, 2021

確かに。そうですね。
お願いします。。。

fujiwara added a commit that referenced this pull request Feb 15, 2022
Do retry when empty hits (max 100 times)
@fujiwara fujiwara mentioned this pull request Feb 15, 2022
@fujiwara
Copy link
Owner

@kikumoto 大変放置してしまってすみません…v0.3.2で別の方法で対応してみました。
https://github.com/fujiwara/kinesis-tailf/releases/tag/v0.3.2

@kikumoto
Copy link
Author

ありがとうございます。
動作、みてみますねー。(ちょっと時間ください...)

大変放置してしまってすみません…

とんでもない。対応版を実装いただけでも感謝です。

@kikumoto
Copy link
Author

動作みました。
start をかなりアバウトに指定しても、待てばデータを得られるようになったので、実装いただいた動作で十分です。
ありがとうございました。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants