diff --git a/pulsar/internal/utils.go b/pulsar/internal/utils.go index 0763cedcb4..e4a4994a3e 100644 --- a/pulsar/internal/utils.go +++ b/pulsar/internal/utils.go @@ -28,6 +28,10 @@ import ( // TimestampMillis return a time unix nano. func TimestampMillis(t time.Time) uint64 { + // calling UnixNano on the zero Time is undefined + if t.IsZero() { + return 0 + } return uint64(t.UnixNano()) / uint64(time.Millisecond) } diff --git a/pulsar/internal/utils_test.go b/pulsar/internal/utils_test.go index 65babd04e9..90d6f2d5b3 100644 --- a/pulsar/internal/utils_test.go +++ b/pulsar/internal/utils_test.go @@ -55,3 +55,8 @@ func TestParseRelativeTimeInSeconds(t *testing.T) { assert.Nil(t, err) assert.Equal(t, time.Duration(10)*time.Hour*24*7*365, timestamp) } + +func TestTimestampMillis(t *testing.T) { + assert.Equal(t, uint64(0), TimestampMillis(time.Time{})) + assert.Equal(t, uint64(7), TimestampMillis(time.Unix(0, 7*int64(time.Millisecond)))) +}