Updating a Server Installation
From Multiverse
| Multiverse Servers |
|
Installing • Installing on Linux • Running • Troubleshooting • FAQ • Release Notes • Updating • JMX Monitoring & Mgmt. |
| Infrastructure |
|
Platform Architecture • Registering a World • Proxy Server • Event Handling • World Manager • Voice Server |
| Messaging System |
|
Perception Messaging • Using Extension Messages • Message Marshalling • Multi-subject Messaging • Message Catalog |
| Object Architecture |
|
World Instancing • Server Object Search • Server Regions • Server Markers |
| Scalability and Performance |
| Reference |
|
File Layout • Property File • Logging • API |
This article provides some tips for updating the Multiverse servers.
Contents |
Upgrading to version 1.5
NOTE: If you have previously installed the Multiverse servers, you must read and follow the upgrade instructions in this article.
Using Symbolic Links
Rather than use the default root directory name multiverse, use the original dated version of the tgz file name. That way you can keep multiple versions and easily revert to an old version or examine differences between versions. Then make a symbolic link of the version you wish to run to multiverse.
So for example an ls -l of your installation might look like this:
lrwxrwxrwx 1 Administrator None 21 May 18 19:06 multiverse -> multiverse_2006_05_18/ drwxr-xr-x+ 9 Administrator None 0 May 17 23:40 multiverse_2006_05_03/ drwxr-xr-x+ 9 Administrator None 0 May 19 01:01 multiverse_2006_05_18/
The multiverse_2006_05_03 directory contains the May 3, 2006 release, and the multiverse_2006_05_18 directory contains the May 18,2006 release. multiverse is a symbolic link to the May 18th release.
One Problem
If you set the MV_HOME environment variable (which is entirely optional) you can't use the symbolic link name. So instead of
export MV_HOME="d:\projects\mars\multiverse"
or
export MV_HOME="/cygdrive/d/projects/mars/multiverse"
you must explicitly name the active directory, such as
export MV_HOME="d:\projects\mars\multiverse_2006_03_18"
If you fail to update the path, you will definitely run into some errors or odd behaviours, as the MV_HOME variable is used to create the CLASSPATH variable, which determines what java libraries are used. In fact this is why using the symbolic link name won't work - as when the java code for the Multiverse server is started, it is run under Windows rather than Cygwin, and as such all path names have to be legitimate Windows (MS-DOS) path names. Windows does not recognize the symbolic link. This is not a problem when running the server on a Linux machine.
If you get NoClassDefFoundError errors on running multiverse.sh, this is a sign your CLASSPATH isn't correct.
Merging Changes
When the server files are updated, you will probably have to manually update and merge contents of your bin and config folders. The Cygwin diff command has several useful functions that can help identify what needs to be merged.
Diffing Directories
diff can be used to list the differences between two directories, and so can be used to compare different versions of the Multiverse server. To do this, first install the updated server package into it's own directory - do not overwrite your existing installation.
Next, use the diff command to see what is different between the two directories. Here is an example execution of diff which is comparing the May 3 and May 18 releases. It is recursive (-r), only names of different files are shown (-q), and files ending in .pid and .out are ignored (-x):
Administrator@office /cygdrive/d/projects/mars $ diff -r -q -x '*.pid' -x '*.out' multiverse_2006_05_03 multiverse_2006_05_18
Here is the output results from the above command:
Files multiverse_2006_05_03/bin/multiverse.sh and multiverse_2006_05_18/bin/multiverse.sh differ Only in multiverse_2006_05_18/bin: multiverse.sh~ Files multiverse_2006_05_03/bin/sample_bashrc and multiverse_2006_05_18/bin/sample_bashrc differ Files multiverse_2006_05_03/config/sampleworld/entitymgr_handlers.js and multiverse_2006_05_18/config/sampleworld/entitymgr_handlers.js differ Files multiverse_2006_05_03/config/sampleworld/global_props.js and multiverse_2006_05_18/config/sampleworld/global_props.js differ Only in multiverse_2006_05_18/config/sampleworld: mars_L3_TX_8_4_40m.mvw Only in multiverse_2006_05_18/config/sampleworld: test.mvw Only in multiverse_2006_05_18/config: sampleworld_orig Files multiverse_2006_05_03/dist/lib/mars.jar and multiverse_2006_05_18/dist/lib/mars.jar differ Files multiverse_2006_05_03/dist/lib/multiverse.jar and multiverse_2006_05_18/dist/lib/multiverse.jar differ Files multiverse_2006_05_03/src/multiverse/mars/abilities/EffectAbility.java and multiverse_2006_05_18/src/multiverse/mars/abilities/EffectAbility.java differ Files multiverse_2006_05_03/src/multiverse/mars/core/Cooldown.java and multiverse_2006_05_18/src/multiverse/mars/core/Cooldown.java differ Files multiverse_2006_05_03/src/multiverse/mars/core/MarsAbility.java and multiverse_2006_05_18/src/multiverse/mars/core/MarsAbility.java differ Files multiverse_2006_05_03/src/multiverse/mars/core/MarsEffect.java and multiverse_2006_05_18/src/multiverse/mars/core/MarsEffect.java differ Files multiverse_2006_05_03/src/multiverse/mars/effects/HealEffect.java and multiverse_2006_05_18/src/multiverse/mars/effects/HealEffect.java differ Files multiverse_2006_05_03/src/multiverse/mars/effects/StunEffect.java and multiverse_2006_05_18/src/multiverse/mars/effects/StunEffect.java differ Files multiverse_2006_05_03/src/multiverse/mars/events/AbilityInfoEvent.java and multiverse_2006_05_18/src/multiverse/mars/events/AbilityInfoEvent.java differ Only in multiverse_2006_05_18/src/multiverse/mars/objects: CombatInfo.java Files multiverse_2006_05_03/src/multiverse/mars/objects/MobTemplate.java and multiverse_2006_05_18/src/multiverse/mars/objects/MobTemplate.java differ Files multiverse_2006_05_03/src/multiverse/mars/objects/SpawnGenerator.java and multiverse_2006_05_18/src/multiverse/mars/objects/SpawnGenerator.java differ Only in multiverse_2006_05_18/src/multiverse/mars/plugins: CombatClient.java Only in multiverse_2006_05_18/src/multiverse/mars/plugins: CombatPlugin.java Files multiverse_2006_05_03/src/multiverse/mars/plugins/MarsInventoryPlugin.java and multiverse_2006_05_18/src/multiverse/mars/plugins/MarsInventoryPlugin.java differ
This information can assist you in knowing which files you will possibly need to hand-update to merge changes.
Diffing Files
You can further use the diff command to compare two files. For example here is the output results of using diff on the multiverse.sh file from the above example:
Administrator@office /cygdrive/d/projects/mars $ diff multiverse_2006_05_03/bin/multiverse.sh multiverse_2006_05_18/bin/multiverse.sh 18a19 > MVW_FILENAME="mars_L3_TX_8_4_40m.mvw" 31,34c32,35 < DB_NAME="multiverse" < DB_USER="root" < DB_PASSWORD="foobar" < DB_HOST="localhost" --- > # DB_NAME="multiverse" > # DB_USER="root" > # DB_PASSWORD="foobar" > # DB_HOST="localhost"
