Jepsen, ParticleDB의 '완전한 ACID' 주장에 96가지 결함 폭로
Jepsen: ParticleDB 1.1.4
Jepsen이 AI 워크로드용 멀티모델 데이터베이스 ParticleDB 1.1.4~1.1.18.11.rc-22를 테스트한 결과, '완전한 ACID' 주장은 시기상조였다. 단일 서버·단일 클라이언트 환경에서도 크래시, 데드락, 데이터 손실부터 삭제 불가능한 부분적 행, WHERE 4 = 5, 왜곡된 형태로 되살아나는 테이블, 문자열이 정수로 변하는 현상 등 96가지 이슈가 발견됐다. 최종 버전에서도 기본 occ 모드에서 커밋된 쓰기가 유실됐고, 최강 설정인 serializable에서도 내부 이상과 Lost Update가 허용됐다. Orkes는 1.1.19-rc.13에서 모든 문제를 해결했다고 주장한다.
ParticleDB는 기본 occ 트랜잭션 모드에서 정상 작동 중에도 커밋된 쓰기를 계속 유실했고, 가장 강력한 설정인 serializable에서도 내부 이상과 Lost Update를 허용했다.
HN 토론
106- the_duke
끔찍하군!
> ParticleDB 1.1.4는 Postgres 호환 데이터베이스라고 주장했지만 ... 대신 우리는 혼란의 라이브러리를 발견했습니다
> 측정할 수 있는 거의 모든 방식으로 빈번하고 심각한 트랜잭션 이상 현상을 보였습니다. 우리는 커밋된 쓰기의 손실, 내부 일관성 위반, G1a (Aborted Read), G1b (Intermediate Read), P4 (Lost Update)를 일상적으로 관찰했습니다. append 워크로드에서는 성공적으로 추가된 값이 이후 특정 키를 읽을 때 사라지곤 했습니다. 우리의 테스트 스위트는 G0, G1c, G-Single, G2-item을 포함한 모든 종류의 순환 이상 현상을 추론했지만, 이들 중 다수는 쓰기 손실과 같은 더 기본적인 문제로 귀속될 수 있습니다. 이러한 문제는 단일 서버에서 장애 없이 발생했으며, 테스트된 모든 트랜잭션 모드, 인터페이스, WAL 모드에 영향을 미쳤습니다
- amluto
소프트웨어에서 흥미로운 이분법을 알게 되었습니다:
어떤 소프트웨어는 전체 설계가 말이 되고 작동하지 않는 경우가 대개 국소적인 버그인 의미에서 '구성상 올바른' 소프트웨어입니다.
어떤 소프트웨어는 '구성상 올바르지 않은' 소프트웨어이며, 대개 운과 대부분 또는 모든 코드 경로에서 부정확성을 노출할 수 있는 부분을 조심스럽게 우회하는 조합으로 작동하는 경향이 있습니다. (AI는 우회 조치를 삽입할 관련 위치를 찾는 데 상당히 효과적일 수 있습니다.)
ParticleDB는 후자 범주인 것 같습니다. 많은 대규모 프로젝트에는 한 범주에 속하는 부분과 다른 범주에 속하는 부분이 있습니다.
덧붙여, 지난 하루 이틀 동안 저는 Linux 커널의 folio pinning 처리가 '구성상 올바르지 않은' 범주에 속하는 것 같다고 생각해 왔습니다. 좋은 시절이군요. 아니, 보안이나 우발적 손상 문제라고 믿을 만하게 특징지을 수 있는 고치기 어려운 버그를 발견한 것은 아닙니다[0]. 하지만 이는 대부분 운인 것 같습니다.
[0] 몇 달 전 Anthropic의 대규모 덤프에서도 발견된 버그를 다시 발견한 것 같고, 현재 수정 중입니다. 애플리케이션이 '고정된' io_uring I/O를 수행하거나 memfd에서 특정 유형의 iommu 기반 또는 아마도 RDMA를 수행한다면, 드물게 이를 접할 가능성이 있습니다. 재현기를 만들려고 애쓰지는 않았습니다.
- tensegrist
> ParticleDB의 홈페이지는 ParticleDB가 TLA+ 증명으로 '형식적으로 증명되었다'고 광고했습니다. 그러나 우리의 협업 동안 어떤 TLA+ 명세도 이용 가능하지 않았습니다. 어떤 속성이 증명되었는지, 또는 그것이 구축된 ParticleDB를 설명했는지는 불분명합니다.
- wofo
> 우리가 발견한 안전 오류의 심각성과 범위, 그리고 이를 생성한 프로세스를 고려하여, Jepsen은 사용자들이 ParticleDB의 추가 배포를 중단하고 가능한 한 빨리 다른 데이터베이스로 마이그레이션할 것을 권장합니다. 가능하다면 더 신뢰할 수 있는 소스에서 데이터베이스 상태를 확인하거나 재구축하는 것을 고려하십시오.
데이터베이스를 바이브코딩하면 이런 일이 생기는 것 같네요...
- edude03
> 우리는 ParticleDB에서 96가지 문제를 제시합니다. 평범한 것(크래시, 교착 상태, 데이터 손실 등)부터 흥미로운 것(삭제할 수 없는 부분적으로 보이지 않는 행, WHERE 4 = 5, 왜곡된 형태로 다시 나타나는 삭제된 테이블, 혼란스러운 열, 정수가 되는 문자열 등)까지 다양합니다.
확실히 평소보다 심각해 보입니다(돌아보면 대부분의 데이터베이스는 총 10개 미만의 문제를 가지고 있고 대다수는 '경미한' 것 같습니다). AI를 위한 데이터베이스이므로 바이브코딩되었거나 그냥 새로운 것일까요? 그렇다 하더라도 새롭더라도 안정 릴리스에서 이렇게 많은 문제가 있을 것이라고는 예상하지 못했습니다
- mxey
얼마나 형편없는지 정말 놀랍습니다. 바이브코딩된 데이터베이스라면 놀랄 일도 아니지만, 왜 스스로 어떤 테스트도 먼저 하지 않고 Kyle을 테스트에 고용했을까요?
- eqvinox
> 문자열이 때때로 8비트 정수로 변했습니다 (#37)
드디어 eMudhra의 키에 무슨 일이 있었는지 알겠네요!
(죄송합니다. 정말 참을 수가 없었어요.)
- t3ntxcles
"WHERE 4 = 5"가 행을 반환하는 것 같은 버그를 출시한다는 것만으로도 모든 것을 말해줍니다