>> See v7. I fixed an earlier issue with Windows, which was due to not initializing the shared memory inside
``` #ifdef EXEC_BACKEND extern void AttachSharedMemoryStructs(void); #endif ``` But then I found another one after. LWLockTrancheNames gets forked on Linux, but of course that will not happen on Windows without extra work. So, the tests failed because the requested tranches (via RequestNamedLWLockTranche) were not being found when looked up. But of course, we already have provisions to copy these tranches for Windows ( see inside launch_backend.c ). ``` int NamedLWLockTrancheRequests; NamedLWLockTranche *NamedLWLockTrancheArray; LWLockPadded *MainLWLockArray; ``` So, this means that for the local memory sync, we can actually just copy the requested tranches (via RequestNamedLWLockTranche) and then the shared memory tranches. This is much better, as it syncs using both possible sources for tranche names. ``` int i = 0; while (i < NamedLWLockTrancheRequests) { NamedLWLockTranche *tranche; tranche = &NamedLWLockTrancheArray[i]; SetLocalTrancheName(i, tranche->trancheName); i++; } /* Acquire shared lock on tranche names shared memory */ LWLockAcquire(&LWLockTrancheNames.shmem->lock, LW_SHARED); while (i < LWLockTrancheNames.shmem->allocated) { ``` So, now these tests pass locally on Windows. Attached is v8. -- Sami
v8-0002-Add-tests-for-LWLock-tranche-names-DSA.patch
Description: Binary data
v8-0001-Implement-a-DSA-for-LWLock-tranche-names.patch
Description: Binary data