It looks like there has been an issue at exact part there looking at your screenshot. You would need to upload a fresh set of files from your client area, then run the upgrade from /admin/upgrade directly. Its stating there are no applications to upgrade, as its not been unpacked
Asking everyone to clear their cookies often turns out to be a problem. A way to bypass this step would be to change the COOKIE_PREFIX constant too. That way old cookies (with the wrong domain set) won't be checked anymore. 😉
Hello,
why are group promotion rules only being executed when a targeted user visits the forum again?
For example: I have a rule for new people beeing moved to a different group after three days. But this rule is only beeing executed if a user visited the forum again. Then this special user will be moved to the next group.
But if a user visits the forum no more again or only after 10 days he stays in this "three days" group. This is not perfect in the case I want to target this three-days audience.
Could ips please move this promotion process to any cron job?
Use at your own risk
The following will place the member's achievement points total below their group title
Edit forums > front -> topics -> postContainer
After:
{{if $comment->author()->member_id}}
<li data-role='stats' class='ipsMargin_top'>
<ul class="ipsList_reset ipsType_light ipsFlex ipsFlex-ai:center ipsFlex-jc:center ipsGap_row:2 cAuthorPane_stats">
Add:
{{if isset( $comment->author()->achievements_points )}}
<li>
<a href="{url="app=core&module=members&controller=profile&id={$comment->author()->member_id}&do=badges" seoTemplate="profile_badges" seoTitle="$comment->author()->members_seo_name"}" title="{lang="achievements_awards_points" pluralize="$comment->author()->achievements_points"}" data-ipsTooltip class="ipsType_blendLinks">
<i class="fa fa-bathtub"></i> {number="$comment->author()->achievements_points" format="short"}
</a>
</li>
{{endif}}
Result:
I'm having the same problem!! I thought there was a problem with my current MariaDB installation. I had to disable Unread Activity Stream to solve this temporarily.
I am using MariaDB 10.5.9.
Because after the crash, MySQL restart, the site is down during 5 seconds the time that MySQL restarted completely.
Here are the MySQL logs:
Mar 18 15:07:06 sd-135083 mariadbd[16352]: 210318 14:07:06 [ERROR] mysqld got signal 11 ;
Mar 18 15:07:06 sd-135083 mariadbd[16352]: This could be because you hit a bug. It is also possible that this binary
Mar 18 15:07:06 sd-135083 mariadbd[16352]: or one of the libraries it was linked against is corrupt, improperly built,
Mar 18 15:07:06 sd-135083 mariadbd[16352]: or misconfigured. This error can also be caused by malfunctioning hardware.
Mar 18 15:07:06 sd-135083 mariadbd[16352]: To report this bug, see https://mariadb.com/kb/en/reporting-bugs
Mar 18 15:07:06 sd-135083 mariadbd[16352]: We will try our best to scrape up some info that will hopefully help
Mar 18 15:07:06 sd-135083 mariadbd[16352]: diagnose the problem, but since we have already crashed,
Mar 18 15:07:06 sd-135083 mariadbd[16352]: something is definitely wrong and this may fail.
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Server version: 10.5.9-MariaDB-1:10.5.9+maria~buster
Mar 18 15:07:06 sd-135083 mariadbd[16352]: key_buffer_size=134217728
Mar 18 15:07:06 sd-135083 mariadbd[16352]: read_buffer_size=131072
Mar 18 15:07:06 sd-135083 mariadbd[16352]: max_used_connections=16
Mar 18 15:07:06 sd-135083 mariadbd[16352]: max_threads=153
Mar 18 15:07:06 sd-135083 mariadbd[16352]: thread_count=16
Mar 18 15:07:06 sd-135083 mariadbd[16352]: It is possible that mysqld could use up to
Mar 18 15:07:06 sd-135083 mariadbd[16352]: key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads = 467864 K bytes of memory
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Hope that's ok; if not, decrease some variables in the equation.
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Thread pointer: 0x7f24540128c8
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Attempting backtrace. You can use the following information to find out
Mar 18 15:07:06 sd-135083 mariadbd[16352]: where mysqld died. If you see no messages after this, something went
Mar 18 15:07:06 sd-135083 mariadbd[16352]: terribly wrong...
Mar 18 15:07:06 sd-135083 mariadbd[16352]: stack_bottom = 0x7f249b153d58 thread_stack 0x49000
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(my_print_stacktrace)[0x55bba07c815e]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(handle_fatal_signal)[0x55bba0255895]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(__restore_rt)[0x7f28bf618730]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(Type_handler_newdecimal::calc_pack_length(unsigned int) const)[0x55bb9ff0f6b8]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(SEL_ARG::tree_delete(SEL_ARG*))[0x55bba0378ae3]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(SEL_ARG::tree_delete(SEL_ARG*))[0x55bba0379163]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(SEL_IMERGE::and_sel_tree(RANGE_OPT_PARAM*, SEL_TREE*, SEL_IMERGE*))[0x55bba0379519]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(SEL_IMERGE::and_sel_tree(RANGE_OPT_PARAM*, SEL_TREE*, SEL_IMERGE*))[0x55bba03796b4]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(SEL_IMERGE::and_sel_tree(RANGE_OPT_PARAM*, SEL_TREE*, SEL_IMERGE*))[0x55bba037984b]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(Item_cond_and::get_mm_tree(RANGE_OPT_PARAM*, Item**))[0x55bba0379c6a]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(SQL_SELECT::test_quick_select(THD*, Bitmap<64u>, unsigned long long, unsigned long long, bool, bool, bool, bool))[0x55bba037be9f]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(JOIN::optimize_inner())[0x55bba00bf87f]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(JOIN::optimize())[0x55bba00c03b3]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(mysql_select(THD*, TABLE_LIST*, List<Item>&, Item*, unsigned int, st_order*, st_order*, Item*, st_order*, unsigned long long, select_result*, st_select_lex_unit*, st_select_lex*))[0x55bba00c0477]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(handle_select(THD*, LEX*, select_result*, unsigned long))[0x55bba00c0d6e]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(LEX::mark_first_table_as_inserting())[0x55bba005e381]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(mysql_execute_command(THD*))[0x55bba0067496]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(Prepared_statement::execute(String*, bool))[0x55bba007b345]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(Prepared_statement::execute_loop(String*, bool, unsigned char*, unsigned char*))[0x55bba007b502]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(Prepared_statement::execute_bulk_loop(String*, bool, unsigned char*, unsigned char*))[0x55bba007bfc5]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(mysqld_stmt_execute(THD*, char*, unsigned int))[0x55bba007c12b]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(dispatch_command(enum_server_command, THD*, char*, unsigned int, bool, bool))[0x55bba0064151]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(do_command(THD*))[0x55bba0065654]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(do_handle_one_connection(CONNECT*, bool))[0x55bba0155b71]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(handle_one_connection)[0x55bba0155f0d]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(MyCTX_nopad::finish(unsigned char*, unsigned int*))[0x55bba047e74b]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(start_thread)[0x7f28bf60dfa3]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: ??:0(clone)[0x7f28beb034cf]
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Trying to get some variables.
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Some pointers may be invalid and cause the dump to abort.
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Query (0x7f245405b2c8): /*community_xxx_net_production::community_xxx_net::IPS\Content\Search\Mysql\_Query::search:360*/ SELECT main.* FROM `ips_core_search_index` AS `main` WHERE ( ( index_class IN('IPS\\core\\Statuses\\Status','IPS\\core\\Statuses\\Reply') ) OR index_class=? OR ( index_class IN('IPS\\blog\\Entry','IPS\\blog\\Entry\\Comment') ) OR ( index_class IN('IPS\\downloads\\File','IPS\\downloads\\File\\Comment','IPS\\downloads\\File\\Review') ) ) AND ( ( ( index_class IN('IPS\\core\\Statuses\\Status','IPS\\core\\Statuses\\Reply') ) AND index_is_last_comment=1 ) OR ( index_class=? AND index_is_last_comment=1 ) OR ( ( index_class IN('IPS\\blog\\Entry','IPS\\blog\\Entry\\Comment') ) AND index_is_last_comment=1 ) OR ( ( index_class IN('IPS\\downloads\\File','IPS\\downloads\\File\\Comment','IPS\\downloads\\File\\Review') ) AND index_is_last_comment=1 ) ) AND ( ( ( index_class IN('IPS\\forums\\Topic','IPS\\forums\\Topic\\Post') ) AND (( index_container_id=5 AND index_date_updated > 1516188909) OR ( index_container_id=6 AND index_date_updated > 1516188909) OR ( index_container_id=7 AND index_date_updated > 1516188909) OR ( index_container_id=8 AND index_date_updated > 1516188909) OR ( index_container_id=9 AND index_date_updated > 1516188909) OR ( index_container_id=11 AND index_date_updated > 1516188909) OR ( index_container_id=12 AND index_date_updated > 1516188909) OR ( index_container_id=13 AND index_date_updated > 1516478902) OR ( index_container_id=14 AND index_date_updated > 1516188909) OR ( index_container_id=16 AND index_date_updated > 1516188909) OR ( index_container_id=17 AND index_date_updated > 1516188909) OR ( index_container_id=18 AND index_date_updated > 1516188909) OR ( index_container_id=19 AND index_date_updated > 1516188909) OR ( index_container_id=20 AND index_date_updated > 1516188909) OR ( index_date_updated > 1516188909 AND ( index_container_id NOT IN(5,6,7,8,9,11,12,13,14,16,17,18,19,20) ) )) AND ( index_item_id NOT IN (2768,7789,7816,7897,8096,8865,9752,10654,10814,11525,11537,11656,11662,11680,11691,11699,11707,11724,11728,11731,11740,11760,11771,11774,11776,11799,11820,11822,11824,11834,11857,11889,11892,11893,11899,11905,11933,11937,11955,11963,11974,11975,11985,11986,11991,11995,12014,12021,12036,12040,12044,12045,12053,12076,12082,12083,12088,12091,12092,12093,12094,12104,12112,12117,12123,12129,12132,12139,12156,12157,12163,12168,12169,12170,12171,12176,12181,12184,12186,12187,12188,12193,12204,12206,12209,12214,12219,12220,12221,12224,12235,12237,12241,12243,12247,12248,12249,12271,12295,12302,12313,12323,12333,12339,12366,12372,12374,12376,12378,12379,12380,12382,12383,12384,12396,12407,12415,12421,12424,12425,12431,12434,12439,12442,12446,12448,12453,12455,12460,12475,12479,12481,12482,12503,12547,12550,12555,12559,12560,12561,12564,12567,12571,12572,12575,12576,12578,12585,12591,12592,12595,12602,12604,12605,12616,12617,12637,12645,12651,12652,12655,12659,12660,12672,12673,12674,12692,12704,12713,12715,12725,12752,12753,12755,12764,12770,12778,12785,12787,12789,12794,12796,12804,12805,12807,12809,12810,12822,12836,12855,12874,12875,12885,12901,12902,12911,12916,12920,12934,12939,12951,12968,12973,13002,13005,13008,13013,13028,13030,13044,13047,13055,13064,13075,13079,13117,13120,13125,13130,13134,13136,13137,13148,13184,13216,13222,13246,13248,13256,13265,13267,13268,13280,13281,13286,13294,13310,13313,13320,13321,13338,13340,13353,13357,13359,13362,13366,13370,13373,13377,13384,13403,13408,13428,13450,13477,13483,13500,13510,13519,13520,13528,13532,13534,13558,13605,13607,13614,13616,13618,13633,13634,13643,13664,13699,13707,13716,13721,13723,13753,13757,13763,13778,13779,13807,13811,13822,13835) ) ) OR ( ( index_class IN('IPS\\blog\\Entry','IPS\\blog\\Entry\\Comment') ) AND (( index_container_id=1 AND index_date_updated > 1516188909) OR ( index_container_id=3 AND index_date_updated > 1579780331) OR ( index_container_id=5 AND index_date_updated > 1516188909) OR ( index_container_id=6 AND index_date_updated > 1603212814) OR ( index_container_id=7 AND index_date_updated > 1516188909) OR ( index_container_id=8 AND index_date_updated > 1516188909) OR ( index_container_id=9 AND index_date_updated > 1599467191) OR ( index_container_id=10 AND index_date_updated > 1599144351) OR ( index_container_id=11 AND index_date_updated > 1585992440) OR ( index_container_id=14 AND index_date_updated > 1594651097) OR ( index_container_id=17 AND index_date_updated > 1596532823) OR ( index_container_id=27 AND index_date_updated > 1516188909) OR ( index_date_updated > 1516188909 AND ( index_container_id NOT IN(1,3,5,6,7,8,9,10,11,14,17,27) ) )) AND ( index_item_id NOT IN (12,27,53,3,119,14,72,139,138,144,147,35,39,41,46,57,59,61,63,71,73,75,99,25,110) ) ) OR ( ( index_class IN('IPS\\downloads\\File','IPS\\downloads\\File\\Comment','IPS\\downloads\\File\\Review') ) AND (( index_container_id=1 AND index_date_updated > 1516188909) OR ( index_container_id=9 AND index_date_updated > 1516188909) OR ( index_container_id=11 AND index_date_updated > 1516188909) OR ( index_container_id=12 AND index_date_updated > 1516188909) OR ( index_container_id=14 AND index_date_updated > 1516188909) OR ( index_container_id=15 AND index_date_updated > 1516188909) OR ( index_container_id=16 AND index_date_updated > 1516188909) OR ( index_container_id=20 AND index_date_updated > 1516188909) OR ( index_container_id=24 AND index_date_updated > 1516188909) OR ( index_container_id=25 AND index_date_updated > 1516188909) OR ( index_container_id=26 AND index_date_updated > 1516188909) OR ( index_container_id=31 AND index_date_updated > 1613304577) OR ( index_date_updated > 1516188909 AND ( index_container_id NOT IN(1,9,11,12,14,15,16,20,24,25,26,31) ) )) AND ( index_item_id NOT IN (5,8,10,13,45,51,67,76,84,88,89,94,102) ) ) ) AND ( index_permissions = '*' OR ( FIND_IN_SET(3,index_permissions) OR FIND_IN_SET('m19519',index_permissions) ) ) AND index_hidden=? AND index_date_updated>? ORDER BY index_date_commented DESC LIMIT 0,25
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Connection ID (thread ID): 39596
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Status: NOT_KILLED
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Optimizer switch: index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,index_merge_sort_intersection=off,engine_condition_pushdown=off,index_condition_pushdown=on,derived_merge=on,derived_with_keys=on,firstmatch=on,loosescan=on,materialization=on,in_to_exists=on,semijoin=on,partial_match_rowid_merge=on,partial_match_table_scan=on,subquery_cache=on,mrr=off,mrr_cost_based=off,mrr_sort_keys=off,outer_join_with_cache=on,semijoin_with_cache=on,join_cache_incremental=on,join_cache_hashed=on,join_cache_bka=on,optimize_join_buffer_size=on,table_elimination=on,extended_keys=on,exists_to_in=on,orderby_uses_equalities=on,condition_pushdown_for_derived=on,split_materialized=on,condition_pushdown_for_subquery=on,rowid_filter=on,condition_pushdown_from_having=on,not_null_range_scan=off
Mar 18 15:07:06 sd-135083 mariadbd[16352]: The manual page at https://mariadb.com/kb/en/how-to-produce-a-full-stack-trace-for-mysqld/ contains
Mar 18 15:07:06 sd-135083 mariadbd[16352]: information that should help you find out what is causing the crash.
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Writing a core file...
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Working directory at /var/lib/mysql
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Resource Limits:
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Limit Soft Limit Hard Limit Units
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Max cpu time unlimited unlimited seconds
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Max file size unlimited unlimited bytes
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Max data size unlimited unlimited bytes
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Max stack size 8388608 unlimited bytes
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Max core file size 0 unlimited bytes
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Max resident set unlimited unlimited bytes
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Max processes 128375 128375 processes
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Max open files 100000 100000 files
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Max locked memory 65536 65536 bytes
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Max address space unlimited unlimited bytes
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Max file locks unlimited unlimited locks
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Max pending signals 128375 128375 signals
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Max msgqueue size 819200 819200 bytes
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Max nice priority 0 0
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Max realtime priority 0 0
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Max realtime timeout unlimited unlimited us
Mar 18 15:07:06 sd-135083 mariadbd[16352]: Core pattern: core
Mar 18 15:07:06 sd-135083 kernel: [8909720.734022] mariadbd[16506]: segfault at 68 ip 000055bb9ff0f6b8 sp 00007f249b14fc70 error 4 in mariadbd[55bb9ff01000+972000]Mar 18 15:07:06 sd-135083 kernel: [8909720.734026] Code: 05 e8 ec ce 28 00 48 8b 7d 90 48 85 ff 74 0b 80 7d a0 00 75 05 e8 d8 ce 28 00 48 89 df e8 10 0a 96 00 48 c7 43 58 00 00 00 00 <8b> 04 25 68 00 00 00 0f 0b 90 48 83 c2 01 75 10 e8 a3 2b ff ff 48
Mar 18 15:07:06 sd-135083 systemd[1]: mariadb.service: Main process exited, code=killed, status=11/SEGV
Mar 18 15:07:06 sd-135083 systemd[1]: mariadb.service: Failed with result 'signal'.
Mar 18 15:07:11 sd-135083 systemd[1]: mariadb.service: Service RestartSec=5s expired, scheduling restart.
Mar 18 15:07:11 sd-135083 systemd[1]: mariadb.service: Scheduled restart job, restart counter is at 10.
Mar 18 15:07:11 sd-135083 systemd[1]: Stopped MariaDB 10.5.9 database server.
Mar 18 15:07:11 sd-135083 systemd[1]: Starting MariaDB 10.5.9 database server...
[...]
The request causing this crash is huge:
😯
Hello,
With my admin account, MySQL crashes when I want to access to mysite.com/discover/unread:
MySQL server has gone away
2021/03/18 10:59:23 [error] 3683#3683: *8384 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught IPS\Db\Exception: MySQL server has gone away in /srv/www/community.xxx.net/current/web/ips/system/Db/Db.php:638
Stack trace:
#0 /srv/www/community.xxx.net/current/web/ips/system/Db/Db.php(948): IPS\_Db->preparedQuery('/*community_lec...', Array)
#1 /srv/www/community.xxx.net/current/web/ips/system/Session/Store/Database.php(77): IPS\_Db->insert('core_sessions', Array, true)
#2 /srv/www/community.xxx.net/current/web/ips/system/Session/Front.php(369): IPS\Session\Store\_Database->updateSession(Array)
#3 [internal function]: IPS\Session\_Front->write('d1065fa5b910835...', '')
#4 [internal function]: session_write_close()
#5 {main}
thrown in /srv/www/community.xxx.net/current/web/ips/system/Db/Db.php on line 638PHP message: PHP Stack trace:PHP message: PHP 1. IPS\IPS::exceptionHandler($exception = class IPS\Db\Exception { public $query = 'SELECT main.* FROM `ips_core_search_index` AS `main` WHERE ( ( index_class IN(\'IPS\\\\core\\\\Statuses\\\\Status\',\'IPS\\\\core\\\\Statuses\\\\Reply\') ) OR index_class=? OR ( index_class IN(\'IPS\\\\blog\\\\Entry\',\'IPS\\\\blog\\\\Entry\\\\Comment\') ) OR ( index_class IN(\'IPS\\\\downloads\\\\File\',\'IPS\\\\downloads\\\\File\\\\Comment\',\'IPS\\\\downloads\\\\File\\\\Review\') ) OR index_class=? ) AND ( ( ( index_class IN(\'IPS\\\\core\\\\Statuses\\\\Status\',\'IPS\\\\core\\\\Statuses\\\\Reply\') ) AN'; public $binds = [0 => 'IPS\\forums\\Topic\\Post', 1 => 'IPS\\downloads\\File\\PendingVersion', 2 => 'IPS\\forums\\Topic\\Post', 3 => 1616057744]; protected $message = 'MySQL server has gone away'; private ${Exception}string = ''; protected $code = 2006; protected $file = '/srv/www/community.xxx.net/current/web/ips/system/Db/Db.php'; protected $line = 678; private ${Exception}trace = ...PHP message: PHP 2. IPS\IPS::genericExceptionPage($message = 'MySQL server has gone away')
With all others members, there is no problem.
I manage to "solve" problem choosing "I will choose which content to include" + "Topics" instead of "All content".
IPS Support don't assist with server related issues.
I try various mysqld config options without success.
If someone have an idea how to solve this problem!
Thanks 🙂
You do not need blogs if you would like to have only one blog. IPS Blogs are designed for community members. It's a multi-blog solution. If you need a blog written by community owner only or even a group of approved members than you should stay with Pages. See also IPS community blog https://invisioncommunity.com/news/ that is based on Pages and not Blogs.
Pages is surely not so powerful like WordPress out of the box. Pages are still highly customizable. If you outline what you exactly miss in Pages, then it can be extended. I cannot think of anything that cannot be done with Pages.
IPS will never provide WordPress functionality for the blogs, or Magento/Presta Shop features for Commerce. IPS is for building communities first, not writing blogs and not building powerful shop solutions. On the other side BuddyPress or Magento Forum will never reach out to IPS. They are just not designed to be a strong community software.
I love Pages but WP is FAR more seo optimized. I can't compete with my competitions site on SEO. Also, they due AMP via a plugin which gives them extra Google love on mobile search. Pages is also SUPER heavy on page resources (not needed JavaScript and css) which kills the pagespeed scores lowering things further.
Again I use Pages but would suggest IP developers take heed if they ever want to woo people away from WordPress.
I can't reproduce - this looks like a problem with your install, specifically. I expect it's a legacy thing where the template was inserted but stored differently than it would now.
You may be able to fix the issue by removing the plugin completely and re-adding it. Alternatively you may be able to fix the issue by removing the template row from core_theme_templates manually in phpmyadmin.
I just created a new plugin with a widget and a template and can export it as many times as I want without issue.
The method you are describing is fine. Plugins can't really add their own classes cleanly like an application can so unless you want to build an application instead of a plugin, just add your methods to an existing class.