I created a plugin that implements GridSecurityProcessor because our
implementation requries very specialized authorization; but now, whenever I
try to run a SQL SELECT query on Ignite over JDBC,
`AuthorizationProcessor.authenticate(..)` is run many times, like this:

```
Running AuthorizationPluginProvider.createCacheProvider(..)
Running AuthorizationPluginProvider.createComponent(..)
Running AuthorizationPluginProvider.createCacheProvider(..)
Running AuthorizationPluginProvider.createComponent(..)
// Initial setup completed
Running AuthorizationProcessor.enabled()
Running AuthorizationProcessor.enabled()
Running AuthorizationProcessor.authenticate(..)
Username is: ignite
Running AuthorizationProcessor.enabled()
Running AuthorizationProcessor.authenticate(..)
Username is: ignite
Running AuthorizationProcessor.enabled()
Running AuthorizationProcessor.authenticate(..)
Username is: ignite
Running AuthorizationProcessor.enabled()
Running AuthorizationProcessor.authenticate(..)
Username is: ignite
Running AuthorizationProcessor.enabled()
Running AuthorizationProcessor.authenticate(..)
Username is: ignite
Running AuthorizationProcessor.enabled()
Running AuthorizationProcessor.authenticate(..)
Username is: ignite
Running AuthorizationProcessor.enabled()
Running AuthorizationProcessor.authenticate(..)
Username is: ignite
Running AuthorizationProcessor.enabled()
Running AuthorizationProcessor.authenticate(..)
Username is: ignite
Running AuthorizationProcessor.enabled()
Running AuthorizationProcessor.authenticate(..)
Username is: ignite
Running AuthorizationProcessor.enabled()
Running AuthorizationProcessor.authenticate(..)
Username is: ignite
Running AuthorizationProcessor.enabled()
Running AuthorizationProcessor.authenticate(..)
Username is: ignite
Running AuthorizationProcessor.enabled()
Running AuthorizationProcessor.authenticate(..)
Username is: ignite
Running AuthorizationProcessor.enabled()
Running AuthorizationProcessor.authenticate(..)
Username is: ignite
Running AuthorizationProcessor.enabled()
Running AuthorizationProcessor.authenticate(..)
Username is: ignite
Running AuthorizationProcessor.enabled()
Running AuthorizationProcessor.authenticate(..)
Username is: ignite
Running AuthorizationProcessor.enabled()
Running AuthorizationProcessor.authenticate(..)
Username is: ignite
Running AuthorizationProcessor.enabled()
Running AuthorizationProcessor.authenticate(..)
Username is: ignite
Running AuthorizationProcessor.enabled()
Running AuthorizationProcessor.authenticate(..)
Username is: ignite
```

and then my JDBC client (using DBeaver as my client with a JDBC Ignite
driver) gives me this error:

```org.jkiss.dbeaver.model.sql.DBSQLException: SQL Error [08006]: Failed to
communicate with Ignite cluster.
at
org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.executeStatement(JDBCStatementImpl.java:134)
at
org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.executeStatement(SQLQueryJob.java:488)
at
org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.lambda$0(SQLQueryJob.java:425)
at
org.jkiss.dbeaver.model.exec.DBExecUtils.tryExecuteRecover(DBExecUtils.java:170)
at
org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.executeSingleQuery(SQLQueryJob.java:417)
at
org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.extractData(SQLQueryJob.java:775)
at
org.jkiss.dbeaver.ui.editors.sql.SQLEditor$QueryResultsContainer.readData(SQLEditor.java:2914)
at
org.jkiss.dbeaver.ui.controls.resultset.ResultSetJobDataRead.lambda$0(ResultSetJobDataRead.java:111)
at
org.jkiss.dbeaver.model.exec.DBExecUtils.tryExecuteRecover(DBExecUtils.java:170)
at
org.jkiss.dbeaver.ui.controls.resultset.ResultSetJobDataRead.run(ResultSetJobDataRead.java:109)
at
org.jkiss.dbeaver.ui.controls.resultset.ResultSetViewer$17.run(ResultSetViewer.java:3423)
at org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:103)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: java.sql.SQLException: Failed to communicate with Ignite cluster.
at
org.apache.ignite.internal.jdbc.thin.JdbcThinConnection.sendRequest(JdbcThinConnection.java:916)
at
org.apache.ignite.internal.jdbc.thin.JdbcThinStatement.execute0(JdbcThinStatement.java:231)
at
org.apache.ignite.internal.jdbc.thin.JdbcThinStatement.execute(JdbcThinStatement.java:559)
at
org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.execute(JDBCStatementImpl.java:338)
at
org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.executeStatement(JDBCStatementImpl.java:131)
... 12 more
Caused by: class org.apache.ignite.binary.BinaryObjectException: Not enough
data to read the value [position=20, requiredBytes=1, remainingBytes=0]
at
org.apache.ignite.internal.binary.streams.BinaryAbstractInputStream.ensureEnoughData(BinaryAbstractInputStream.java:305)
at
org.apache.ignite.internal.binary.streams.BinaryAbstractInputStream.readByte(BinaryAbstractInputStream.java:35)
at
org.apache.ignite.internal.binary.streams.BinaryAbstractInputStream.readBoolean(BinaryAbstractInputStream.java:53)
at
org.apache.ignite.internal.binary.BinaryReaderExImpl.readBoolean(BinaryReaderExImpl.java:548)
at
org.apache.ignite.internal.processors.odbc.jdbc.JdbcQueryExecuteResult.readBinary(JdbcQueryExecuteResult.java:167)
at
org.apache.ignite.internal.processors.odbc.jdbc.JdbcResult.readResult(JdbcResult.java:207)
at
org.apache.ignite.internal.processors.odbc.jdbc.JdbcResponse.readBinary(JdbcResponse.java:153)
at
org.apache.ignite.internal.jdbc.thin.JdbcThinTcpIo.readResponse(JdbcThinTcpIo.java:451)
at
org.apache.ignite.internal.jdbc.thin.JdbcThinTcpIo.sendRequest(JdbcThinTcpIo.java:423)
at
org.apache.ignite.internal.jdbc.thin.JdbcThinConnection.sendRequest(JdbcThinConnection.java:890)
... 16 more
```

What might cause this?

Devin G. Bost

Reply via email to