Hi Sergey, Interesting test and find. Makes total sense too. However, in real world case, any put in meta table itself will take more than a ms, and then we have lot of Procedure framework and other logic in between meta accesses which would make this scenarios impossible. Specifically, there a lot of processing in between adding rows from CreateTableProcedure and trying to access it in children AssignProcedure(s).
-- Apy On Tue, Jan 2, 2018 at 3:58 PM, Sergey Soldatov <sergeysolda...@gmail.com> wrote: > Hi, > Not sure whether we may consider that as a bug, but I found an interesting > dependency of AM2 on clock advancing. A simple operation such as create > table is unable to perform with the same current_time value: > > public void testCreateTable() throws IOException { > EnvironmentEdgeManager.injectEdge(new EnvironmentEdge() { > volatile int curTime = 1000; > > @Override > public long currentTime() { > > return curTime; > } > }); > final TableName tableName = TableName.valueOf("test"); > TEST_UTIL.createTable(tableName, HConstants.CATALOG_FAMILY).close(); > } > > and fails with a TableNotFound exception. The reason is that between > transitions we get table information from meta using Get with the exclusive > current timestamp. Could it be a potential problem (i.e. the system capable > to execute all that transition stuff in less than 1 ms)? > > Thanks, > Sergey > -- -- Appy