Skip to content

quiche: update QUICHE to commit 5dd7a030209f9a6b5043bebd8ac3ee54f18d1d08#17328

Merged
alyssawilk merged 14 commits intoenvoyproxy:mainfrom
danzh2010:updatetar13
Jul 20, 2021
Merged

quiche: update QUICHE to commit 5dd7a030209f9a6b5043bebd8ac3ee54f18d1d08#17328
alyssawilk merged 14 commits intoenvoyproxy:mainfrom
danzh2010:updatetar13

Conversation

@danzh2010
Copy link
Copy Markdown
Contributor

Signed-off-by: Dan Zhang danzh@google.com

Commit Message: Modify QUIC_BUG implementation to log with rate limit like ENVOY_BUG in release mode. Fix a QuicMemSliceSpanImpl life time issue which was exposed by new QUICHE change

Risk Level: low
Testing: added unit tests for QUIC_BUG and QuicMemSliceSpanImpl

Signed-off-by: Dan Zhang <danzh@google.com>
Signed-off-by: Dan Zhang <danzh@google.com>
Signed-off-by: Dan Zhang <danzh@google.com>
@repokitteh-read-only repokitteh-read-only bot added the deps Approval required for changes to Envoy's external dependencies label Jul 14, 2021
@repokitteh-read-only
Copy link
Copy Markdown

CC @envoyproxy/dependency-shepherds: Your approval is needed for changes made to (bazel/.*repos.*\.bzl)|(bazel/dependency_imports\.bzl)|(api/bazel/.*\.bzl)|(.*/requirements\.txt)|(.*\.patch).

🐱

Caused by: #17328 was opened by danzh2010.

see: more, trace.

Signed-off-by: Dan Zhang <danzh@google.com>
@moderation
Copy link
Copy Markdown
Contributor

You have some CI issues but...

/lgtm deps

@repokitteh-read-only repokitteh-read-only bot removed the deps Approval required for changes to Envoy's external dependencies label Jul 14, 2021
Signed-off-by: Dan Zhang <danzh@google.com>
@danzh2010
Copy link
Copy Markdown
Contributor Author

/assign @wu-bin

Signed-off-by: Dan Zhang <danzh@google.com>
Signed-off-by: Dan Zhang <danzh@google.com>
Signed-off-by: Dan Zhang <danzh@google.com>
Signed-off-by: Dan Zhang <danzh@google.com>
Signed-off-by: Dan Zhang <danzh@google.com>
@danzh2010
Copy link
Copy Markdown
Contributor Author

It's ready for review now. PTAL!
Coverage test failure is caused by ProxyProtoFilterChainMatchIntegrationTest.MismatchDirectSourceButMatchSource/IPv4 which is irrelevant to this PR.

Comment on lines 62 to +64
Envoy::Buffer::Instance* buffer_{nullptr};
// Nullptr if this span is not constructed with a QuicMemSlice.
QuicMemSliceImpl* mem_slice_{nullptr};
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add some comments to explain the relationship of buffer_ and mem_slice_? (It seems we only need one of them to be !nullptr at a time, which is easier to understand)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done. buffer_ always points to the actually memory, but mem_slice_ is only used in the constructor which takes QuicMemSlice.

const std::string bug_name_;
};

class ScopedDisableExitOnQuicheBug {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: Clarify (in comments) it is test only, and only one instance can exists at a time.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done. But why only one instance can exists at a time?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see comment added?

Suppose two threads, each has a ScopedDisableExitOnQuicheBug instance, called S1 and S2, and S1 and S2's lifetime overlaps like:

T=0: S1 construct
T=1: S2 construct
T=2: S1 destruct
T=3: S2 destruct

The final value for ScopedDisableExitOnQuicheBug will be true.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, you mean multiple thread. Add comment for real now.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes multi thread is the main problem. But that sequence is problematic in single thread too.

Still not seeing comments. LGTM assuming you'll add one:)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How can scoped objects have interleaved life time?

abort();
}
#else
Envoy::Assert::invokeEnvoyBugFailureRecordActionForEnvoyBugMacroUseOnly(bug_name_.data());
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: remove .data()

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

invokeEnvoyBugFailureRecordActionForEnvoyBugMacroUseOnly() take a char*

EXPECT_QUIC_BUG(bug("bug one is expected"), "bug one");
EXPECT_QUIC_BUG(bug("bug two is expected"), "bug two");
#ifdef NDEBUG
// The 3rd triggering in release mode should be omitted.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"should not be logged". If there's a bug counter it should still be incremented.

@alyssawilk alyssawilk self-assigned this Jul 15, 2021
Signed-off-by: Dan Zhang <danzh@google.com>
Signed-off-by: Dan Zhang <danzh@google.com>
wu-bin
wu-bin previously approved these changes Jul 15, 2021
Copy link
Copy Markdown
Contributor

@wu-bin wu-bin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks Dan. LGTM but please add a comment for ScopedDisableExitOnQuicheBug.

const std::string bug_name_;
};

class ScopedDisableExitOnQuicheBug {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes multi thread is the main problem. But that sequence is problematic in single thread too.

Still not seeing comments. LGTM assuming you'll add one:)

@alyssawilk
Copy link
Copy Markdown
Contributor

(tagging as waiting on a new hash per internal discussion)

Signed-off-by: Dan Zhang <danzh@google.com>
@repokitteh-read-only repokitteh-read-only bot added deps Approval required for changes to Envoy's external dependencies and removed waiting labels Jul 19, 2021
@danzh2010 danzh2010 changed the title quiche: update QUICHE to commit 664d69ff8ddab53aef1c2d757874e1c192052e0a quiche: update QUICHE to commit 5dd7a030209f9a6b5043bebd8ac3ee54f18d1d08 Jul 19, 2021
@danzh2010
Copy link
Copy Markdown
Contributor Author

danzh2010 commented Jul 19, 2021

(tagging as waiting on a new hash per internal discussion)

Updated to a newer commit. PTAL

urls = ["https://storage.googleapis.com/quiche-envoy-integration/{version}.tar.gz"],
use_category = ["dataplane_core"],
release_date = "2021-06-02",
release_date = "2021-07-13",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the date for this commit is 2021-07-16 as per https://quiche.googlesource.com/quiche/+/5dd7a030209f9a6b5043bebd8ac3ee54f18d1d08 but it's a little difficult to navigate googlesource.com. As this isn't a Github repo I don't think we check this programatically

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fixed

@moderation
Copy link
Copy Markdown
Contributor

/lgtm deps

@repokitteh-read-only repokitteh-read-only bot removed the deps Approval required for changes to Envoy's external dependencies label Jul 19, 2021
Signed-off-by: Dan Zhang <danzh@google.com>
@repokitteh-read-only repokitteh-read-only bot added the deps Approval required for changes to Envoy's external dependencies label Jul 20, 2021
Copy link
Copy Markdown
Contributor

@alyssawilk alyssawilk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM modulo outstanding comments

@alyssawilk
Copy link
Copy Markdown
Contributor

@moderation I think this needs one more LGTM?

@moderation
Copy link
Copy Markdown
Contributor

/lgtm deps

@repokitteh-read-only repokitteh-read-only bot removed the deps Approval required for changes to Envoy's external dependencies label Jul 20, 2021
@alyssawilk alyssawilk merged commit a1c5a50 into envoyproxy:main Jul 20, 2021
leyao-daily pushed a commit to leyao-daily/envoy that referenced this pull request Sep 30, 2021
…d08 (envoyproxy#17328)

Commit Message: Modify QUIC_BUG implementation to log with rate limit like ENVOY_BUG in release mode. Fix a QuicMemSliceSpanImpl life time issue which was exposed by new QUICHE change

Risk Level: low
Testing: added unit tests for QUIC_BUG and QuicMemSliceSpanImpl
Signed-off-by: Dan Zhang <danzh@google.com>
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.

5 participants