본문 바로가기 메뉴 바로가기

ebson

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

ebson

검색하기 폼
  • 분류 전체보기 (134)
    • WORK-RELATED (14)
    • OPEN SOURCE (18)
    • TECH AND AI (29)
      • DEVOPS (17)
    • STUDY (52)
    • BOOK REVIEW (1)
  • 방명록

2026/06/23 (6)
[Open source contribution] langchain4j 오픈소스 기여 경험기 - 한 글자 오타로 .wmv가 매핑을 비껴가던 버그를 고치다

지금까지 제가 다룬 기여 중에는 인자 순서가 바뀐 것도, 큰 정수가 좁혀진 것도, 목록에서 한 줄이 빠진 것도 있었습니다. 이번에 다룰 LangChain4j 수정은 그중에서도 가장 작습니다. 바뀐 것은 코드 한 곳의 글자 한 개입니다. 그런데 그 한 글자가, 흔히 쓰는 비디오 파일 하나가 제 짝을 못 찾고 엉뚱한 답을 받게 만들고 있었습니다. 이 글은 그 한 건의 기여를, 무엇이 어긋나 있었고 그것을 어떻게 알아챘으며 한 글자를 고치는 데에도 왜 신경 쓸 거리가 있었는지 처음부터 끝까지 따라가며 정리한 기록입니다. 결과만 보면 글자 하나를 바꾼 변경이지만, 그 글자가 틀렸다고 확신하기까지, 그리고 그것을 고친 흔적을 깔끔히 남기기까지 거친 과정이 저에게는 더 오래 남았습니다.파일 확장자로 MIME 타입을..

OPEN SOURCE 2026. 6. 23. 15:02
[Open source contribution] langchain4j 오픈소스 기여 경험기 - BOM에서 빠진 docling 문서 파서 모듈을 채워 넣은 과정

지금까지 제가 고친 것들은 대부분 코드의 한 줄이 잘못 동작하는 종류였습니다. 값이 좁혀지거나, 인자가 자리를 바꾸거나, 참조가 끊기는 식이었습니다. 그런데 이번에 다룰 LangChain4j 기여는 조금 결이 다릅니다. 잘못 쓰인 코드가 있어서가 아니라, 있어야 할 한 줄이 아예 빠져 있어서 생긴 문제였습니다. 그리고 그 빠진 자리는 자바 소스가 아니라 빌드 설정 파일, 그중에서도 BOM이라고 부르는 곳이었습니다. 이 글은 그 한 건의 기여를, 무엇이 빠져 있었고 그것을 어떻게 확인했으며 소스가 없는 파일을 어떻게 검증했는지 처음부터 끝까지 따라가며 정리한 기록입니다. 최종 변경은 의존성 항목 하나를 더한 작은 수정이지만, 그 한 항목이 정말 빠진 게 맞는지, 그리고 어떤 버전으로 채워야 하는지를 확신하..

OPEN SOURCE 2026. 6. 23. 15:00
[Open source contribution] langchain4j 오픈소스 기여 경험기 - Bedrock 도구 인자에서 큰 정수가 손상되던 오버플로 버그를 고치다

버그 중에는 시끄럽게 터지는 것이 있고 조용히 번지는 것이 있습니다. 예외를 던지며 멈추는 쪽은 적어도 스택 트레이스라는 단서를 남깁니다. 그런데 아무 오류 없이, 화면도 멀쩡하게, 다만 값 하나가 슬그머니 다른 값으로 바뀌어 흘러가는 종류의 버그는 단서를 거의 남기지 않습니다. 이번 글에서 다룰 LangChain4j의 Bedrock 모듈 수정이 바로 그런 경우였습니다. 평범한 크기의 숫자에는 멀쩡하던 변환 코드가, 큰 정수 하나를 만나면 그 값을 조용히 망가뜨려서 내보내고 있었습니다. 이 글은 그 한 건의 기여를, 무엇이 문제였고 그것을 어떻게 확인했으며 어떤 점을 신경 쓰며 고쳤는지 처음부터 끝까지 따라가며 정리한 기록입니다. 최종 변경은 표현식 한 줄을 바꾼 작은 수정이지만, 그 한 줄이 왜 틀렸는..

OPEN SOURCE 2026. 6. 23. 14:59
[Open source contribution] langchain4j 오픈소스 기여 경험기 - Anthropic tool 스키마에서 사라지던 $defs를 되살린 과정

오픈소스에 기여할 만한 지점을 찾는 일은, 새 기능을 떠올리는 것보다 이미 있는 코드에서 어긋난 부분을 알아채는 쪽이 저에게는 더 수월했습니다. 그중에서도 특히 단서가 분명했던 방법이 하나 있습니다. 이미 머지된 버그 수정 하나를 골라서, 그 수정이 손댄 곳과 똑같은 일을 하는 "형제 경로"가 같은 모듈 안에 또 있는지 살펴보는 것입니다. 같은 종류의 실수는 보통 한 군데에만 있지 않습니다. 누군가 한쪽을 고쳤다면, 같은 패턴을 쓰는 다른 쪽은 아직 안 고쳐졌을 가능성이 꽤 높습니다. 이번 글에서 다룰 LangChain4j Anthropic 모듈의 tool 스키마 수정도 바로 그런 식으로, 이미 머지된 다른 수정을 따라가다 발견한 빈자리에서 출발했습니다. 이 글은 그 한 건의 기여를, 무엇이 문제였고 그..

OPEN SOURCE 2026. 6. 23. 14:57
[Open source contribution] langchain4j 오픈소스 기여 경험기 - 필수 입력 누락이 null로 새던 버그를 잡은 LangChain4j MCP 기여 후기

오픈소스 코드를 읽다 보면, 어떤 클래스 하나만 주변과 미묘하게 다르게 동작하는 자리를 만날 때가 있습니다. 문법적으로 틀린 것도 아니고 테스트가 빨갛게 깨지는 것도 아닙니다. 다만 같은 일을 하는 형제 코드들과 약속이 어긋나 있을 뿐입니다. 이번에 LangChain4j에 올린 수정도 그런 자리에서 시작했습니다. 고친 줄은 세 줄이지만, 그 세 줄을 확신을 가지고 적기까지가 이 기여의 전부였다고 느낍니다. LangChain4j는 자바에서 대규모 언어 모델을 다루기 위한 라이브러리입니다. 그중 langchain4j-agentic-mcp 모듈은 MCP(Model Context Protocol)로 노출된 외부 도구를 에이전트처럼 호출할 수 있게 해 줍니다. 다른 에이전트들과 한 워크플로우 안에 섞여, 앞선 단..

OPEN SOURCE 2026. 6. 23. 14:55
[Open source contribution] langchain4j 오픈소스 기여 경험기 - A2A 클라이언트의 조용한 실패(silent failure)를 잡아낸 기여 후기

오픈소스에 기여할 때 가장 어려운 부분은 코드를 고치는 일이 아니라, 고칠 만한 지점을 찾는 일이라고 느낍니다. 큰 기능을 새로 넣는 일은 메인테이너의 설계 방향과 부딪히기 쉽고, 사소한 오타 수정은 도움은 되지만 깊이 배우기는 어렵습니다. 그 사이 어딘가, 코드를 한참 들여다봐야 비로소 보이는 작은 논리 오류가 기여하기 좋은 자리라고 생각합니다. 이번 글에서 다루는 LangChain4j의 A2A 클라이언트 수정도 그런 자리에서 출발했습니다. LangChain4j는 자바에서 대규모 언어 모델을 다루기 위한 라이브러리입니다. 그중 langchain4j-agentic-a2a 모듈은 A2A(agent-to-agent) 프로토콜을 통해 원격에 있는 다른 에이전트를 마치 로컬 객체처럼 호출할 수 있게 해 줍니다...

OPEN SOURCE 2026. 6. 23. 14:54
이전 1 다음
이전 다음
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
  • Initialization-on-Demand Holder Idiom
  • Hot Key 문제
  • 캐시 장애
  • Redis vs DB
  • mybatis
  • DB 트랜잭션
  • Redis 성능 개선
  • Cache Avalanche
  • 백엔드 아키텍처
  • Enum 기반 싱글톤
  • 캐시와 인덱스
  • 트랜잭션 관리
  • Double-Checked Locking
  • 스레드 생명주기
  • spring batch 5
  • Redis 캐시 전략
  • 트래픽 처리
  • 동시성처리
  • TTL 설계
  • Cache Penetration
  • Cache Aside
  • Eager Initialization
  • 백엔드 성능 튜닝
  • InterruptedException
  • Java Performance
  • Spring Batch
  • DB 인덱스 성능
  • 백엔드 성능 설계
  • 백엔드 성능
  • 캐시 성능 비교
more
«   2026/06   »
일 월 화 수 목 금 토
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함

Blog is powered by Tistory / Designed by Tistory

티스토리툴바