Sentnel: Memory 누수(leak) 관련 hiredis library 버그 수정 - 버전 3.0.1에도 적용
Redis 2.8.16 - 2014년 9월 16일(화) HIGH 높음
손상된 AOF 파일(truncated AOF file)
손상되었다는 의미는 명령이 완벽히 종료되지 않고 일부분만 저장되어 있다는 뜻이다. 따라서 정상적으로 로드할 수 없다.
AOF 재작성(rewrite)가 실행되면 자동으로 수정됩니다
손상된 상태의 AOF 파일로 레디스 서버를 재 시작하면 AOF를 로드하지 못합니다.
손상된 AOF 파일을 수정하려면 redis-check-aof (--fix 옵션 없이 실행) 유틸리티를 실행하면
AOF 파일에 손상된 부분이 표시됩니다. 이 부분을 제거/수정하고 레디스 서버를 다시 시작하면 됩니다.
SAVE
명령이 AOF나 클론(슬레이브)로 전송되지 않도록 수정 - 버전 3.0.0-RC1에도 적용
Redis 2.8.15 - 2014년 9월 12일(금) HIGH 높음
Sentinel: 치명적인 버그 수정, Majority 계산 오류: 센티널 사용자는 업그레이드 필수
Config file Path 오류 수정, 이 버그는 redis.conf 파일안에 'dir' 파라미터가 있을 경우에 발생했습니다.
Redis 2.8.6 - 2014년 2월 13일(목) HIGH 높음
이 버전에 포함된 모든 내용은 3월 11일 발표된 버전 3.0.0-Beta 2에도 적용되었습니다.
EVALSHA 스크립트 캐시 버그를 수정했습니다.
특정 조건에서 실행 된 스크립트가 AOF 나 클론(슬레이브)으로 올바르게 전파되지 않을 수 있었습니다.
자세한 내용은 이슈 #1549를 참조하세요.
복제(replication) 중 링크가 끊기는 버그 수정, 이 버그로 불필요한 재 동기화가 발생하거나 무한 루프가 발생할 수 있었습니다.
AOF appendfsync
가 'everysec'나 'no'인 상태에서 AOF fsync 에러( 예, 디스크 공간이 없을 경우)가 발생해도
Redis 서버는 다운되지 않고 계속 실행되도록 수정했다. 단 데이터베이스는 write 명령을 수행할 수 없는 read-only 모드로 변경된다.
디스크 문제가 해결되어 다시 AOF fsync를 할 수 있으면 데이터베이스도 write 모드로 변경된다.
Inline Protocol 구현: 텔넷에서 Redis 명령을 직접 입력할 수 있게 되었다. 예) "set key value"
Redis 2.8.0-RC1(2.7.101) - 2013년 7월 18일(목)
부분적 재동기화(Partially Resynchronization) 기능 추가: 마스터와 클론이 짧은 시간 동안만 연결이 끊어졌을 경우
RDB 파일을 받은 전체 동기화를 하지 않고 끊어진 시간 동안 추가된 데이터(명령)만 받는 부분적 동기화기능을 구현했다.
데이터 사이즈는 redis.conf에 추가된
repl-backlog-size
파라미터로 정한다.
마스터가 연결을 허용했지만 실제로 회신 할 수 없는 경우 차단을 피하기 위해 복제를 시작하기 전에 비동기 PING을 보냅니다.
Redis.conf에 Slave-priority 파라미터 추가: 이것은 클론 중 마스터로 승격할 우선순위를 지정합니다.
Hiredis library 업데이트
Redis 2.6.0-RC6(2.5.12) - 2012년 8월 1일(수) MODERATE 보통
AUTH 시간 공격 취약점 수정:
패스워드를 비교하는데 strcmp()를 사용하면 비교할 패스워드가 길면 시간이 많이 걸린다.
이를 이용해서 수 많은 Auth를 보내면 레디스 서버는 Auth를 처리하는데 많은 시간을 소모해서 다른 일을 할 수 없게 된다.
이것을 여기서는 시간 공격이라고 했다. 비교 시간이 패스워드 길이에 독립적인 time_independent_strcmp()를 새로 만들어서 사용했다. 자세한 내용은 이슈 #560 Timing Attack Vulnerability 참조하세요.
파이프 모드(Pipe mode)를 활성화하기 전에 연결 확인
REPLCONF 내부 명령 구현: INFO에 올바른 클론 포트를 표시할 수 있게 되었습니다.
알 수 없는 이유로 AOF에 완전한 명령을 기록하지 못하고 일부만 기록될 경우 해당 명령을 제거(truncate)합니다.
AOF에 명령이 일부만 기록되면 레디스 서버를 재 시작할 때 에러가 발생합니다.
이를 확인하기 위해서는 redis-check-aof 유틸리티를 사용해야 합니다.
일부만 기록되는 명령을 제거할 경우 레디스 서버는 redis-check-aof 유틸리티를 사용하지 않고도 시작 할 수 있습니다.