Stalling environmentedge as is done here does not work. In various areas in
internals we expect the clock to advance.  This is not particular to AMv2.

As per Appy, we need HLC generally (it is almost there but needs some
concentrated effort to carry it the last few yards).

For AMv2, we have a single actor--the Master-- so we should be able to put
up simple checks that we have an advancing clock.

Please make an issue Sergey and we'll have a go at it.  Thanks for raising
this issue.

S

On Jan 2, 2018 5: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
>

Reply via email to