Welcome to the new Gigaspaces XAP forum. To recover your account, please follow these instructions.

Ask Your Question

Multiple Questions

I have been evaluating GigaSpaces for a few days for a new project and have a bunch of questions. I'm hoping to get some replies on this forum in order to finalize my evaluation. I'm including all the questions in one post instead of individually posting and tracking them. I hope that's not confusing/annoying on this forum.

1) Does the config specified on the deployment screen (instances per jvm etc) over-ride the config in pu.xml?

2) How to setup a space that acts just like a reliable + guaranteed JMS queue? If that queue goes down then how to restart it such that it loads back unprocessed events? How to poll this space such that events could be taken in the original sequence?

3) If my PU is taking events from one space and writing results into another space then how to make sure that taking and writing happens in one transaction? The local transaction manager in the given examples seems to be operating on one space.

4). Is direct persistency supported? I’m looking at the following page and it seems to have incomplete information: http://www.gigaspaces.com/wiki/display/XAP66/DirectPersistency

5) Is my PU implementation supposed to be thread-safe or the gigaspaces framework guarantees only one thread per PU instance?

6) How can I monitor a PU on GigaSpace Management Center UI that was started via an integrated container from my local IDE?

7) If I run my PU via integrated container (instead of deploying into a GSC), would it be a valid setup for production environment or is it supposed to be used only for development? Can I start multiple PUs in one integrated container?

8) When a GSC goes down, gigasapces re-arranges the PUs into remaining GSCs. Now if I add another GSC, is there a way to trigger the re-arrangement so that the new GSC could be utilized as well?

9) Should any one use the GSM UI for any production deployments? I don’t think so due to the fact that someone can close the console and lose all the services.

10) What does a “RED cloud icon with ! mark” mean? I saw it on a space when started another GSM.

11) How to setup a primary/backup pair of GSM?

12) What does an active transaction entail in the transactions view? All of my messages have been successfully processed but I still see a local active transaction on the GSM UI.

13) I deployed a EDG (named cdf-poc1-psn-space) with 3 instances and 1 backup each in partitioned mode and specified 1 partition per JVM. I had 4 GSCs running. GigaSpaces allocated 2 primary partitioned to 1 GSC and 1 to another. I was expecting each primary partition on a separate JVM.

14) How to decide between having a clustered space remotely accessed by multiple PUs vs having embedded spaces for each PU? In the later is it possible to have a persisted space and recover/redistribute it among other PUs? I have a feeling that centralized remote space would allow adding more processing units on the fly, while embedded space assumption needs static setup since if a PU (say PU-1) goes down (along with its backup PU-12) then the hashing scheme would start sending subsequent requests to other PUs that don’t have a history of related past data items (that are lost when PU-1 went down). I think maintaining specific subsets of state in embedded spaces won’t be a good idea since the hashing won’t work when PUs are coming up one at a time while there are already unprocessed messages in the queue space.

15) When I change my message class, I get the following error. I was able to get around it by restarting my GSCs. Is there a way to achieve this without restarting GSCs?
Class information held at server: super-classes: , checksum: -105435553 fields: Identifier(isAutoGen=false) {name=accountID, type=java.lang.Integer, index=true, primitive=true, comparable=true}, property: {name=b alance, type=java.lang.Integer, index=false, primitive=true, comparable=true}, property: {name=userName, type=java.lang.String, index=false, primitive =true, comparable=true}, checksum: 332640927
Class information supplied for am.qis.cdf.poc1.OrderAddTxn : super-classes: , checksum: -105435553 fields: Identifier(isAutoGen=false) {name=accountId, type=java.lang.Long, index=true, primitive=true, comparable=true}, property: {name=quan tity, type=java.lang.Double, index=false, primitive=true, comparable=true}, property: {name=securityId, type=java.lang.Long, index=false, primitive=tr ue, comparable=true}, property: {name=userName, type=java.lang.String, index=false, primitive=true, comparable=true}, checksum: -635675274 at com.jspaces.core.JSpaceDirectory.checksumsMatch(JSpaceDirectory.java:684) at com.jspaces.core.JSpaceDirectory.handleEntryType(JSpaceDirectory.java:207) at com.jspaces.core.JSpaceEngine.snapshot(JSpaceEngine.java:1515) at com.jspaces.core.JSpaceImpl.snapshot(JSpaceImpl.java:432) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.gigaspaces.lrmi.LRMIRuntime.invoked(LRMIRuntime.java:381) at com.gigaspaces.lrmi.nio.Pivot.consumeAndHandleRequest(Pivot.java:371) at com.gigaspaces.lrmi.nio.Pivot.handleRequest(Pivot.java:459) at com.gigaspaces.lrmi.nio.Pivot$ChannelEntryTask.run(Pivot.java:149) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) at java.lang.Thread.run(Thread.java:619) Caused by: java.lang.Throwable: Incompatible Class Change Error - an incompatible class change has occurred.

This thread was imported from the previous forum.
For your reference, the original is available here

asked 2009-01-12 13:20:41 -0500

moinqadir gravatar image

updated 2013-08-08 09:52:00 -0500

jaissefsfex gravatar image
edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted

Hi, Moinuddin,

I've already replied to you by email, but I'm putting the answers here as well for the benefit of other forum participants.

1. GigaSpaces does expose the JMS API as well as the space and map APIs. That being said, we would normally recommend using that API only to integrate with existing JMS clients. GigaSpaces is inherently a reliable and guaranteed messaging infrastructure. Our reliable write-behind persistence ensures that messages cannot be lost even though the persistence mechanism is outside the critical path of the business transactions.

We also support FIFO access to objects written to the space.

2. GigaSpaces provides a distributed transaction manager for exactly this situation. However, I would like to discuss your requirements further. Multiple logical spaces are only used in very particular circumstances. Usually a single space cluster is sufficient.

3. If by “direct persistence” you mean what is often called “read-through, write-through” then yes, GigaSpaces does support that. We recommend against it, however, on performance grounds. Our reliable write-behind persistence mechanism is the preferred approach. If you look up “mirror service” on our website you’ll get more information.

4. The number of threads in which a service running in a PU is executed is set in the pu.xml file. Your implementation of those services does not need to be thread safe since only one instance of the service will be running per thread.

5. Only PUs that are running in GSCs can be monitored by the GUI. Our recommended best practice is to use GSCs in production. We should discuss your requirements in this regard.

6. You can have both. The Space Based Architecture (SBA) supported by GigaSpaces allows you to co-locate the business logic, data, and messaging required for an end-to-end business use case in a single processing unit. All behavior takes place in the context of a single PU with a single space node. That node is part of a cluster.

7. Backward compatibility and the kind of rolling update that you are trying to achieve here will be supported in the next release.

8. Watches are a mechanism for you to add application-specific monitoring to the GigaSpaces GUI. This is typically used to monitor load on the system and processing history, but is very open-ended. If you search for “watches” on our website you’ll get more information.

9. We do not recommend using the integrated container in production. Deploying to GSCs allows you to derive the full benefit of the service grid management and monitoring tools.

10. You can do that through an SLA definition.

11. I agree.

12. You are correct. Most of our customers use the gs.{sh,bat} and related scripts to start their environments when the machine boots.

13. That probably was an unreachable space node. That can sometimes happen if the machine is under extremely heavy load. What was your CPU utilization?

14. There is no need to do this explicitly. Just start two GSMs and they’ll work out their roles.

15. Does it disappear quickly? It may just be that the GUI is polling for active transactions every 5 seconds or more.

16. This can be configured by setting the max-per-machine and max-per-vm parameters.



answered 2009-01-14 11:45:38 -0500

patrickm gravatar image
edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2009-01-12 13:20:41 -0500

Seen: 138 times

Last updated: Jan 14 '09