[ 
https://issues.apache.org/jira/browse/IMPALA-9136?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17053854#comment-17053854
 ] 

Quanlong Huang commented on IMPALA-9136:
----------------------------------------

For guys who want to fix this in old versions, here is the required change: 
https://github.com/apache/impala/commit/0a082174c5717018971a9b2462306ca26494d6d0#diff-0a3c3f0986726c3c190ad8f127251f87

It simplifies Table#getUniqueName() so it doesn't require the table lock 
anymore.

> IllegalStateException in calling Table.toThrift() without holding the table 
> lock
> --------------------------------------------------------------------------------
>
>                 Key: IMPALA-9136
>                 URL: https://issues.apache.org/jira/browse/IMPALA-9136
>             Project: IMPALA
>          Issue Type: Bug
>          Components: Catalog
>    Affects Versions: Impala 3.2.0, Impala 3.3.0
>            Reporter: Quanlong Huang
>            Assignee: Quanlong Huang
>            Priority: Major
>             Fix For: Impala 3.4.0
>
>
> In CatalogServiceCatalog.addTableToCatalogDelta(), we are calling 
> tbl.getUniqueName() without holding the table lock, which could finally 
> results in an IllegalStateException:
> {code}
> I1107 17:34:27.058262  6381 CatalogServiceCatalog.java:1118] Table 
> test_ddls_with_invalidate_metadata_sync_ddl_f41e97e6.test_14_part is skipping 
> topic update 423
> I1107 17:34:27.058709  6381 catalog-server.cc:641] Collected update: 
> 1:TABLE:test_ddls_with_invalidate_metadata_sync_ddl_f41e97e6.test_15_part, 
> version=422, original size=2299, compressed size=1219
> I1107 17:34:27.061233  6381 jni-util.cc:288] java.lang.IllegalStateException: 
> Table.toThrift() called without holding the table lock: 
> test_ddls_with_invalidate_metadata_sync_ddl_f41e97e6.test_12_part 
> org.apache.impala.catalog.HdfsTable
>         at org.apache.impala.catalog.Table.toThrift(Table.java:448)
>         at org.apache.impala.catalog.HdfsTable.toThrift(HdfsTable.java:1408)
>         at org.apache.impala.catalog.Table.setTCatalogObject(Table.java:487)
>         at 
> org.apache.impala.catalog.CatalogObjectImpl.toTCatalogObject(CatalogObjectImpl.java:51)
>         at 
> org.apache.impala.catalog.CatalogObjectImpl.getUniqueName(CatalogObjectImpl.java:45)
>         at 
> org.apache.impala.catalog.CatalogServiceCatalog.addTableToCatalogDelta(CatalogServiceCatalog.java:1084)
>         at 
> org.apache.impala.catalog.CatalogServiceCatalog.addDatabaseToCatalogDelta(CatalogServiceCatalog.java:961)
>         at 
> org.apache.impala.catalog.CatalogServiceCatalog.getCatalogDelta(CatalogServiceCatalog.java:710)
>         at 
> org.apache.impala.service.JniCatalog.getCatalogDelta(JniCatalog.java:148)
> I1107 17:34:27.129712  7356 HdfsTable.java:934] Reloading metadata for all 
> partition(s) of test_ddls_with_invalidate_metadata_sync_ddl_f41e97e6.test_16 
> (INSERT)
> I1107 17:34:27.132397  7356 HdfsTable.java:630] Loaded file and block 
> metadata for test_ddls_with_invalidate_metadata_sync_ddl_f41e97e6.test_16 
> partitions:
> I1107 17:34:27.132424  7356 HdfsTable.java:965] Incrementally loaded table 
> metadata for: test_ddls_with_invalidate_metadata_sync_ddl_f41e97e6.test_16
> I1107 17:34:27.157740  6381 status.cc:126] IllegalStateException: 
> Table.toThrift() called without holding the table lock: 
> test_ddls_with_invalidate_metadata_sync_ddl_f41e97e6.test_12_part 
> org.apache.impala.catalog.HdfsTable
>     @          0x1c5ae50  impala::Status::Status()
>     @          0x24f7ad2  impala::JniUtil::GetJniExceptionMsg()
>     @          0x1c414af  impala::JniCall::Call<>()
>     @          0x1c3fe27  impala::JniUtil::CallJniMethod<>()
>     @          0x1c3e06d  impala::Catalog::GetCatalogDelta()
>     @          0x1c14344  impala::CatalogServer::GatherCatalogUpdatesThread()
>     @          0x1c2e14e  boost::_mfi::mf0<>::operator()()
>     @          0x1c2da93  boost::_bi::list1<>::operator()<>()
>     @          0x1c2d4a6  boost::_bi::bind_t<>::operator()()
>     @          0x1c2cd91  
> boost::detail::function::void_function_obj_invoker0<>::invoke()
>     @          0x1ffb6e9  boost::function0<>::operator()()
>     @          0x2573dea  impala::Thread::SuperviseThread()
>     @          0x257c16e  boost::_bi::list5<>::operator()<>()
>     @          0x257c092  boost::_bi::bind_t<>::operator()()
>     @          0x257c055  boost::detail::thread_data<>::run()
>     @          0x3d61599  thread_proxy
>     @     0x7f1ce6ca46b9  start_thread
>     @     0x7f1ce343f41c  clone
> E1107 17:34:27.157758  6381 catalog-server.cc:379] IllegalStateException: 
> Table.toThrift() called without holding the table lock: 
> test_ddls_with_invalidate_metadata_sync_ddl_f41e97e6.test_12_part 
> org.apache.impala.catalog.HdfsTable
> I1107 17:34:27.158537  6389 catalog-server.cc:337] A catalog update with 4 
> entries is assembled. Catalog version: 419 Last sent catalog version: 419
> {code}
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-all-unsubscr...@impala.apache.org
For additional commands, e-mail: issues-all-h...@impala.apache.org

Reply via email to