Skip to content

0.4.0 write support development#165

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

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

Conversation

@sjperkins

Copy link
Copy Markdown
Member

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
Reconcile the static-library / minimal-symbol-export build (#211) and the
python-casacore guard removal (#212) from main with this branch's write
support.

Conflict resolutions:
- 001-casacore-cmake.patch: union of main's static-monolith hunks (disabled
  apps/ subdirs, ZLIB linkage, PUBLIC/PRIVATE link specs, abbreviated index
  hashes) and this branch's write-locking source sections (FileLocker,
  LockFile, TableProxy). Only the TableProxy.cc index line conflicted; kept
  this branch's post-write-locking blob hash.
- src/arcae/__init__.py: took main's guard/import removal (#212), kept version.
- pyproject.toml, tbump.toml: kept 0.4.0-alpha.4.
- HISTORY.rst: kept both changelog sections.

Validated: vcpkg applies the merged patch to casacore v3.7.1 cleanly; full
.venv build succeeds; test suite 32 passed, 4 skipped, 1 xfailed.

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