Our storage device filled up and caused errors. Not due to ChestShop, but perhaps a rare error.
NullCase opened this issue ยท 7 comments
Plugin Version
ChestShop's version is: 3.9.3-SNAPSHOT (build 115)
Plugin Config
TURN_OFF_UPDATES: true
#Do you want to turn off the automatic updates of ChestShop?
SHOP_INTERACTION_INTERVAL: 500
#(In 1/1000th of a second) How often can a player use the shop sign?
IGNORE_CREATIVE_MODE: false
#Do you want to allow using shops to people in creative mode?
REVERSE_BUTTONS: false
#If true, people will buy with left-click and sell with right-click.
SHIFT_SELLS_IN_STACKS: true
#If true, people will be able to buy/sell in 64 stacks while holding the crouch button.
SHIFT_ALLOWS: "ALL"
#What can you do by clicking shift with SHIFT_SELLS_IN_STACKS turned on? (ALL/BUY/SELL)
ALLOW_SIGN_CHEST_OPEN: false
#Can shop's chest be opened by owner with right-clicking a shop's sign?
ALLOW_LEFT_CLICK_DESTROYING: true
#If true, when you left-click your own shop sign you won't open chest's inventory, but instead you will start destroying the sign.
REMOVE_EMPTY_SHOPS: false
#If true, if the shop is empty, the sign is destroyed and put into the chest, so the shop isn't usable anymore.
REMOVE_EMPTY_CHESTS: false
#If true, if the REMOVE_EMPTY_SHOPS option is turned on, the chest is also destroyed.
ADMIN_SHOP_NAME: "Diamond Exchange"
#First line of your Admin Shop's sign should look like this:
SERVER_ECONOMY_ACCOUNT: ""
#The economy account which Admin Shops should use and to which all taxes will go
BANK_MEMBERS_ALLOWED: true
#Whether bank account members (if available) can create shops on its behalf
TAX_AMOUNT: 0
#Percent of the price that should go to the server's account. (100 = 100 percent)
BANK_TAX_AMOUNT: 0
#Percent of the price that should go to the server's account when buying from a bank.
SERVER_TAX_AMOUNT: 0
#Percent of the price that should go to the server's account when buying from an Admin Shop.
SHOP_CREATION_PRICE: 0.0
#Amount of money player must pay to create a shop
SHOP_REFUND_PRICE: 0.0
#How much money do you get back when destroying a sign?
BLOCK_SHOPS_WITH_SELL_PRICE_HIGHER_THAN_BUY_PRICE: true
#Should we block shops that sell things for more than they buy? (This prevents newbies from creating shops that would be exploited)
ALLOW_MULTIPLE_SHOPS_AT_ONE_BLOCK: false
#Do you want to allow other players to build a shop on a block where there's one already?
ALLOW_PARTIAL_TRANSACTIONS: true
#Can shops be used even when the seller doesn't have enough items? (The price will be scaled adequatly to the item amount)
ALLOW_AUTO_ITEM_FILL: true
#Can '?' be put in place of item name in order for the sign to be auto-filled?
SHOW_MESSAGE_OUT_OF_STOCK: true
#Do you want to show "Out of stock" messages?
SHOW_TRANSACTION_INFORMATION_CLIENT: true
#Do you want to show "You bought/sold... " messages?
SHOW_TRANSACTION_INFORMATION_OWNER: true
#Do you want to show "Somebody bought/sold... " messages?
LOG_TO_FILE: true
#If true, plugin will log transactions in its own file
LOG_TO_CONSOLE: true
#Do you want ChestShop's messages to show up in console?
LOG_TO_DATABASE: false
#If true, plugin will log transactions in EBean database
RECORD_TIME_TO_LIVE: 600
#How long should transaction information be stored in the database (in seconds, -1 means forever)?
STACK_TO_64: false
#Do you want to stack all items up to 64 item stacks?
USE_BUILT_IN_PROTECTION: true
#Do you want to use built-in protection against chest destruction?
STICK_SIGNS_TO_CHESTS: false
#Do you want to have shop signs "stick" to chests?
TURN_OFF_DEFAULT_PROTECTION_WHEN_PROTECTED_EXTERNALLY: false
#EXPERIMENTAL: Do you want to turn off the default protection when another plugin is protecting the block? (Will leave the chest visually open - CraftBukkit bug!)
TURN_OFF_SIGN_PROTECTION: true
#Do you want to turn off the default sign protection? Warning! Other players will be able to destroy other people's shops!
TURN_OFF_HOPPER_PROTECTION: true
#Do you want to disable the hopper protection, which prevents the hoppers from taking items out of chests?
PROTECT_CHEST_WITH_LWC: false
#Do you want to protect shop chests with LWC?
PROTECT_SIGN_WITH_LWC: false
#Do you want to protect shop signs with LWC?
REMOVE_LWC_PROTECTION_AUTOMATICALLY: true
#Should the chest's LWC protection be removed once the shop sign is destroyed?
GENERATE_STATISTICS_PAGE: false
#If true, plugin will generate shop statistics webpage.
STATISTICS_PAGE_PATH: "plugins/ChestShop/website.html"
#Where should your generated website be saved?
STATISTICS_PAGE_GENERATION_INTERVAL: 60
#How often should the website be generated?
WORLDGUARD_INTEGRATION: false
#Do you want to only let people build inside regions?
WORLDGUARD_USE_FLAG: false
#Do you want to only let poeple build inside region flagged by doing /region regionName flag chestshop allow?
WORLDGUARD_USE_PROTECTION: false
#Do you want ChestShop to respect WorldGuard's chest protection?
HEROES_EXP: 100.0
#How much Heroes exp should people get for creating a ChestShop?
AUTHME_HOOK: false
#Do you want to deny shop access to unlogged users?
AUTHME_ALLOW_UNREGISTERED: false
#Do you want to allow shop access to unregistered users? (Example: registration is optional)
CACHE_SIZE: 1000
#How large should the internal uuid and name caches be?
SHOW_MESSAGE_FULL_SHOP: true
#Do you want to show "Full shop" messages?
CSTOGGLE_TOGGLES_OUT_OF_STOCK: false
#Can players hide the "Out of stock" messages with /cstoggle?
CSTOGGLE_TOGGLES_FULL_SHOP: false
#Can players hide the "Full shop" messages with /cstoggle?
SHOWITEM_MESSAGE: true
#Add icons and make item names hoverable in transaction messages when ShowItem is installed?
#A list of worlds in which to remove empty shops with the previous config. Case sensitive. An empty list means all worlds.
REMOVE_EMPTY_WORLDS:
- "world11234"
- "world21234"
#How many decimal places are allowed at a maximum for prices?
PRICE_PRECISION: 2
#What containers are allowed to hold a shop? (Only blocks with inventories work!)
SHOP_CONTAINERS:
- "CHEST"
- "TRAPPED_CHEST"
#Do you want to allow using shops to people who have access to it due to their permissions? (owners are always ignored)
IGNORE_ACCESS_PERMS: true
Server Version
This server is running Paper version git-Paper-561 (MC: 1.13.2) (Implementing API version 1.13.2-R0.1-SNAPSHOT)
Server Log
2019/03/19 22:05:45 Error while updating account com.Acrobot.ChestShop.Database.Account@6ef79980
What is happening?
Our server's storage device filled up. It caused some interesting problems. This is what appeared in the ChestShop.log file.
What did you expect to happen?
Expected many server problems, exactly what did happen.
Please provide any additional info below
Storage device was full. The error above appeared 6 times in the log file. It seems like 6 transactions were not properly saved but I don't know. Just sharing this because it might be uncommon.
This was caused by our storage device filling up two days ago.
The full error message would be more useful but such errors are kinda expected when there is no place to store anything. Chestshop doesn't really do any transaction storage/logging so that probably went through without issues. The only thing that would fail in such a case are the username to uuid mapping and item meta storage, whether or not that influences transactions in an exploitable way I can't really say without the full error but I kinda doubt it so unless it would be exploitable I don't think it's worth the hassle to add support for running on a system with zero storage. ;D
Expected error. Not worth the support.
Like being a tax adviser for people being attacked by sharks.
Well theoretically it would've been logged. I'm assuming that you got a lot of errors though and the logger tends to minimize stacktraces when there are too many too quickly. Usually it will log the full one the first time it occurs though so try finding when this particular one first happened in your log and if we are lucky it logged the full one.
Otherwise I'm going to take a look at the code when I find the time to see if there would be obvious issues in such a case, probably not before next week though seeing as this isn't really a common issue xD
[16:49:21] [Craft Scheduler Thread - 60201/WARN]: [ChestShop] Error while updating account com.Acrobot.ChestShop.Database.Account@3f222225:
--
java.sql.SQLException: Unable to run update stmt on object com.Acrobot.ChestShop.Database.Account@3f222225: UPDATE `accounts` SET `name` = ?, `uuid` = ?, `lastSeen` = ? WHERE `shortName` = ?
at com.Acrobot.ChestShop.ORMlite.misc.SqlExceptionUtil.create(SqlExceptionUtil.java:25) ~[?:?]
at com.Acrobot.ChestShop.ORMlite.stmt.mapped.MappedUpdate.update(MappedUpdate.java:129) ~[?:?]
at com.Acrobot.ChestShop.ORMlite.stmt.StatementExecutor.update(StatementExecutor.java:472) ~[?:?]
at com.Acrobot.ChestShop.ORMlite.dao.BaseDaoImpl.update(BaseDaoImpl.java:410) ~[?:?]
at com.Acrobot.ChestShop.ORMlite.dao.BaseDaoImpl.createOrUpdate(BaseDaoImpl.java:391) ~[?:?]
at com.Acrobot.ChestShop.UUIDs.NameManager.storeUsername(NameManager.java:265) ~[?:?]
at com.Acrobot.ChestShop.Listeners.Player.PlayerConnect$1.run(PlayerConnect.java:32) ~[?:?]
at org.bukkit.craftbukkit.v1_13_R2.scheduler.CraftTask.run(CraftTask.java:82) ~[patched_1.13.2.jar:git-Paper-561]
at org.bukkit.craftbukkit.v1_13_R2.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:52) ~[patched_1.13.2.jar:git-Paper-561]
at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[patched_1.13.2.jar:git-Paper-561]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_181]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_181]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]
Caused by: org.sqlite.SQLiteException: [SQLITE_FULL] Insertion failed because database is full (database or disk is full)
at org.sqlite.core.DB.newSQLException(DB.java:941) ~[patched_1.13.2.jar:git-Paper-561]
at org.sqlite.core.DB.newSQLException(DB.java:953) ~[patched_1.13.2.jar:git-Paper-561]
at org.sqlite.core.DB.execute(DB.java:857) ~[patched_1.13.2.jar:git-Paper-561]
at org.sqlite.core.DB.executeUpdate(DB.java:895) ~[patched_1.13.2.jar:git-Paper-561]
at org.sqlite.jdbc3.JDBC3PreparedStatement.executeUpdate(JDBC3PreparedStatement.java:102) ~[patched_1.13.2.jar:git-Paper-561]
at com.Acrobot.ChestShop.ORMlite.jdbc.JdbcDatabaseConnection.update(JdbcDatabaseConnection.java:294) ~[?:?]
at com.Acrobot.ChestShop.ORMlite.jdbc.JdbcDatabaseConnection.update(JdbcDatabaseConnection.java:217) ~[?:?]
at com.Acrobot.ChestShop.ORMlite.stmt.mapped.MappedUpdate.update(MappedUpdate.java:101) ~[?:?]
... 11 more
Yeah that's basically just the updating of the name on login in case the user changed it. Don't think that would ever cause any issues as the names on the signs aren't affected by name changes at all and even if they would just not work. Not sure if the updated name is even used anywhere anymore.