Skip to content

0.4.0 write support development - #165

Open
sjperkins wants to merge 32 commits into
mainfrom
0.4.0-dev
Open

0.4.0 write support development#165
sjperkins wants to merge 32 commits into
mainfrom
0.4.0-dev

Conversation

@sjperkins

Copy link
Copy Markdown
Collaborator

This PR tracks the 0.4.0 development branch, containing write support for arcae.

sjperkins and others added 5 commits August 25, 2025 15:16
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@sjperkins sjperkins changed the title 0.4.0 development 0.4.0 write support development Feb 26, 2026
Incorporate the casacore patch whitespace cleanup (#215) and the
pytest != 9.1.0 restriction (#214) from main.

Resolve the 001-casacore-cmake.patch conflict by keeping the
write-locking functionality (Bool TableProxy::lock) and applying main's
whitespace elision. Additionally elide whitespace-only changes the
write-locking work introduced into FileLocker.cc/LockFile.cc, restoring
the pristine casacore indentation. The patch applies strict-clean to
casacore 3.7.1 with no whitespace warnings, and produces output
identical (modulo whitespace) to the previous patch.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
arcae confines each casacore Table to its own thread and acquires/releases
a lock around every operation. Auto locking retains locks across operations,
so a retained reader lock on one IsolatedTableProxy instance deadlocks the
in-process multi-reader/single-writer coordination that serialises a writer
against readers on other instances. Move everything onto explicit user
locking instead.

- FileLocker: share a single LockState across every FileLocker over the same
  (lock-file path, start, length). POSIX advisory locks are owned per
  (process, inode), so overlapping same-process requests silently replace
  rather than block; routing them through one shared LockState gives real
  multi-reader/single-writer semantics, with only the first acquirer taking
  and the last releaser dropping the real fcntl lock.
- table_factory: CoerceToUserLocking() rewrites auto/autonoread lock options
  to their user/usernoread equivalents so arcae's explicit locks fully
  control lock lifetime.
- IsolatedTableProxy: hold a read lock on the source proxy while the functor
  runs, since under user locking casacore requires the source table locked
  while e.g. a TAQL command builds a reference table from it.
- parallel_write_test: drive the test through user locking with explicit
  write locks; add concurrent_rw_test exercising cross-instance coordination.
sjperkins and others added 2 commits July 1, 2026 21:55
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
sjperkins and others added 2 commits July 22, 2026 15:27
Brings in the storage-manager cache-size configuration (#222, 4e34bfe)
and the aws-actions bump (#221, 62561f9).

Conflicts in cpp/arcae/table_factory.{cc,h} resolved by keeping the
0.4.0-dev divergences (user-locking default for OpenTable, ninstances
parameter on DefaultMS) while adding the new json_cache_size parameter
and splicing ParseCacheSizeSpec/ApplyCacheSizes into DefaultMS's MakeMS
lambda (cache_spec captured by value for per-instance construction).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.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.

1 participant