이런 상황이 개발장비에서 쉽게 발생한다.
예전에 이런 문제로 vsearch.jar 파일을 수정해서 다른 사이트에 적용했는데 그때 효과가 있었다.
그런데 k2.jar는 좀 다른 것 같아서 많이 테스트를 해봐야겠다.
"Thread-888" prio=5 tid=0x00c32cd0 nid=0x50a runnable [0xcc67e000..0xcc67fc28]
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:183)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:222)
at java.io.BufferedInputStream.read(BufferedInputStream.java:277)
- locked <0xe175f448> (a com.verity.xmit.XmitInputStream)
at com.verity.xmit.encrypt.DecryptedInputStream.read(Unknown Source)
- locked <0xe175f448> (a com.verity.xmit.XmitInputStream)
at java.io.FilterInputStream.read(FilterInputStream.java:90)
at com.verity.xmit.XmitInputStream.buildString(Unknown Source)
- locked <0xe175f448> (a com.verity.xmit.XmitInputStream)
at com.verity.xmit.XmitInputStream.readString(Unknown Source)
at com.verity.xmit.k2.UridiumInvoker.sendParameter(Unknown Source)
at com.verity.xmit.k2.UridiumInvoker.invokeXmitMethod(Unknown Source)
at com.verity.net.k2.K2Connection.ping(Unknown Source)
at com.verity.net.Connection.checkResource(Unknown Source)
at com.verity.resource.ResourcePool.testAndLockResource(Unknown Source)
- locked <0xe175edc8> (a com.verity.net.k2.K2Connection)
at com.verity.resource.ResourcePool.newResource(Unknown Source)
at com.verity.net.Connection.getConnection(Unknown Source)
at com.verity.net.Connection.getConnection(Unknown Source)
at com.verity.search.util.JSDispenser.getConnResource(Unknown Source)
- locked <0xe17567b0> (a com.verity.search.util.JSDispenser)
at com.verity.search.ProcessK2Operation.submit(Unknown Source)
at com.verity.search.VSearch.getPSearch(Unknown Source)
at com.verity.search.VSearch.getResult(Unknown Source)
at keris.edunet.search.service.search.impl.k2.K2CollectionSearchHelper.search(K2CollectionSearchHelper.java:150)
at keris.edunet.search.service.search.impl.SearchHelperThread.run(SearchHelperThread.java:89)
아래 read 함수에서 blocking되어서 모든 쓰레드가 hang에 걸린 것이다.
왜 그랬을까?
private synchronized String buildString(String s)
throws IOException
{
buf.reset();
_L2:
if(_currentBufPos != _bufSize)
break MISSING_BLOCK_LABEL_98;
_bufSize = read(_buffer);
if(_bufSize != -1)
break MISSING_BLOCK_LABEL_93;
if(buf.size() == 0)
return null;
return buf.toString(s);
UnsupportedEncodingException unsupportedencodingexception;
unsupportedencodingexception;
throw new RuntimeException("Unsupported encoding scheme - " + unsupportedencodingexception.getMessage());
_currentBufPos = 0;
int i;
i = _currentBufPos;
byte byte0;
do
byte0 = _buffer[_currentBufPos++];
while(byte0 != 0 && _currentBufPos < _bufSize);
if(byte0 != 0)
break MISSING_BLOCK_LABEL_213;
buf.write(_buffer, i, _currentBufPos - 1 - i);
if(buf.size() == 0)
return null;
return buf.toString(s);
UnsupportedEncodingException unsupportedencodingexception1;
unsupportedencodingexception1;
throw new RuntimeException("Unsupported encoding scheme - " + unsupportedencodingexception1.getMessage());
buf.write(_buffer, i, _currentBufPos - i);
if(true) goto _L2; else goto _L1
_L1:
}
'IT-Consultant' 카테고리의 다른 글
javascript 정규식 잘 정리해 놓은 곳 (0) | 2008.10.20 |
---|---|
javascript 정규식 잘 정리해 놓은 곳 (0) | 2008.10.20 |
개발장비에서 hang 현상 발생 (0) | 2008.10.17 |
AJAX cross-domain 때문에 Ajax Gateway를 만들었다. (0) | 2008.10.16 |
AJAX cross-domain 때문에 Ajax Gateway를 만들었다. (0) | 2008.10.16 |