This commit is contained in:
biosvos
2026-08-07 17:38:18 +09:00
commit 873193a243
9613 changed files with 2755992 additions and 0 deletions
+587
View File
@@ -0,0 +1,587 @@
Revision 1501
-------------------
수정일 : 2020-07-20
수정자 : 유희곤
- CHG: fimngd 의 internal cache 생성을 위한 fd 감시 On/Off 항목 개선 (#33112)
- EXTRACT_FD_COUNT 설정에 따라 fd count 정보 추출 기능을 on/off 처리
- CHotContentInfoMap() 함수의 잘못된 변수 맵핑 버그 수정
Revision 1382
-------------------
수정일 : 2016-5-31
수정자 : 노경민
- CHG : 서비스 트래픽 통계 응답 기능 추가
- 통계 수신 서버 종료 시 일부 통계 누락 발생 경우를 방어하기 위해 추가됨
Revision 1342
-------------------
수정일 : 2016-4-5
수정자 : 노경민
- BUG : 네크워트 통계 프로세스 CPU 점유 문제
- 전송할 통계 없을 시 sleep 로직 누락으로 CPU 점유 상승함
Revision 1340
-------------------
수정일 : 2016-4-4
수정자 : 노경민
- BUG : 메세지큐 관련 비정상 종료
- thread safe 하지 못한 구조 때문임
- BUG : 설정한 메세지큐 개수만큼 생성되지 않음
- 시스템 한계 500이지만 130개만 생성됨
- 시스템 한계 만큼 생성될 수 있도록 생성함(프로세스 한계는 5000임)
- BUG : 비정상 종료 후 재생성 시 메세지큐 무한 생성
- 관련 클래스 clear되지 않는 객체 참조 때문임
- CHG : Hot Content 처리 로직 개선
- SystemV message queue pop 속도보다 Hot Content 처리 속도가 늦어 발생하는
메모리닉 같은 현상을 개선함
- BUG : 서비스 정보 갱신 프로세스 메모리 닉
- 서비스 별 수행 쿼리에 대한 clear 없이 쿼리 수행으로 메모리닉 발생함
- BUG : 네트워크 통계 누락 발생
- 타임 구간 체크 로직에서 누락 발생할 수 이는 구조였음
- BUG : 서비스 정보 갱신 누락 발생
- 타임 구간 체크 로직에서 누락 발생할 수 이는 구조였음
Revision 1331
-------------------
수정일 : 2016-1-21
수정자 : 노경민
- CHG : 정상 종료 시 자신의 상태를 OUT으로 설정함
- 서비스 모듈(HTTPD) 구동 시 종료 될 경우 이전 상태를 계속 사용하기 때문
이를 방지하기 위해서 추가함
- 비정상 종료(kill -9 or -KILL)에 대해서는 이 기능이 수행되지 않음
- 운영자의한 종료 방법은 매뉴얼로 절차화
- CHG : 불필요한 컬럼 참조 수정
- delete_yn 컬럼은 사용하지 않음
- CHG : 로그 수정
- 정확하지 않는 로그에 대해서 수정함
Revision 1328
-------------------
수정일 : 2016-1-19
수정자 : 노경민
- CHG : 다른 서비스에 대한 동일한 디렉토리 설정 시 무인증 설정되지 않음
- 내부 자료 구조에서 사용하는 key 중복으로 발생한 문제임
Revision 1257
-------------------
수정일 : 2015-10-06
수정자 : 김오종
- MOD : 로그 내용 정리
- 로그에 주요정보 포함되어 있어 조정 처리
- 로그에 소스 위치 정보 제외하여 로그용량을 줄임
- Account 상태정보 로깅 조정
Revision 1254, 1255
-------------------
수정일 : 2015-10-05
수정자 : 김오종
- BUG: RCDB와 비정상 연결종료 현상에 대한 예외처리
- Account, Anony 정보 갱신시 예외처리 버그 수정
- AccountUpdateThread.cpp, AnonyUpdateThread.cpp 소스 일부 수정처리
- ADD: 기존 서비스 중 삭제된 서비스에 대한 로깅 처리 추가
- Accout 정보 갱신시에 삭제된 서비스에 대한 로그 추가
Revision 1217
-------------------
수정일 : 2015-09-09
수정자 : 김오종
- CHG: Version 3.5 변경
- fimngd의 역할이 아래와 같이 크게 조정됨에 따라 버전을 변경한다.
- 기존 openda-listener의 shared memory 관련기능 통합
- rcts의 rc_mond 데몬과 연계하여 타FHS의 상태 정보를 sared memory에 갱신처리한다.
- rcts의 rc_sscd 데몬으로 트래픽 및 스토리지 통계 데이터를 전달 한다.
- account, 무인증 폴더 정보등을 RCDB로부터 가져와 shared memory에 업데이트 한다.
- 기존 fimngd의 기능인 internal cache 기능은 그대로 포함한다.
- 기존 fimngd의 기능인 log 정리 기능은 logmngd로 대체 하도록 한다.
- *주의* fdcnt.sh가 같이 배포되어야 한다.
Revision 1118
-------------------
수정일 : 2014-11-11
수정자 : 김오종
- CHG: RCDB 연결을 필요시마다 수행 하도록 처리
- 서비스 폴더 생성시 RCDB 조회 할 때 필요시마다 connect 처리
- CHG: log 오타 수정
- "Caceh Replication Request Queue" --> "Internal Cache Request Queue" 로 변경
Revision 1068
-------------------
수정일 : 2014-08-27
수정자 : 김오종
- BUG: rcdb 접속시 password 정보 누락
- password 정보 추가
Revision 1014
-------------------
수정일 : 2014-07-24
수정자 : 김오종
- DEL: 테스트 소스 제거
- 서비스 폴더 생성 테스트 소스 제거
Revision 1011
-------------------
수정일 : 2014-07-23
수정자 : 김오종
- CHG: revision 변경
Revision 1009
-------------------
수정일 : 2014-07-23
수정자 : 김오종
- CHG: 구동 주기 및 로그 메세지 변경
- ServicePathCreaterThread.cpp 내의 로그 메세지 조정
- 구동 주기를 3min 으로 조정
Revision 1007
-------------------
수정일 : 2014-07-22
수정자 : 김오종
- DEL: UDP 통신을 통한 Internal Cache 제거
- MsgCacheRequest.h MsgCacheRequest.cpp 제거
- DEL: Transfer Log 전송 기능 제거
- ServiceInfoUpdaterThread.h ServiceInfoUpdaterThread.cpp 제거
- TransferLogSender.h - TransferLogSender.cpp 제거
- 해당 기능과 연관된 config 파일의 관련항목 제거
- ADD: 서비스 개퉁 후 서비스 디렉토리 생성 기능 추가
- ServicePathCreaterThread.h ServicePathCreaterThread.cpp 추가
- CHG: TCP/IP 통신을 통한 Internal Cache 추가
- ./coponent/BaseSocket.h ./coponent/BaseSocket.cpp 추가
- CacheGeneratorTrhead 클래스 수정
- rc_rmcd에 소켓연결을 위한 host,port 정보 추가
- CHG: 아파치 로그 추가 전송 및 로그파일 삭제 기능 변경
- 기존 아파치 로그전송은 작업일 하루 전만 전송 후 제거
- 작업일 최근 열흘을 대상으로 미전송 로그 전송 처리
- 아파치 로그 최근 열흘이전의 로그파일에 대한 삭제 처리
- LogFileCleaner, ApacheLogSender 클래스 변경
- CHG: 버전 변경에 따른 버전 정보 조정
- Makefile 상의 버전 정보를 3.3.0.x -> 3.4.0.x 로 변경
Revision 0963
-------------------
수정일 : 2014-03-10
수정자 : 김오종
- DEL: Internal Cache 발현 조건 중 Disk Busy 상황을 사용하지 않기로 결정됨에 따라 관련기능을 제거 처리 함
- geom, devstat 라이브러리 제거
- DiskIOstatCollector.h DiskIOstatCollector.cpp 파일 삭제
- work.cpp, HotContentDetectorThread.cpp 및 ProcessStatus class 부분 수정
- CHG: FreeBSD 10.X까지 지원하기 위해서 컴파일러 optimizer 옵션 조절
- Makefile 상에서 -o option 레벨을 3에서 0(zero)로 변경 처리함
Revision 0839
-------------------
수정일 : 2012-11-15
수정자 : 노경민
- BUG: 메모리 급증 현상 완화
- FHS 부하가 발생 시 fstat 응답 지연 확인되었으며, 이로 인해서 메모리 증가 확인됨
- 기존 불필요한 로직 제거 및 fstat 실행 최적화
- BUG: 아파치 로그 전송 중 비정상 종료 현상
- 구동 시간 대에서 구동을 위한 sleep 시간을 구하는 로직에서 제로 나누는 경우 때문임
- CHG: 로그 객체 가변 인자 체크 기능 추가
- 일부 로그 중 인자 누락으로 해당 부분을 체크하기 위해서 추가됨
- CHG: 로그 관련 컴파일 warning 제거
- 변경된 로그 객체로 검파일 시 발생한 warning 제거
- CHG: 브로드 캐스트 주소 획득 변경
- 주소 획득 시 NULL 리턴되는 경우 존재함(소켓 사용 후 close 호출하지 않아서 발생)
- 주소 획득 실패에 대한 로직 미흡했던 부분 변경함
- CHG: unlink() 함수에 대한 오류 처리 부분 수정
- unlink() 함수 리턴 값에 -1 일때 해당 에러가 출력되도록 수정함
- CHG: Hot Content 감지 디폴트 설정 변경
- FD_COUNT : 3 -> 10
- MIN_DISKIO_PERCENT : 50 -> 5
- CHG: 시스템 큐 Pop 로직 변경
- 시스템 큐에서 꺼낸 값을 바로 다운로드 큐에서 사용하던 구조를 변경함
- NEW: 주요 큐 사이즈 출력 기능 추가
- 다운로드 큐, 캐쉬 요청 큐, 로그 전성 큐를 매 2초마다 출력
- DEL: 코어 시그널 처리 로직 삭제
- 서비스 1팀 시그널 정책에 따른 로직 삭제
Revision 0755
-------------------
수정일 : 2012-05-03
수정자 : 김오종
- BUG: GTL 로 전송정보 전달시 tran_id 누락 현상
- TransferLogData.cpp 의 SetTranId() 수정
Revision 0731
-------------------
수정일 : 2012-04-05
수정자 : 김오종
- CHG: src/main.cpp 의 Daemon 생성 관련 코드 수정
- MakeDaemon() 함수상에 Daemon 생성 관련 stdin, stdout, stderr Close 처리 코드 추가 ( 원격 기동시 CTRL+C 처리 불편에 따른 수정)
Revision 0704
-------------------
수정일 : 2012-03-06
수정자 : 김오종
CHG: transfer_log_send_yn 정보 확인 주기 조정 6sec=>300sec 로 조정
- 신속성을 요하는 정보가 아니므로 RCDB의 부하를 줄이기 위한 조치.
CHG: ServiceInfoUpdaterThread 클래스 내의 RCDB 세션 관리방법 변경
- 본 클래스에서 RCDB 세션을 정상적일경우 재사용 할 수 있도록 변경 처리
- ServiceInfoUpdaterThread.cpp, ServiceInfoUpdaterThread.h 수정
Revision 0677
-------------------
수정일 : 2012-02-09
수정자 : 김오종
BUG: fimngd의 main.cpp 에 log객채 생성 파라메터 중 log path에 대한 인자값이 하드코딩되어있는 것이 확인 됨.
- main.cpp 의 소스 수정
추가 : 디버그 메세지 추가
- ProcessStatus.cpp 에 디버그 메세지 보강
Revision 0643
-------------------
수정일 : 2011-12-29
수정자 : 김오종
ADD: 신규 fimngd 소스를 등록한다. 아래 기능을 포함하고 있다.
fimngd : Hot Content 감지 및 복제처리 기능
rctl : opendav를 통한 외부 요청내역을 gtl로 실시간 전송하는 기능
log_rotator : httpd 의 access 로그와 error 로그를 로그백업 서버로 전송하는 기능.
데몬 형태가 아님 /etc/crontab 에 등록되어 구동.
FHS 내의 각 Application 의 로그 정리 기능을 신규로 포함 한다.
Revision 0641
-------------------
수정일 : 2011-12-29
수정자 : 김오종
DEL: 신규 fimngd를 등록하기 위한 사전작업으로 기존 fimngd 소스를 삭제 처리 함.
Revision 0556
-------------------
수정일 : 2011-05-30
수정자 : 장희준
CHG: fimngd.conf의 [COMMON] 섹션의 LOG_LEVEL 값만 사용하던 것을
[fimngd] 섹션의 LOG_LEVEL 값이 없는 경우에만 [COMMON] 세견의
LOG_LEVEL을 사용하도록 수정.
Revision 478
BUG : 메모리 누수 수정
아래 코드 중 root->firstChild->path = (char*) malloc( pathSize + 1 ); 에서 메모리 누수 발생.
root->firstChild->path != NULL 인 경우 root->firstChild->path의 메모리를 해제하도록 수정.
수정 전 :
OpenFileTreeNode*
COpenFileTree::GetHotContentTree( std::string path, unsigned int count )
{
.
.
/// 루트 노드의 child가 1이라는 말은 컨텐츠가 /user2/dav_storage 파티션에 있다는 말이다.
/// 이 경우 root->firstChild->path에는 /user2/dav_stroage 디렉토리내의
/// 어느 한 디렉토리의 이름만 가지게 되는데 이렇게 되면
/// /user2/dav_stroage 내의 모든 디렉토리에 대한 검색을 할 수 없게 된다.
/// 그래서, 이 경우는 root->firstChild->path = root->path로 설정함으로
/// /user2/dav_stroage 내의 모든 디렉토리에 대한 검색을 하도록 한다.
if( GetChildCount( root ) == 1 )
{
if( root->path != NULL )
{
int pathSize = strlen( root->path );
root->firstChild->path = (char*) malloc( pathSize + 1 ); --> 메모리 누수 발생
memset( root->firstChild->path, 0, pathSize + 1 );
strncpy( root->firstChild->path, root->path, pathSize );
}
}
return root;
}
수정 후 :
OpenFileTreeNode*
COpenFileTree::GetHotContentTree( std::string path, unsigned int count )
{
.
.
/// 루트 노드의 child가 1이라는 말은 컨텐츠가 /user2/dav_storage 파티션에 있다는 말이다.
/// 이 경우 root->firstChild->path에는 /user2/dav_stroage 디렉토리내의
/// 어느 한 디렉토리의 이름만 가지게 되는데 이렇게 되면
/// /user2/dav_stroage 내의 모든 디렉토리에 대한 검색을 할 수 없게 된다.
/// 그래서, 이 경우는 root->firstChild->path = root->path로 설정함으로
/// /user2/dav_stroage 내의 모든 디렉토리에 대한 검색을 하도록 한다.
if( GetChildCount( root ) == 1 )
{
if( root->firstChild == NULL )
{
TRACE( LOG_DEBUG, "end" );
return root;
}
if( root->path == NULL )
{
TRACE( LOG_DEBUG, "end" );
return root;
}
if( root->firstChild->path != NULL )
{
free( root->firstChild->path );
root->firstChild->path = NULL;
}
int pathSize = strlen( root->path );
root->firstChild->path = (char*) malloc( pathSize + 1 );
memset( root->firstChild->path, 0, pathSize + 1 );
strncpy( root->firstChild->path, root->path, pathSize );
}
return root;
}
Revision 476
CHG : fstat 결과에서 프로세스가 httpd인 것만 cache 요청 대상이 되게 하고
pid, fd, inode가 동일한 경우는 카운트를 증가 시키지 않도록 수정.
내부 테스트용으로 프로세스 httpd 외에 명령 인자로 특정 프로세스를 지정할 수 있게 수정.
: 변경 코드
- OpenFileTree.c
AddToOpenFileTree(), IsAllowedProcessName(), AddLeafNode()
typedef struct OPEN_FILE_TREE_NODE
BUG : 메모리 누수 수정
fstat.c의 free_devs()을 아래와 같이 수정
------- 기존 코드 ---------------------
free_devs()
{
if( devs == NULL )
{
return;
}
DEVS* d = devs;;
if( d != NULL )
{
free( d );
devs = NULL;
}
}
------- 수정 코드 ---------------------
free_devs()
{
if( devs == NULL )
{
return;
}
DEVS* next;
DEVS* d = devs;;
while( d != NULL )
{
next = d->next;
free( d );
d = next;
}
devs = NULL;
}
Revision 0462
-----------------------------
수정일 : 2010-12-28
수정자 : 장희준
Revision 461에서 수정일 및 수정자 정보가 빠져서 462로 다시 Revision 함.
Revision 0461
-------------------
수정일 : 2010-12-28
수정자 : 장희준
CHG: fhs.conf의 [fimngd] 섹션에 RCID 필드 추가
- rc_rmcd로 캐시 요청시 RCID 값을 전달하기 위해 추가 함.
CHG: fhs.conf의 [fimngd] 섹션에 FD_COUNT 필드 추가
- 기존에 소스 코드에 fix 되어 있던 값을 설정 파일에서 설정 하도록 하기 위함.
- fhs.conf FD_COUNT가 설정되지 않으면 소스 코드에서 기본 값으로 5를 사용 함.
CHG: fstat.h fstat.c에 대한 FreeBSD 32bit, 64bit 통합 작업.
- FreeBSD 64bit에서 fstat.c을 컴파일 하기 위해서는 Makefile에 __FREEBSD_64__을 define 해야 함.
CHG: fstat.h에 정의되어 있고 fstat.c에 구현되어 있던 리스트 자료구조 fs_list 제거
ADD: C++ 코드에서 OpenFileTreeNode을 사용하기 위한 래퍼 클래스 COpenFileTree 추가
ADD: 제거된 fs_list을 대체하는 트리 자료구조 OpenFileTreeNode을 TreeForFstat.h에 정의하고
TreeForFstat.c에 구현함으로 fstat.c와 자료구조를 분리 시킴.
CHG: 로깅 코드 변경
- 기존에는 로깅을 하는 모든 클래스는 생성자에서 Logger 객체의 포인터를 인자로 받아야 하고
.cpp 파일에 아래와 같은 로그 처리를 위한 매크로를 정의 해야 함.
예) #define CLASS_NAME "CCacheRequestManager"
#define DEBUG_LOG( format, ...) \
if(m_pLogger != NULL ) \
m_pLogger->Write( LOG_DEBUG,"[%s::%s()] " format, CLASS_NAME,__func__, ##__VA_ARGS__ )
- 변경된 로깅 코드에는 생성자에서 Logger 객체를 받지 않아도 되고 .cpp 파일에 매크로를 정의대신 Trace.h 추가 해야 함.
예) #include "Trace.h"
- 로깅 코드와 로그 형식 변경
: 기존
DEBUG_LOG("log string") ---> [2010-12-23 16:00:48] [DBG] [Parent_Process::main()] log string
: 변경
TRACE( LOG_DEBUG, "log string") ---> [2010-12-28 02:25:42] [DBG] log string [Parent_Process::main()]
_TRACE( LOG_DEBUG, "log string") ---> [2010-12-28 02:25:42] [DBG] log string
CHG: 설정 파일 처리 로직 변경
- 기존에는 설정 파일에 매핑되는 구조체 st_config를 fimngd.h에 정의하고 GetConfg.cpp에 C 코드 형태로
설정 파일의 값을 로딩하는 구조로 데이터와 구현이 분리되어 있음.
- C 코드 형태의 g_envConfig를 main.cpp에 정의해서 사용함.
- 변경 후에는 싱글톤 클래스 CFhsConfig를 추가함으로 전역 변수를 사용하는 불편함을 제거했음.
ADD: 로깅을 편리하게 하기 위해서 Logger 래퍼 싱글톤 클래스 Trace.h 추가
- Trace.h 추가로 전역 변수 g_Logger을 삭제하고 모든 클래스에서 멤버 변수 m_pLogger를 삭제하고 생성자에서 인자 Logger*도 삭제함.
CHG: 캐시 요청에 필요한 데이터 맵 관리를 기존에는 CCacheRequestManager가 담당했는데 이 역할을 CDataRequestMap 클래스로 이관하고
CCacheRequestManager가 수행하던 데이터 비교 역할을 CDataRequestInfo 클래스로 이관함.
ADD: CDataRequestMap 추가.
CCacheRequestManager가 직접 관리하던 CDataRequestInfo 맵의 역할을 분리하기 위해 추가된 클래스.
ADD: 캐시 요청 메시지 인코딩/디코딩 역할을 하는 CMsgCacheRequest 추가
Revision 0458
-------------------
수정일 : 2010-12-13
수정자 : 장희준
- BUG: array overflow 버그 수정
- CCacheRequestManager::SendRequest()에서 아래 코드 수정
//cm.hostname[HOSTNAME_LEN] = '\0';
cm.hostname[ HOSTNAME_LEN - 1 ] = '\0';
- CHG: gcc 4.4.5에서 컴파일 오류 수정
- Config.h에서 아래 수정
//void SetDelimiter( string& key, string& value = CONFIG_DEFAULT_VALUE_DELIMITER )
void SetDelimiter( string& key, string value = CONFIG_DEFAULT_VALUE_DELIMITER )
- Logger.cpp에 #include <string.h> 추가
- CHG: fhs.conf 관련 수정
- fhs.conf에 INTERNAL_NIC_NAME이 [COMMON] 섹션과 [fimngd] 섹션에서 중복 사용되고 있는데
[COMMON] 섹션에서만 사용하도록 변경.
- [fimngd] 섹션의 CACHE_CHECK_INTERVAL 필드명을 CACHE_CHECK_MAX_INTERVAL로 변경하고 이에 따른
소스 코드 수정
Revision 0327
-------------------
수정일 : 2010-08-03
수정자 : 김오종
- DEL: lib내의 Makefile 수정
- CBasesocket.o 제거
Revision 0326
-------------------
수정일 : 2010-08-03
수정자 : 김오종
- DEL: CBasesocket class 제거
- 사용하지 않는 부분이 포함되어 있어 제거 함.
Revision 0325
-------------------
수정일 : 2010-08-03
수정자 : 김오종
- BUG: 멤버 변수 속성 변경.
- 변수를 private에서 public으로 변경.
CCacheTargetFinder.h 의 m_nCachedContentCnt.
Revision 0324
-------------------
수정일 : 2010-08-03
수정자 : 김오종
- ADD: 캐시 대상파일 추출 주기 로직 변경
- 기존에 설정한 주가 값만 사용 했으나, 상황에 따라 아래처럼 조정한다.
: 대상파일의 개수가 2개 이하일때는 설정한 주기 값 사용.
: 대상파일의 수가 10개를 초과했을 경우에는 2sec의 주기 값 사용.
: 대상파일의 수가 2개 초과 10개 미만일때는 15sec의 주기 값 사용.
Revision 0323
-------------------
수정일 : 2010-08-02
수정자 : 김오종
- NEW: SVN 신규 등록
- 기존 svn://211.38.137.33/work/trunk/fimngd 에 존재하는 개발 완료 소스를 SVN 에 정식버전으로 등록함.
- 본 버전은 개발 및 성능 테스트를 완료한 버전으로 기존 cma의 기능을 보완한 것이다. 기본 기능은 아래와 같다.
: fhs의 mount경로 내의 file discription 수(5개이상)를 기반으로 cache Type(is_cached = 'Y')의 복제본을 증가 할지를 판단
후 증가 하는 기능을 포함하고 있다.(기존 cma의 기능)
: file discription 수가 5개이상을 유지 할 경우 확인주가때 마다 반복적으로 복제본수가 증가하는 현상을 개선.
- 단 현재 버전은 FreeBSD 5.4, 6.2 버전상에서만 테스트되었으며 다른 OS 로 포팅 처리시 코드를 재확인해야 함.
- NEW: History 저장을 위한 Changelog.txt 파일 추가
- 앞으로 각 작업에 대한 로그를 확인하도록 Changelog.txt 파일을 추가