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

Timeout setting file lock #2988

Draft
wants to merge 9 commits into
base: main
Choose a base branch
from

Conversation

ScottDugas
Copy link
Contributor

No description provided.

Setting up the executor as a ForkJoinPool and trying to do concurrent
updates can cause a deadlock.
The only implementation that actually referenced the text was in
tests. Those tests need to be adjusted, but this makes it so that
the type aligns with the behavior, and hopefully gets us on a path
to an index having a fixed analyzer (at least for the lifetime of
the transaction), which can simplify the FDBDirectoryWrapper
@foundationdb-ci
Copy link
Contributor

Result of fdb-record-layer-pr on Linux CentOS 7

  • Commit ID: 84fa7c9
  • Duration 0:44:04
  • Result: ❌ FAILED
  • Error: Error while executing command: ./gradlew --no-daemon --console=plain -b ./build.gradle build destructiveTest -PcoreNotStrict -PreleaseBuild=false -PpublishBuild=false -PspotbugsEnableHtmlReport. Reason: exit status 1
  • Build Log terminal output (available for 30 days)
  • Build Workspace zip file of the working directory (available for 30 days)

Since there is no longer a text parameter, it can generater the
wrappers once. This may result in some wasted CPU generating unused
analyzers (e.g. when not querying or not writing), but it should be
compensated by the fact that it consistently creates 2 wrappers,
rather than creating a wrapper for every record update, or every
query.
Only initialize this once, and reuse. Part of the process of making
FDBDirectoryWrapper not have to worry about changing analyzers
Since the analyzer is passed into the constructor, there's no reason
for the writer to change.
By using a LazyCloseable instead of synchronized blocks, it allows
the ForkJoinPool to mark the thread as inactive, and will create
new threads to process operations, thus avoiding the deadlock
I had to disable:
- synthetic indexes, because updating the parent
and child at the same time breaks the primaryKeySegmentIndex
- partitioning because the partitionInfo (including counts) is not
updated in a thread-safe way
@foundationdb-ci
Copy link
Contributor

Result of fdb-record-layer-pr on Linux CentOS 7

  • Commit ID: 4fbdc79
  • Duration 0:43:29
  • Result: ❌ FAILED
  • Error: Error while executing command: ./gradlew --no-daemon --console=plain -b ./build.gradle build destructiveTest -PcoreNotStrict -PreleaseBuild=false -PpublishBuild=false -PspotbugsEnableHtmlReport. Reason: exit status 1
  • Build Log terminal output (available for 30 days)
  • Build Workspace zip file of the working directory (available for 30 days)

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.

2 participants