Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Calling DataLoader.addData(object) 4 times throws org.h2.jdbc.JdbcSQLException: Table "..." already exists #76

Open
ceefour opened this issue Jul 5, 2014 · 9 comments

Comments

@ceefour
Copy link

ceefour commented Jul 5, 2014

At least on my machine, calling 3 times work, 4 times it errors.
GridGain nodes = 3. If single node there's no error.
GridGain 6.1.9.

Code: https://github.com/ceefour/gggettingstarted/blob/toomanyremaps/src/main/java/com/hendyirawan/gggettingstarted/simple/LoadData.java

try (Grid grid = GridGain.start(
        System.getProperty("user.home") + "/gridgain-platform-os-6.1.9-nix/examples/config/example-cache.xml")) {
    try (GridDataLoader<Integer, YagoRule> loader = grid.dataLoader("partitioned")) {
        loader.addData(1, new YagoRule("a", "b", "c", "d", "e"));
        loader.addData(2, new YagoRule("a", "b", "c", "d", "e"));
        loader.addData(3, new YagoRule("a", "b", "c", "d", "e"));
        loader.addData(4, new YagoRule("a", "b", "c", "d", "e"));
        log.info("Loaded");
    }
}

Error:

        Caused by: org.h2.jdbc.JdbcSQLException: Table "YAGORULE" already exists; SQL statement:
CREATE TABLE "partitioned".YagoRule (_key INT NOT NULL,_val OTHER,_gg_val_str__ VARCHAR) engine "org.gridgain.grid.spi.indexing.h2.opt.GridH2Table$Engine" [42101-175]
            at org.h2.message.DbException.getJdbcSQLException(DbException.java:332)
            at org.h2.message.DbException.get(DbException.java:172)
            at org.h2.message.DbException.get(DbException.java:149)
            at org.h2.command.ddl.CreateTable.update(CreateTable.java:109)
            at org.h2.command.CommandContainer.update(CommandContainer.java:79)
            at org.h2.command.Command.executeUpdate(Command.java:253)
            at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:181)
            at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:156)
            at org.gridgain.grid.spi.indexing.h2.opt.GridH2Table$Engine.createTable(GridH2Table.java:704)
            at org.gridgain.grid.spi.indexing.h2.GridH2IndexingSpi.createTable(GridH2IndexingSpi.java:1167)
            at org.gridgain.grid.spi.indexing.h2.GridH2IndexingSpi.registerType(GridH2IndexingSpi.java:1025)
            ... 26 more
[19:29:21] GridGain node stopped OK [uptime=00:00:00:918]
Exception in thread "main" class org.gridgain.grid.GridException: Failed to finish operation (too many remaps): 32
For more information see:
    Troubleshooting:      http://bit.ly/GridGain-Troubleshooting
    Documentation Center: http://bit.ly/GridGain-Documentation

    at org.gridgain.grid.kernal.processors.dataload.GridDataLoaderImpl.load0(GridDataLoaderImpl.java:386)
    at org.gridgain.grid.kernal.processors.dataload.GridDataLoaderImpl.access$600(GridDataLoaderImpl.java:58)
    at org.gridgain.grid.kernal.processors.dataload.GridDataLoaderImpl$4.apply(GridDataLoaderImpl.java:467)
    at org.gridgain.grid.kernal.processors.dataload.GridDataLoaderImpl$4.apply(GridDataLoaderImpl.java:447)
    at org.gridgain.grid.util.future.GridFutureAdapter.notifyListener(GridFutureAdapter.java:384)
    at org.gridgain.grid.util.future.GridFutureAdapter.notifyListeners(GridFutureAdapter.java:371)
    at org.gridgain.grid.util.future.GridFutureAdapter.onDone(GridFutureAdapter.java:502)
    at org.gridgain.grid.util.future.GridFutureAdapter.onDone(GridFutureAdapter.java:472)
    at org.gridgain.grid.kernal.processors.dataload.GridDataLoaderImpl$Buffer.onResponse(GridDataLoaderImpl.java:1032)
    at org.gridgain.grid.kernal.processors.dataload.GridDataLoaderImpl$3.onMessage(GridDataLoaderImpl.java:201)
    at org.gridgain.grid.kernal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:654)
    at org.gridgain.grid.kernal.managers.communication.GridIoManager.access$1800(GridIoManager.java:62)
    at org.gridgain.grid.kernal.managers.communication.GridIoManager$6.body(GridIoManager.java:615)
    at org.gridgain.grid.util.worker.GridWorker.run(GridWorker.java:151)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
@ceefour
Copy link
Author

ceefour commented Jul 5, 2014

If only two nodes there's no error.

2-node configuration : (work well)

  1. in Eclipse
  2. ceefour@hendy:~/gridgain-platform-os-6.1.9-nix > bin/ggstart.sh ~/git/lumen-kb/cli/src/main/resources/id/ac/itb/ee/lskk/lumen/yago/yago.gridgain.xml

3-node configuration : (error)

  1. in Eclipse
  2. ceefour@hendy:~/gridgain-platform-os-6.1.9-nix > bin/ggstart.sh ~/git/lumen-kb/cli/src/main/resources/id/ac/itb/ee/lskk/lumen/yago/yago.gridgain.xml
  3. same as 2

@agoncharuk
Copy link
Contributor

Thanks for reporting. This issue is related to class peer-deployment when using dataLoader, we are looking into this.

As a workaround you can switch from dataLoader to cache API:

   try (Grid grid = GridGain.start("examples/config/example-cache.xml")) {
        GridCache<Object, Object> cache = grid.cache("partitioned");

        cache.put(1, new YagoRule("a", "b", "c", "d", "e"));
        cache.put(2, new YagoRule("a", "b", "c", "d", "e"));
        cache.put(3, new YagoRule("a", "b", "c", "d", "e"));
        cache.put(4, new YagoRule("a", "b", "c", "d", "e"));
    }

@lniskanen
Copy link

Hi,

I am using 6.6.3 and get similary error with dataLoader with two nodes (separate JVMs) but not with one. Is this fixed already ?

error class org.gridgain.grid.GridException: Failed to finish operation (too many remaps): 32

Cheers,
Lauri

@yzhdanov
Copy link
Contributor

Can you please configure "peerClassLoadingEnabled" to false in configuration and make all the classes available on all nodes and see if issue is reproducible?

Thanks!

@lniskanen
Copy link

I set it to false, but still getting the same exception.
http://www.gridgain.com/sdk/6.6.3/javadoc/org/gridgain/grid/GridConfiguration.html#DFLT_P2P_ENABLED

It's bit strange as the exceptions are raised for few first items but rest of the data gets uploaded quite allright.

@dsetrakyan
Copy link

Can you try setting it explicitly on GridConfiguration.setPeerClassLoadingEnabled(false)? Also, can you paste your full exception stack trace here? I want to make sure that it is absolutely identical exception.

@lniskanen
Copy link

Data load EXCEPTION: class org.gridgain.grid.GridException: Failed to finish operation (too many remaps): 32
For more information see:
Troubleshooting: http://bit.ly/GridGain-Troubleshooting
Documentation Center: http://bit.ly/GridGain-Documentation

org.gridgain.grid.kernal.processors.dataload.GridDataLoaderImpl.load0(GridDataLoaderImpl.java:427)
org.gridgain.grid.kernal.processors.dataload.GridDataLoaderImpl.access$600(GridDataLoaderImpl.java:62)
org.gridgain.grid.kernal.processors.dataload.GridDataLoaderImpl$4.apply(GridDataLoaderImpl.java:517)
org.gridgain.grid.kernal.processors.dataload.GridDataLoaderImpl$4.apply(GridDataLoaderImpl.java:488)
org.gridgain.grid.util.future.GridFutureAdapter.notifyListener(GridFutureAdapter.java:386)
org.gridgain.grid.util.future.GridFutureAdapter.notifyListeners(GridFutureAdapter.java:373)
org.gridgain.grid.util.future.GridFutureAdapter.onDone(GridFutureAdapter.java:504)
org.gridgain.grid.util.future.GridFutureAdapter.onDone(GridFutureAdapter.java:474)
org.gridgain.grid.kernal.processors.dataload.GridDataLoaderImpl$Buffer.onResponse(GridDataLoaderImpl.java:1106)
org.gridgain.grid.kernal.processors.dataload.GridDataLoaderImpl$3.onMessage(GridDataLoaderImpl.java:235)
org.gridgain.grid.kernal.managers.communication.GridIoManager.processRegularMessage0(GridIoManager.java:662)
org.gridgain.grid.kernal.managers.communication.GridIoManager.access$1900(GridIoManager.java:62)
org.gridgain.grid.kernal.managers.communication.GridIoManager$6.body(GridIoManager.java:623)
org.gridgain.grid.util.worker.GridWorker.run(GridWorker.java:151)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
java.lang.Thread.run(Thread.java:745)

@dsetrakyan
Copy link

We cannot reproduce this issue internally. It would help a great deal if you could provide a small reproducible example that we could test on. Would this be possible?

@lniskanen
Copy link

Sure thing. It will take a moment but I will drop you an email.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants