7.7 KiB
title, source_type, url, archive_url, related_branches, related_projects, tags, created
| title | source_type | url | archive_url | related_branches | related_projects | tags | created | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ShedLock Issue #899 — Non-Scheduler (General-Purpose) Lock 사용 가능 여부: Maintainer 입장 | official-doc | https://github.com/lukas-krecan/ShedLock/issues/899 |
|
|
|
2026-06-12 |
ShedLock Issue #899 — Non-Scheduler (General-Purpose) Lock 사용 가능 여부: Maintainer 입장
Layer:
raw/— 외부 자료(GitHub Issue — maintainer 발언 포함)의 원문 발췌·출처 기록. 검증된 요약은/ingest후wiki/concepts/에source-summary-template형식으로 별도 작성. 원본은 raw에 영구 보관.
Parent / 활용 branch (필수, 최소 1개+)
이 자료는 혼자 존재하지 않는다. 어느 branch의 구현 결정의 근거로서 보관됨.
| Branch | 이 자료가 정당화하는 결정 |
|---|---|
| raw/branch-notes/feature-distributed-lock-contract | ShedLock 을 scheduler 밖 general-purpose 분산 락으로 쓰는 것에 대한 maintainer (Lukas Krecan) 의 실제 입장 확인 — distributedLockProvider 후보에서 ShedLock 을 배제/허용할지의 근거 |
출처 / Source
- 원본 URL: https://github.com/lukas-krecan/ShedLock/issues/899
- 아카이브 URL: (미수집)
- 저자 / 조직: GitHub Issue — 개설: holgerstolzenberg / maintainer 발언: lukas-krecan (Lukas Krecan, ShedLock 원저자)
- 발행일: 2022-02-01 (issue 개설)
- 마지막 확인일: 2026-06-12
왜 저장했는지 / Why archived
ShedLock 을 @Scheduled 없이 일반 분산 락으로 사용하는 것이 안전한지, maintainer 가 공식으로 지지하는지 여부를 판단하기 위해 수집. distributedLockProvider 구현체 후보 선정 시 ShedLock 의 적용 범위를 공식 발언 기준으로 확인하는 1차 근거.
핵심 인용 / Key quotes (verbatim, 3~5문장)
[Comment — lukas-krecan] "I do not want to ofically declare that it's possible to use it as a generic "lock"... Moreover, I do not know how to call it. It's not a lock. If it's not available, the process does not wait but just skips the execution."
[Comment — lukas-krecan] "The workaround with the pseudoanotation is a grat idea. I have to think about it."
[Comment — Aloren] "JFYI We are using shedlock in production without @Scheduled annotation, because we have dynamic jobs. Works amazing."
[Issue body — holgerstolzenberg] "I know that ShedLock is primarily designed for scheduler based stuff, but I gave it a shot and tried to use it as a 'regular' distributed lock."
Claims Extracted / 추출된 주장
이 자료가 직접 말하는 것만 claim 으로 분리한다. Claim ID prefix:
SHEDLOCK-899-
| Claim ID | Claim (이 자료가 직접 말하는 것) | Evidence quote | Strength | Applies to | Does not prove |
|---|---|---|---|---|---|
| SHEDLOCK-899-C1 | Maintainer 는 ShedLock 을 generic lock 으로 공식 선언하기를 거부함 | [Comment — lukas-krecan] "I do not want to ofically declare that it's possible to use it as a generic "lock"" | maintainer-statement |
ShedLock 라이브러리의 공식 지원 범위 판단 시 | ShedLock 이 기술적으로 작동하지 않는다는 것을 증명하지 않음; 공식 문서 변경 여부를 보장하지 않음 |
| SHEDLOCK-899-C2 | Maintainer 는 ShedLock 의 동작을 "lock 이 아니다 — 획득 실패 시 대기 없이 실행을 건너뜀"으로 정의함 | [Comment — lukas-krecan] "It's not a lock. If it's not available, the process does not wait but just skips the execution." | maintainer-statement |
ShedLock 의 의미론적 동작 이해 시 (skip semantics vs blocking lock semantics) | 이 동작이 모든 ShedLock provider 구현에서 동일하다는 것을 보장하지 않음; 공식 표준이 아님 |
| SHEDLOCK-899-C3 | Maintainer 는 pseudo-annotation workaround 아이디어 자체를 긍정적으로 평가했으나, 공식 지원 결정을 유보함 | [Comment — lukas-krecan] "The workaround with the pseudoanotation is a grat idea. I have to think about it." | maintainer-statement |
ShedLock non-scheduler 사용 패턴의 커뮤니티 workaround 평가 시 | 이 워크어라운드가 공식 지원으로 승격되었다는 것을 증명하지 않음 |
| SHEDLOCK-899-C4 | 커뮤니티(user: Aloren) 는 @Scheduled 없이 dynamic jobs 에 ShedLock 을 production 에서 사용 중임을 보고함 |
[Comment — Aloren] "JFYI We are using shedlock in production without @Scheduled annotation, because we have dynamic jobs. Works amazing." | needs-confirmation |
ShedLock non-scheduler 사용의 실 운영 가능성 참고 시 | 이 커뮤니티 사례가 공식 권고가 아님; 특정 환경·버전·use-case 에 한정될 수 있음 |
Strength 참고
본 자료의 모든 Claim 은 maintainer-statement 또는 needs-confirmation 등급이다. GitHub issue comment 는 공식 벤더 문서(official-vendor-doc) 또는 RFC(official-standard) 수준의 출처가 아니며, maintainer 의 의도·입장을 나타내는 비공식 발언이다. 공식 문서 보강 없이 "공식 best practice"로 취급 금지.
Usage Boundaries / 적용 경계
-
이 자료가 직접 증명하는 것:
SHEDLOCK-899-C1: Maintainer 가 ShedLock 을 generic lock 으로 공식 선언하기를 원하지 않는다는 입장SHEDLOCK-899-C2: ShedLock 의 semantics 는 blocking lock 이 아니라 skip semantics ("획득 실패 시 실행 건너뜀") 임을 maintainer 가 명시SHEDLOCK-899-C3: Pseudo-annotation workaround 는 maintainer 도 긍정적으로 평가했으나, 공식화 결정은 유보
-
이 자료가 증명하지 않는 것:
- ShedLock 이 non-scheduler context 에서 기술적으로 작동하지 않는다는 것 (기술적 불가 주장 없음)
- 이후 버전에서 공식 지원이 추가되었는지 여부 (2022년 issue; 최신 README/changelog 별도 확인 필요)
- ShedLock 이 blocking lock semantics (대기 + 획득) 를 제공하지 않는다는 것을 공식 문서에서 보장
-
내 프로젝트에 적용하려면 추가 확인이 필요한 것:
- ca-tmpl
distributedLockProvider가 blocking semantics (lock 획득 실패 시 대기) 를 요구하는지 — skip semantics 로 충분한지 설계 레벨 확인 필요 - ShedLock README 최신본에서 non-scheduler use 공식 입장 변화 여부 (raw/official-docs/lock-shedlock-readme 와 대조)
- ShedLock 최신 버전의
LockProviderAPI 가distributedLockProviderSPI 요구사항과 호환되는지
- ca-tmpl
메모 / Notes
- C1+C2 는 ShedLock 을 general-purpose
distributedLockProvider구현체에서 배제하는 방향의 근거가 된다. 단, "공식 선언 거부" = "기술적으로 불가"가 아니므로 배제 결정의 최종 근거는 skip semantics(C2) 가 더 강함. - C3 의 "workaround 긍정 평가 + 유보"는 모호하다. 이 모호함 자체가 claim 이며, 결정 시 이 모호성을 명시해야 함.
- C4 는 커뮤니티 testimonial 이므로
needs-confirmation; ca-tmpl 결정의 보조 참고용으로만 사용. - "scheduler 전용 공식 입장"이라는 선행 요약은 C2 기준으로 부분적으로 지지되나, README 의 "it's just a lock" wording 과는 방향이 다소 다름 — raw/official-docs/lock-shedlock-readme 와 교차 확인 필요.
Related / 관련
- 동일 프로젝트 공식 자료: raw/official-docs/lock-shedlock-readme — ShedLock README 공식 경계 선언
- 대안 구현체 공식 자료: raw/official-docs/lock-spring-integration-lock-registry — Spring Integration LockRegistry (blocking semantics 지원)
- 이 자료를 인용한 wiki 요약: (생성 전)