Waiting for table metadata lock 재현하기 


이 때 의도적으로 지연해야 하기 sleep 함수를 사용한다.

https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html#function_sleep


* A session - 일반 계정


start transaction;

select * from target_ids_job_execution where sleep(1000)=0;


* B session - root


MariaDB [test]> ALTER TABLE target_ids_job_execution  add column xxx char(32) default 'xyz';

행(hang)


* C Session - root

show processlist; 



sleep을 포함한 sql 쿼리가 끝나도 여전히 alter table은 hang 걸려 있다. lock에 잡혀 있다. 



따라서 KILL 6을 실행해 metadata lock에 걸려 있는 쿼리를 종료시킨다.


show processlist를 실행하면 다음과 같은 결과가 나타난다.






Posted by 김용환 '김용환'

댓글을 달아 주세요

jenkins 장비의 플러그인 목록을 형상관리 안하는 경우가 많다.. 플러그인 설정이 있어도 플러그인이 없으면 복구 할 수 없다. 


jenkins 장비의 플러그인 목록을 보려면 http://장비명:8080/script에 다음 커맨드를 실행한다.


Jenkins.instance.pluginManager.plugins.each{

  plugin -> 

    println ("${plugin.getShortName()}: ${plugin.getVersion()}")

}


결과는 다음과 같다.


Git plugin (git): 3.9.1
JavaScript GUI Lib: ACE Editor bundle plugin (ace-editor): 1.1
SCM Sync Configuration Plugin (scm-sync-configuration): 0.0.10
Pipeline: Job (workflow-job): 2.24

..


jenkins master를 제대로 복구할 때, 

플러그인 이름과 버전, jenkins 버전.. 이 매우 중요하다.

Posted by 김용환 '김용환'

댓글을 달아 주세요