@@ -69,7 +69,7 @@ func TestConnect_FailsWhenDataDirLocked(t *testing.T) {
6969 require.NoError(t, err, "expected to take the data-dir lock for the first time")
7070 t.Cleanup(release)
7171
72− _, err = Connect(context.Background(), dataDir)
72+ _, err = Connect(context.Background(), dataDir, WithDataDirLock(true))
7373 require.Error(t, err, "Connect must refuse to open a locked data dir")
7474 require.ErrorIs(t, err, ErrDataDirLocked)
7575}
@@ -85,12 +85,12 @@ func TestConnect_SucceedsAfterContenderReleases(t *testing.T) {
8585 release, err := tryFileLock(lockPath)
8686 require.NoError(t, err)
8787
88− _, err = Connect(context.Background(), dataDir)
88+ _, err = Connect(context.Background(), dataDir, WithDataDirLock(true))
8989 require.ErrorIs(t, err, ErrDataDirLocked)
9090
9191 release()
9292
93− conn, err := Connect(context.Background(), dataDir)
93+ conn, err := Connect(context.Background(), dataDir, WithDataDirLock(true))
9494 require.NoError(t, err, "Connect should succeed once the contender releases the lock")
9595 require.NoError(t, conn.PingContext(context.Background()))
9696 require.NoError(t, Release(dataDir))
@@ -105,7 +105,7 @@ func TestConnect_LockReleasedOnFinalRelease(t *testing.T) {
105105 dataDir := t.TempDir()
106106 lockPath := filepath.Join(dataDir, dataDirLockFile)
107107
108− conn, err := Connect(context.Background(), dataDir)
108+ conn, err := Connect(context.Background(), dataDir, WithDataDirLock(true))
109109 require.NoError(t, err)
110110 require.NoError(t, conn.PingContext(context.Background()))
111111
@@ -135,10 +135,10 @@ func TestConnect_SharedPoolDoesNotReacquireLock(t *testing.T) {
135135 dataDir := t.TempDir()
136136 lockPath := filepath.Join(dataDir, dataDirLockFile)
137137
138− _, err := Connect(context.Background(), dataDir)
138+ _, err := Connect(context.Background(), dataDir, WithDataDirLock(true))
139139 require.NoError(t, err)
140140
141− _, err = Connect(context.Background(), dataDir)
141+ _, err = Connect(context.Background(), dataDir, WithDataDirLock(true))
142142 require.NoError(t, err)
143143
144144 // Drop one reference; lock must still be held.
@@ -163,8 +163,47 @@ func TestConnect_SkipLockEnvBypassesAcquisition(t *testing.T) {
163163
164164 t.Setenv("CRUSH_SKIP_DATADIR_LOCK", "1")
165165
166− conn, err := Connect(context.Background(), dataDir)
166+ conn, err := Connect(context.Background(), dataDir, WithDataDirLock(true))
167167 require.NoError(t, err, "skip-lock env should bypass contention")
168168 require.NoError(t, conn.PingContext(context.Background()))
169169 require.NoError(t, Release(dataDir))
170170}
171+
172+// TestConnect_DefaultIgnoresContendedLock confirms that without
173+// WithDataDirLock(true) the lock file is irrelevant: a contender can
174+// hold tryFileLock and Connect still succeeds. This pins the
175+// local-mode default to its pre-lock behavior.
176+func TestConnect_DefaultIgnoresContendedLock(t *testing.T) {
177+ t.Cleanup(ResetPool)
178+
179+ dataDir := t.TempDir()
180+ lockPath := filepath.Join(dataDir, dataDirLockFile)
181+
182+ release, err := tryFileLock(lockPath)
183+ require.NoError(t, err, "expected to take the data-dir lock for the first time")
184+ t.Cleanup(release)
185+
186+ conn, err := Connect(context.Background(), dataDir)
187+ require.NoError(t, err, "default Connect must not take the lock and must succeed under contention")
188+ require.NoError(t, conn.PingContext(context.Background()))
189+ require.NoError(t, Release(dataDir))
190+}
191+
192+// TestConnect_ServerPathFailsWhenDataDirLocked is the server's
193+// workspace-bootstrap analogue of TestConnect_FailsWhenDataDirLocked:
194+// passing WithDataDirLock(true) must surface ErrDataDirLocked when a
195+// contender already holds the lock.
196+func TestConnect_ServerPathFailsWhenDataDirLocked(t *testing.T) {
197+ t.Cleanup(ResetPool)
198+
199+ dataDir := t.TempDir()
200+ lockPath := filepath.Join(dataDir, dataDirLockFile)
201+
202+ release, err := tryFileLock(lockPath)
203+ require.NoError(t, err, "expected to take the data-dir lock for the first time")
204+ t.Cleanup(release)
205+
206+ _, err = Connect(context.Background(), dataDir, WithDataDirLock(true))
207+ require.Error(t, err, "server-path Connect must refuse to open a locked data dir")
208+ require.ErrorIs(t, err, ErrDataDirLocked)
209+}