Ignite pod keeps crashing and failed to recover the node

2019-08-20 Thread radha jai
Ignite has been deployed on the kubernets , there are 3 replicas of server
pod. The pods were up and running fine for 9 days.  We have created 180
inventory tables and 204 transactional tables. The data has been
inserted using the PyIgnite client using the cache.put() method.  This is a
very slow operation because PyIgnite is very slow.  Each insert is
committed one at a time, so it is not able to do bulk-style inserts. The
PyIgnite was inserting about 20 of the inventory tables simultaneously (20
different threads/processes).

The cluster was nowhere stable after 9days, one of the pod crashed and
failed to recover. Below is the error log:
{"type":"log","host":"ignite-cluster-ignite-esoc-2","level":"ERROR","system":"ignite-service","time":"2019-08-16T17:13:34,769Z","logger":"GridCachePartitionExchangeManager","timezone":"UTC","log":"Failed
to process custom exchange task: ClientCacheChangeDummyDiscoveryMessage
[reqId=6b5f6c50-a8c9-4b04-a461-49bfd0112eb0, cachesToClose=null,
startCaches=[BgwService]] java.lang.NullPointerException| at
org.apache.ignite.internal.processors.cache.CacheAffinitySharedManager.processClientCachesChanges(CacheAffinitySharedManager.java:635)|
at
org.apache.ignite.internal.processors.cache.GridCacheProcessor.processCustomExchangeTask(GridCacheProcessor.java:391)|
at
org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.processCustomTask(GridCachePartitionExchangeManager.java:2475)|
at
org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.body0(GridCachePartitionExchangeManager.java:2620)|
at
org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.body(GridCachePartitionExchangeManager.java:2539)|
at
org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120)|
at java.lang.Thread.run(Thread.java:748)"}
{"type":"log","host":"ignite-cluster-ignite-esoc-2","level":"WARN","system":"ignite-service","time":"2019-08-16T17:13:36,724Z","logger":"GridCacheDatabaseSharedManager","timezone":"UTC","log":"Ignite
node stopped in the middle of checkpoint. Will restore memory state and
finish checkpoint on node start."}

The error report file and ignite-config.xml has been attached for your info.

Heap Memory and RAM Configurations are as below on each of the ignite
server container:

Heap Memory: 32gb

RAM: 64GB

Default memory region:

cpu: 4

Persistence volume

wal_storage_size: 10GB

persistence_storage_size: 10GB


Thanks

With Regards

Radha
ignite-config.xml:


http://www.springframework.org/schema/beans;
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance;
 xmlns:util="http://www.springframework.org/schema/util;
 xsi:schemaLocation="
  http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans.xsd
  http://www.springframework.org/schema/util
  http://www.springframework.org/schema/util/spring-util.xsd;>


 
   
   
   
 
 
 
  
  
  
  
  

  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
 

 
 
 
 
 
 
  
   




   
  
 
 


Trans
Info
Msg



 
 
   
   
   
   
   
 
   
 
   
   
 
   
 
   
 
 
   
   
   
   
   
 
   
 
   
   
 
   
 
   
 
 
   
   
   
   
   
 
   
 
   
   
 
   
 
   
 
 
   
   
   
   
 
 






Unable to insert data into table after altering the table

2019-08-02 Thread radha jai
Hi,
 Insertion is failing, after altering the table.
 Followed below steps:

-> CREATE TABLE student (id_ VARCHAR, firstName VARCHAR, lastName VARCHAR,
birthDate TIMESTAMP, height DOUBLE, PRIMARY KEY(id))
-> INSERT INTO student (id, firstName, lastName, birthDate, height) VALUES
(1000, 'huxt', 'abx', CURRENT_TIMESTAMP(), 5.6);
-> ALTER TABLE student DROP COLUMN birthDate;
-> ALTER TABLE student ADD COLUMN birthDate VARCHAR;
-> INSERT INTO student (id, firstName, lastName, birthDate, height) VALUES
(1001, 'luan', 'qwst', '11223', 6.6);

Getting below error:
Error: class org.apache.ignite.binary.BinaryObjectException: Wrong value
has been set
[typeName=SQL_PUBLIC_STUDENT_e910ba3a_3a65_4d53_9265_8c12a9b0bac3,
fieldName=BIRTHDATE, fieldType=Timestamp, assignedValueType=String]
(state=5,code=1)

Issues faced:
-> unable to insert the data after modifying the datatype of the field in a
table.
-> If i do " select * from student;" , I am seeing the old data being
inserted for the birthdate column, after dropping birthdate colmun and
adding the colmn with the same name but different datatype.

Is this a know issue? Or soemthing i am doing wrong.
If it is a know issue please provide the workaround.

Thanks
radha


Unable to get the security context

2019-05-28 Thread radha jai
Hi,
 I have implemented the grid security processor and setting the
securityconext holder in the authenticate function as below,

public class MySecurityProcessor extends GridProcessorAdapter implements
DiscoverySpiNodeAuthenticator, GridSecurityProcessor, IgnitePlugin
{


public SecurityContext authenticate(AuthenticationContext
authenticationContext) throws IgniteCheckedException
{
   SecuritySubject secureSecuritySubject = new SecuritySubject(
authenticationContext.subjectId(),
authenticationContext.subjectType(),
authenticationContext.credentials().getLogin(),
authenticationContext.address()
);
SecurityContext securityContext = new
 MySecurityContext(secureSecuritySubject, accessToken);
SecurityContextHolder.set(securityContext);
return securityContext;
}
public void authorize(String name, SecurityPermission perm, SecurityContext
securityCtx) throws SecurityException {
System.out.println(   SecurityContextHolder.get());
System.out.println( securityCtx );
//do some authorization
 .
}

public boolean isGlobalNodeAuthentication() {
// TODO Auto-generated method stub
return false;
}
..
}
In plugin provider i am creating the component : GridSecurityProcessor.
During Rest api call:
-> when rest call is made authorise function in the security processor is
getting called twice one by the GridRestProcessor and another
GridCacheProcessor, is it mandatory to call that twice? When authorise
function is called by the GridRestProcessor security context is available
but when the GridCacheProcessor is called security context is coming as
null always. Hence the security context is not available in the authorise
function. So i used the SecurityContextHolder.get() to get the security
context.
But for some of the commands SecurityContextHolder.get() is not working
like prepend and append.

-> When cache create and cache destroy is made, authorise function is
receiving the name as NULL. Why is it so? Because based on the name i am
trying to validate wheather the user is allowed to perform this action

During Sqlline access:
-> authorise function receive the security context as NULL always . So used
the SecurityContextHolder.get() , but still getting NULL. How do i get the
context?
   -> While performing create table and drop table, the authorise function
is receiving the name as NULL.

One last question: when the security context is null(during rest call or
sqlline access), can we use the local node context in the authorise
function?


Regards
Radha